369 lines
6.3 KiB
Markdown
Executable File
369 lines
6.3 KiB
Markdown
Executable File
# 04_技术架构设计_模块拆分
|
||
|
||
## 1. 文档目标
|
||
|
||
本文档定义系统 B 的技术架构、模块拆分、服务边界、基础设施和后续与系统 A 合并的预留方式。
|
||
|
||
## 2. 总体架构
|
||
|
||
```text
|
||
uni-app 用户端
|
||
↓
|
||
NestJS API 服务
|
||
↓
|
||
MySQL / Redis / MinIO
|
||
↓
|
||
BullMQ 任务队列
|
||
↓
|
||
AI Provider Workers / FFmpeg Worker / Python Worker
|
||
↓
|
||
成品资源存储与交付
|
||
|
||
Geeker-Admin 后台
|
||
↓
|
||
NestJS Admin API
|
||
↓
|
||
模板、项目、订单、任务、Provider、日志管理
|
||
```
|
||
|
||
## 3. 技术栈
|
||
|
||
| 层级 | 技术 |
|
||
|---|---|
|
||
| 用户端 | uni-app |
|
||
| 后台端 | Geeker-Admin |
|
||
| 后端 | Node.js + NestJS |
|
||
| 数据库 | MySQL 8 |
|
||
| 队列 | Redis + BullMQ |
|
||
| 对象存储 | MinIO,本地优先,后续可换 OSS/COS/S3 |
|
||
| 视频合成 | FFmpeg |
|
||
| AI 辅助 | Python Worker 可选 |
|
||
| 进程管理 | PM2 或 systemd |
|
||
| 反向代理 | Nginx |
|
||
| 部署 | AlmaLinux / Ubuntu 均可,推荐 Docker 化 |
|
||
|
||
## 4. 后端模块拆分
|
||
|
||
### 4.1 AuthModule
|
||
|
||
负责:
|
||
|
||
- 手机号验证码登录
|
||
- 微信授权登录
|
||
- JWT 令牌
|
||
- 后台管理员登录
|
||
- 权限校验
|
||
|
||
### 4.2 UserModule
|
||
|
||
负责:
|
||
|
||
- 用户信息
|
||
- 用户状态
|
||
- 用户项目列表
|
||
- 用户订单列表
|
||
- 用户隐私设置
|
||
|
||
### 4.3 ProjectModule
|
||
|
||
负责:
|
||
|
||
- 创建项目
|
||
- 项目状态流转
|
||
- 项目详情
|
||
- 项目进度
|
||
- 项目归档
|
||
|
||
### 4.4 TemplateModule
|
||
|
||
负责:
|
||
|
||
- 人生主题
|
||
- 套餐
|
||
- 风格
|
||
- 世界观
|
||
- 场景
|
||
- 镜头
|
||
- 文案模板
|
||
- 音乐模板
|
||
|
||
### 4.5 AssetModule
|
||
|
||
负责:
|
||
|
||
- 文件上传
|
||
- 图片/视频/音频资源管理
|
||
- 缩略图
|
||
- 下载链接
|
||
- 水印资源
|
||
- 素材删除
|
||
|
||
### 4.6 PhotoModule
|
||
|
||
负责:
|
||
|
||
- 照片上传规则
|
||
- 照片质检任务创建
|
||
- 人物角色归属
|
||
- 人物档案创建
|
||
|
||
### 4.7 AIProviderModule
|
||
|
||
负责:
|
||
|
||
- TextProvider
|
||
- ImageProvider
|
||
- VideoProvider
|
||
- VoiceProvider
|
||
- ModerationProvider
|
||
- FaceCheckProvider
|
||
- QualityCheckProvider
|
||
|
||
业务代码调用统一接口,不直接调用具体模型。
|
||
|
||
### 4.8 WorkflowModule
|
||
|
||
负责编排:
|
||
|
||
- 创作方案生成
|
||
- 预览图生成
|
||
- 正式图生成
|
||
- 音频/字幕生成
|
||
- 视频合成
|
||
- 最终质检
|
||
|
||
### 4.9 QueueModule
|
||
|
||
负责:
|
||
|
||
- BullMQ 队列注册
|
||
- 任务创建
|
||
- 任务重试
|
||
- 任务取消
|
||
- 任务进度更新
|
||
|
||
### 4.10 OrderModule
|
||
|
||
负责:
|
||
|
||
- 订单创建
|
||
- 支付状态
|
||
- 额度冻结
|
||
- 额度扣减
|
||
- 退款记录
|
||
|
||
### 4.11 RevisionModule
|
||
|
||
负责:
|
||
|
||
- 修改申请
|
||
- 修改次数校验
|
||
- 修改任务创建
|
||
- 人工处理记录
|
||
|
||
### 4.12 CaseModule
|
||
|
||
负责:
|
||
|
||
- 首页案例
|
||
- 案例上架/下架
|
||
- 同款制作
|
||
- 公开授权校验
|
||
|
||
### 4.13 AdminModule
|
||
|
||
负责后台管理接口,包括:
|
||
|
||
- 用户管理
|
||
- 项目管理
|
||
- 订单管理
|
||
- 模板管理
|
||
- 任务管理
|
||
- Provider 管理
|
||
- 日志管理
|
||
|
||
### 4.14 ComplianceModule
|
||
|
||
负责:
|
||
|
||
- 授权记录
|
||
- 隐私协议确认
|
||
- 未成年人授权确认
|
||
- 内容审核
|
||
- 用户删除申请
|
||
|
||
### 4.15 LogModule
|
||
|
||
负责:
|
||
|
||
- 操作日志
|
||
- 登录日志
|
||
- AI 调用日志
|
||
- 成本日志
|
||
- 错误日志
|
||
|
||
## 5. AI Provider 抽象
|
||
|
||
Provider 接口:
|
||
|
||
```ts
|
||
interface TextProvider { generate(input): Promise<TextResult> }
|
||
interface ImageProvider { generate(input): Promise<ImageResult> }
|
||
interface VideoProvider { generate(input): Promise<VideoResult> }
|
||
interface VoiceProvider { synthesize(input): Promise<AudioResult> }
|
||
interface ModerationProvider { check(input): Promise<ModerationResult> }
|
||
```
|
||
|
||
配置来自数据库或环境变量,支持:
|
||
|
||
- 优先级
|
||
- 限流
|
||
- 失败切换
|
||
- 成本规则
|
||
- 启用/禁用
|
||
|
||
## 6. 队列设计
|
||
|
||
队列:
|
||
|
||
```text
|
||
photo_check_queue
|
||
text_queue
|
||
image_queue
|
||
video_queue
|
||
audio_queue
|
||
ffmpeg_queue
|
||
qc_queue
|
||
cleanup_queue
|
||
```
|
||
|
||
设计原则:
|
||
|
||
1. 图像、视频、音频队列隔离。
|
||
2. 高成本任务必须检查订单/额度。
|
||
3. 任务必须有幂等 key。
|
||
4. 失败后按策略重试。
|
||
5. 多次失败转人工处理。
|
||
|
||
## 7. 存储设计
|
||
|
||
MinIO Bucket 建议:
|
||
|
||
```text
|
||
uploads/ 用户上传原图
|
||
previews/ 预览图
|
||
generated/ 正式生成图
|
||
videos/ 成品视频
|
||
audios/ TTS 音频
|
||
subtitles/ 字幕文件
|
||
cases/ 公开案例资源
|
||
temp/ 临时文件
|
||
```
|
||
|
||
原则:
|
||
|
||
- 用户原图默认私密。
|
||
- 成品下载使用签名链接。
|
||
- 下载链接设置有效期。
|
||
- 公开案例单独复制到 cases 路径。
|
||
|
||
## 8. 视频合成架构
|
||
|
||
第一阶段使用 FFmpeg:
|
||
|
||
```text
|
||
图片素材
|
||
+ 运镜参数
|
||
+ 字幕 SRT
|
||
+ 旁白音频
|
||
+ BGM
|
||
+ 转场配置
|
||
→ FFmpeg Worker
|
||
→ MP4 成品
|
||
```
|
||
|
||
视频等级:
|
||
|
||
- L1:图片 + 运镜
|
||
- L2:图片 + 简单粒子/光效叠加
|
||
- L3:关键镜头图生视频
|
||
- L4:高级动态视频
|
||
|
||
第一阶段建议主做 L1 + L2。
|
||
|
||
## 9. Python Worker 定位
|
||
|
||
Python 只做辅助:
|
||
|
||
- 人脸检测
|
||
- 清晰度检测
|
||
- 图片相似度
|
||
- 人像一致性评分
|
||
- 图片裁切/缩放
|
||
- 视频后处理
|
||
|
||
主业务不放 Python,避免双主系统复杂。
|
||
|
||
## 10. 后续与系统 A 合并预留
|
||
|
||
未来系统 A「原创小说 → 韩漫 / 漫剧」可复用:
|
||
|
||
- AuthModule
|
||
- UserModule
|
||
- AssetModule
|
||
- TemplateModule
|
||
- AIProviderModule
|
||
- QueueModule
|
||
- WorkflowModule
|
||
- OrderModule
|
||
- LogModule
|
||
- AdminModule
|
||
|
||
系统 B 独有:
|
||
|
||
- 真人照片质检
|
||
- 人物档案
|
||
- 肖像授权
|
||
- 人生主题写真模板
|
||
|
||
系统 A 独有:
|
||
|
||
- 小说生成
|
||
- 剧情大纲
|
||
- 分集分镜
|
||
- 漫剧角色库
|
||
- 连载发布
|
||
|
||
## 11. V3 真人动态视频架构增量
|
||
|
||
V3 在系统 B 中新增以下模块:
|
||
|
||
```text
|
||
IdentityAnchorModule:身份锚点、用户确认、后台确认
|
||
FaceConsistencyModule:本人相似度、人脸一致性质检、混脸检测
|
||
MotionTemplateModule:动作模板、动作 Prompt、动作成本等级
|
||
VideoClipModule:真人动态视频片段生成、预览、重试、替换、质检
|
||
LipSyncModule:口型任务、音频绑定、失败回退
|
||
RealVideoProviderModule:Hailuo/Wan/Vidu/Seedance/Kling/Runway 配置与调用
|
||
```
|
||
|
||
架构原则:
|
||
|
||
- 图片纪念视频继续走 FFmpeg,成本可控。
|
||
- 动态写真和 AI 真人动态视频独立成片段任务,不复用最终视频合成接口直接调用高成本 Provider。
|
||
- 真实视频 Provider 默认禁用,必须配置成本阈值和用户确认。
|
||
- 每个视频片段单独落库,支持单片段重试和替换。
|
||
- 口型是可选高级任务,失败时回退旁白字幕版本。
|
||
|
||
V3 推荐链路:
|
||
|
||
```text
|
||
身份锚点
|
||
→ 关键帧
|
||
→ VideoProvider 生成片段
|
||
→ 片段质检
|
||
→ 可选口型
|
||
→ FFmpeg 合成
|
||
→ 最终质检
|
||
```
|