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

8.6 KiB
Raw Permalink Blame History

AI多语言资讯系统 - 部署指南

PostgreSQL Supabase License

📋 项目概述

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 部署

  1. 登录 Supabase Dashboard
  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 数据库用户名

环境变量配置

# 设置数据库连接
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索引支持高效的文本搜索
  • 复合索引: 针对常用查询组合优化
  • 分区表: 大数据量时支持表分区
  • 连接池: 建议使用连接池管理数据库连接

🤝 贡献指南

  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 文件了解详情。

🙏 致谢

  • PostgreSQL 社区
  • Supabase 团队
  • 所有贡献者

最后更新: 2025年1月27日
版本: v1.0.0
状态: 生产就绪