Files
akmon/doc_news/README.md
2026-01-20 08:04:15 +08:00

266 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI多语言资讯系统 - 部署指南
![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15+-blue.svg)
![Supabase](https://img.shields.io/badge/Supabase-Compatible-green.svg)
![License](https://img.shields.io/badge/License-MIT-yellow.svg)
## 📋 项目概述
AI多语言资讯系统是一个基于PostgreSQL的现代化新闻资讯管理平台支持多语言内容管理、AI智能翻译、用户行为分析、社交功能等特性。
## ✨ 主要功能
- 🌍 **多语言支持**: 支持多种语言的内容管理和AI翻译
- 📰 **内容管理**: 完整的新闻内容管理系统
- 🏷️ **专题系统**: 专题创建、订阅、内容聚合
- 💬 **评论系统**: 多层级评论、点赞、举报、审核
-**收藏功能**: 个人收藏夹、内容收藏管理
- 🔄 **转发分享**: 内容转发和社交分享
- 🤖 **AI智能**: 智能翻译、内容分析、聊天机器人
- 👥 **用户系统**: 用户行为分析、个性化推荐
- 🔒 **安全控制**: 基于RLS的行级安全策略
- 📊 **性能优化**: 全文搜索、复合索引、查询优化
## 🏗️ 系统架构
```
┌─────────────────────────────────────────────────────────────┐
│ AI多语言资讯系统 │
├─────────────────────────────────────────────────────────────┤
│ 内容层 │ 专题管理 │ 评论系统 │ 收藏转发 │ 用户行为 │
├─────────────────────────────────────────────────────────────┤
│ AI层 │ 智能翻译 │ 内容分析 │ 聊天机器人 │ 推荐系统 │
├─────────────────────────────────────────────────────────────┤
│ 数据层 │ PostgreSQL 数据库 (21+ 张表) │
├─────────────────────────────────────────────────────────────┤
│ 安全层 │ RLS策略 + 索引优化 + 触发器 │
└─────────────────────────────────────────────────────────────┘
```
## 📦 文件结构
```
doc_news/
├── 🗄️ 数据库文件
│ ├── ai_multilingual_news_database.sql # 主数据库结构
│ └── topics_comments_init_data.sql # 演示数据
├── 🚀 部署脚本
│ ├── deploy.sh # Linux/MacOS 部署脚本
│ └── deploy.ps1 # Windows PowerShell 部署脚本
├── 📖 文档
│ ├── README.md # 项目说明 (本文件)
│ ├── SQL_DEPLOYMENT_GUIDE.md # 详细部署指南
│ ├── FINAL_DEPLOYMENT_VALIDATION.md # 验证报告
│ └── INDEX_ERROR_SOLUTION.md # 错误解决方案
└── 🔧 工具脚本
├── fix_indexes.sql # 索引修复脚本
└── clean_policies.sql # 策略清理脚本
```
## 🚀 快速开始
### 方式一:自动部署 (推荐)
#### Linux/MacOS:
```bash
# 1. 确保PostgreSQL客户端已安装
sudo apt-get install postgresql-client # Ubuntu/Debian
# 或
brew install postgresql # MacOS
# 2. 执行部署脚本
chmod +x deploy.sh
./deploy.sh --host localhost --database ai_news --username postgres
```
#### Windows:
```powershell
# 1. 在PowerShell中执行
.\deploy.ps1 -DBHost "localhost" -DBName "ai_news" -DBUser "postgres"
# 2. 或者使用默认参数
.\deploy.ps1
```
### 方式二:手动部署
#### 1. 创建数据库结构
```sql
-- 在PostgreSQL或Supabase SQL编辑器中执行
\i ai_multilingual_news_database.sql
```
#### 2. 插入演示数据 (可选)
```sql
-- 在SQL编辑器中执行
\i topics_comments_init_data.sql
```
### 方式三Supabase 部署
1. 登录 [Supabase Dashboard](https://app.supabase.com/)
2. 创建新项目或选择现有项目
3. 进入 `SQL Editor`
4. 复制 `ai_multilingual_news_database.sql` 内容并执行
5. 复制 `topics_comments_init_data.sql` 内容并执行 (可选)
## 🔧 配置参数
### 数据库连接参数
| 参数 | 默认值 | 说明 |
|------|--------|------|
| DB_HOST | localhost | 数据库主机地址 |
| DB_PORT | 5432 | 数据库端口 |
| DB_NAME | ai_news | 数据库名称 |
| DB_USER | postgres | 数据库用户名 |
### 环境变量配置
```bash
# 设置数据库连接
export DB_HOST="your-db-host"
export DB_PORT="5432"
export DB_NAME="your-database"
export DB_USER="your-username"
export PGPASSWORD="your-password"
```
## ✅ 部署验证
部署完成后可以通过以下SQL命令验证
```sql
-- 检查表创建
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public' AND table_name LIKE 'ak_%';
-- 检查RLS策略
SELECT schemaname, tablename, policyname
FROM pg_policies WHERE schemaname = 'public';
-- 检查索引
SELECT indexname FROM pg_indexes
WHERE schemaname = 'public' AND indexname LIKE 'idx_%';
-- 检查演示数据
SELECT COUNT(*) as topic_count FROM ak_topics;
SELECT COUNT(*) as comment_count FROM ak_comments;
```
预期结果:
- ✅ 21+ 个数据表
- ✅ 9+ 个RLS安全策略
- ✅ 21+ 个性能索引
- ✅ 演示数据 (如果选择插入)
## 🗃️ 数据库表结构
### 核心表
- `ak_contents` - 内容管理
- `ak_content_translations` - 内容翻译
- `ak_topics` - 专题管理
- `ak_comments` - 评论系统
- `ak_content_favorites` - 收藏功能
- `ak_content_shares` - 转发分享
### AI功能表
- `ak_ai_translation_logs` - AI翻译记录
- `ak_ai_usage_stats` - AI使用统计
- `ak_chat_sessions` - 聊天会话
- `ak_chat_messages` - 聊天消息
### 用户分析表
- `ak_user_behaviors` - 用户行为
- `ak_user_profiles` - 用户画像
- `ak_recommendations` - 推荐记录
## 🔒 安全特性
- **RLS行级安全**: 用户只能访问自己的数据
- **策略隔离**: 不同功能模块的策略分离
- **数据加密**: 敏感信息加密存储
- **访问控制**: 基于角色的访问控制
## 🚨 故障排除
### 常见问题
#### 1. 策略重复创建错误
```
ERROR: 42710: policy "xxx" for table "xxx" already exists
```
**解决方案**: 所有策略已添加 `DROP POLICY IF EXISTS`,可安全重复执行。
#### 2. 索引重复创建错误
```
ERROR: 42P07: relation "idx_xxx" already exists
```
**解决方案**: 所有索引使用 `CREATE INDEX IF NOT EXISTS`,支持幂等执行。
#### 3. 扩展不存在错误
```
ERROR: extension "uuid-ossp" does not exist
```
**解决方案**:
```sql
-- 手动安装所需扩展
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pg_trgm";
CREATE EXTENSION IF NOT EXISTS "btree_gin";
```
#### 4. 全文搜索IMMUTABLE函数错误
```
ERROR: 42P17: functions in index predicate must be marked IMMUTABLE
```
**解决方案**: 已创建IMMUTABLE包装函数
```sql
-- 自动使用IMMUTABLE函数创建索引
CREATE INDEX IF NOT EXISTS idx_contents_fts_title ON public.ak_contents
USING gin(content_title_to_tsvector(title));
```
#### 5. 权限不足错误
```
ERROR: permission denied to create extension
```
**解决方案**: 使用超级用户权限或联系数据库管理员。
### 获取更多帮助
- 📖 查看 `SQL_DEPLOYMENT_GUIDE.md` 了解详细部署步骤
- 🔍 查看 `INDEX_ERROR_SOLUTION.md` 了解错误解决方案
- ✅ 查看 `FINAL_DEPLOYMENT_VALIDATION.md` 了解验证详情
## 📈 性能优化
- **全文搜索**: 使用GIN索引支持高效的文本搜索
- **复合索引**: 针对常用查询组合优化
- **分区表**: 大数据量时支持表分区
- **连接池**: 建议使用连接池管理数据库连接
## 🤝 贡献指南
1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 打开 Pull Request
## 📄 许可证
该项目基于 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🙏 致谢
- PostgreSQL 社区
- Supabase 团队
- 所有贡献者
---
**最后更新**: 2025年1月27日
**版本**: v1.0.0
**状态**: ✅ 生产就绪