Files
ai-learning-platform/docs/技术架构设计.md
T

13 KiB
Raw Blame History

宇之然 AI - 技术架构设计文档

版本:v1.0
日期:2026-05-08


1. 系统总体架构

1.1 架构分层

┌─────────────────────────────────────────────────────────────────────┐
│                        客户端层                                      │
│  ┌────────────┐  ┌──────────────┐  ┌────────────┐                 │
│  │ Next.js    │  │ Uni-app      │  │ 微信小程序  │                 │
│  │ 官网 (SSR) │  │ App (跨平台) │  │            │                 │
│  └────────────┘  └──────────────┘  └────────────┘                 │
└──────────────────────────┬──────────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────────┐
│                     API 网关层                                      │
│          Nginx / 阿里云 SLB → API Gateway                           │
│          限流 / 鉴权 / 日志 / 路由转发                              │
└──────────────────────────┬──────────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────────┐
│                       业务服务层                                     │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐              │
│  │ 用户服务  │ │ 内容服务  │ │ 课程服务  │ │ 沙箱服务  │             │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘              │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐              │
│  │ 社区服务  │ │ 支付服务  │ │ 搜索服务  │ │ 审核服务  │             │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘              │
└──────────────────────────┬──────────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────────┐
│                      AI 网关层                                      │
│  统一 API → 多模型路由 → 负载均衡 → 结果缓存                       │
│  通义千问 │ 文心一言 │ GLM │ DeepSeek │ Kimi ...                   │
└──────────────────────────┬──────────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────────┐
│                       数据层                                        │
│  MySQL 8.0  │  Redis 7  │  ES 8.x  │  OSS  │  RocketMQ            │
│  (主从/读写分离) (缓存/会话) (搜索) (存储)  (消息队列)              │
└─────────────────────────────────────────────────────────────────────┘

2. 技术选型详述

2.1 前端(官网)

技术 版本 说明
Next.js 14+ React 框架,SSR/SSG 支持
TypeScript 5.x 类型安全
TailwindCSS 3.x 原子化 CSS
Shadcn/ui latest UI 组件库
React Query 5.x 数据请求管理
Zustand latest 状态管理

2.2 移动端(App / 小程序)

技术 说明
Uni-app / Taro 跨端框架
Vue 3 / React 视框架而定
Pinia / Zustand 状态管理
uView / NutUI 移动端组件库

推荐 Uni-app + Vue 3,对微信小程序适配最成熟。

2.3 后端

技术 版本 说明
Node.js 20 LTS 运行时
NestJS 10.x Node.js 后端框架
Prisma 5.x ORM
JWT - 鉴权
Zod latest 数据校验

或备选方案:

技术 说明
Go + Gin / Fiber 高性能,适合 AI 网关
Python + FastAPI 适合 AI 数据处理任务

建议:核心业务用 NestJS,AI 网关用 Go。

2.4 数据库

组件 用途 部署
MySQL 8.0 业务主库(用户/课程/订单等) 阿里云 RDS
Redis 7 缓存/会话/限流计数器 阿里云 Redis
Elasticsearch 8.x 内容搜索 阿里云 ES
阿里云 OSS 图片/视频/文件存储 阿里云 OSS
RocketMQ 异步任务/消息通知 阿里云 RocketMQ

2.5 AI 网关

用户请求 → 网关层
  ├── 请求校验 → 内容安全审核
  ├── 模型路由(基于用户配置/成本/负载)
  │   ├── 通义千问 (qwen-max)
  │   ├── 文心一言 (ERNIE-4.0)
  │   ├── GLM-4
  │   ├── DeepSeek-V3
  │   └── Kimi (moonshot-v1)
  ├── 结果缓存(Redis,相同 prompt 命中缓存)
  ├── 流式响应处理
  └── 计费/用量统计

2.6 内容安全

服务 用途
阿里云内容安全 文本/图片鉴黄、涉政、违禁检测
腾讯云天御 UGC 内容安全审核
自定义敏感词库 行业特定敏感词过滤

3. 数据库设计概要

3.1 核心表结构

users                  — 用户表
├── id, phone, email, password_hash, avatar, status, created_at
├── user_profiles      — 用户扩展信息
└── user_learn_records — 学习记录

courses                — 课程表
├── id, title, description, cover, category, price, status
├── chapters           — 章节表
├── lessons            — 课时表
└── lesson_progress    — 学习进度

prompts                — 提示词表
├── id, title, content, category, tags, author_id, status
├── prompt_favorites   — 收藏
└── prompt_comments    — 评论

tools                  — AI 工具表
├── id, name, description, url, category, icon, status
└── tool_reviews       — 评价

models                 — 模型百科表
├── id, name, provider, params, features, benchmark, status
└── model_comparisons  — 对比评测

sandbox_sessions       — AI 沙箱会话表
├── id, user_id, model, messages, tokens, duration, created_at
└── sandbox_quota      — 用户沙箱额度

orders                 — 订单表
├── id, user_id, amount, plan_type, status, pay_channel, paid_at
└── subscriptions      — 订阅记录

contents               — 内容(文章/资讯)
├── id, title, content, category, tags, author, status, view_count
└── content_comments   — 评论

admin_users            — 管理员表
├── id, username, password_hash, role, permission, last_login
└── admin_logs         — 操作日志

3.2 数据库设计原则

  • 软删除:所有业务表增加 deleted_at 字段
  • 审计字段created_atupdated_at 必备
  • 索引策略:覆盖常用查询场景,避免全表扫描
  • 分表策略sandbox_sessions 按用户 ID 分表
  • 读写分离:主库写入,从库查询

4. API 设计规范

4.1 命名规范

GET    /api/v1/courses          — 课程列表
GET    /api/v1/courses/:id      — 课程详情
POST   /api/v1/courses          — 创建课程(管理端)
PUT    /api/v1/courses/:id      — 更新课程(管理端)
DELETE /api/v1/courses/:id      — 删除课程(管理端)

POST   /api/v1/auth/login       — 登录
POST   /api/v1/auth/register    — 注册
POST   /api/v1/auth/refresh     — 刷新 token

POST   /api/v1/sandbox/chat     — AI 沙箱对话
GET    /api/v1/sandbox/history  — 对话历史
GET    /api/v1/sandbox/quota    — 沙箱额度查询

POST   /api/v1/orders/create    — 创建订单
GET    /api/v1/orders/:id       — 订单查询
POST   /api/v1/orders/callback  — 支付回调

4.2 通用响应格式

{
  "code": 0,
  "message": "success",
  "data": {},
  "meta": {
    "page": 1,
    "pageSize": 20,
    "total": 100
  }
}

4.3 鉴权方案

  • JWT TokenAccess Token 2h + Refresh Token 7d
  • 管理后台:Session + Cookie
  • API 签名:管理端 API 需签名校验

5. 部署架构

                    ┌─────────────┐
                    │   DNS       │
                    │  (阿里云 DNS)│
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │  CDN        │
                    │ (静态资源)   │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │  SLB        │
                    │ (负载均衡)   │
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
       ┌──────▼──┐  ┌─────▼────┐ ┌────▼────┐
       │ Next.js │  │ NestJS   │ │ Admin   │
       │ 官网    │  │ API 服务  │ │ Panel   │
       └─────────┘  └─────┬────┘ └─────────┘
                          │
              ┌───────────┼───────────┐
              │           │           │
       ┌──────▼──┐  ┌────▼───┐  ┌───▼────┐
       │ MySQL   │  │ Redis  │  │   ES   │
       │ RDS     │  │        │  │        │
       └─────────┘  └────────┘  └────────┘

5.1 环境规划

环境 用途 配置
开发 (dev) 本地开发 个人电脑 / Docker Compose
测试 (staging) 联调测试 阿里云 ECS 2C4G
生产 (production) 正式运营 阿里云 ECS 4C8G × 2 + RDS 2C4G

5.2 CI/CD 流程

Git Push → GitHub Actions
  ├── Lint & Type Check
  ├── Unit Test
  ├── Build
  └── Deploy to 阿里云
      ├── 构建 Docker 镜像
      ├── Push 到阿里云 CR
      └── 滚动更新 ECS/Pod

6. 性能与安全

6.1 性能目标

指标 目标
API 响应时间 (P95) < 200ms
首屏加载时间 < 1.5s
AI 对话首 Token 延迟 < 1s
并发用户 支持 1000+ 同时在线
系统可用性 99.9%

6.2 安全措施

  • HTTPS 全站加密
  • API 限流(单用户 100次/分钟)
  • SQL 注入防护(Prisma ORM 参数化查询)
  • XSS/CSRF 防护
  • 密码 bcrypt 加密
  • 敏感信息脱敏
  • 定期安全扫描 + 渗透测试

7. 技术债务与演进路线

阶段 任务
MVP 单体应用快速验证
V2 服务化拆分
V3 AI 网关独立部署
V4 引入 K8s 容器编排
V5 多数据中心容灾