AI多语言资讯系统 - 部署指南
📋 项目概述
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:
# 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:
# 1. 在PowerShell中执行
.\deploy.ps1 -DBHost "localhost" -DBName "ai_news" -DBUser "postgres"
# 2. 或者使用默认参数
.\deploy.ps1
方式二:手动部署
1. 创建数据库结构
-- 在PostgreSQL或Supabase SQL编辑器中执行
\i ai_multilingual_news_database.sql
2. 插入演示数据 (可选)
-- 在SQL编辑器中执行
\i topics_comments_init_data.sql
方式三:Supabase 部署
- 登录 Supabase Dashboard
- 创建新项目或选择现有项目
- 进入
SQL Editor - 复制
ai_multilingual_news_database.sql内容并执行 - 复制
topics_comments_init_data.sql内容并执行 (可选)
🔧 配置参数
数据库连接参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| DB_HOST | localhost | 数据库主机地址 |
| DB_PORT | 5432 | 数据库端口 |
| DB_NAME | ai_news | 数据库名称 |
| DB_USER | postgres | 数据库用户名 |
环境变量配置
# 设置数据库连接
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命令验证:
-- 检查表创建
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
解决方案:
-- 手动安装所需扩展
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包装函数
-- 自动使用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索引支持高效的文本搜索
- 复合索引: 针对常用查询组合优化
- 分区表: 大数据量时支持表分区
- 连接池: 建议使用连接池管理数据库连接
🤝 贡献指南
- Fork 项目
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开 Pull Request
📄 许可证
该项目基于 MIT 许可证 - 查看 LICENSE 文件了解详情。
🙏 致谢
- PostgreSQL 社区
- Supabase 团队
- 所有贡献者
最后更新: 2025年1月27日
版本: v1.0.0
状态: ✅ 生产就绪