Initial AI manga platform
This commit is contained in:
Executable
+368
@@ -0,0 +1,368 @@
|
||||
# 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 合成
|
||||
→ 最终质检
|
||||
```
|
||||
Reference in New Issue
Block a user