Initial AI manga platform

This commit is contained in:
www
2026-06-15 17:45:28 +08:00
commit 7a8191650f
267 changed files with 105987 additions and 0 deletions
@@ -0,0 +1,126 @@
# 00_系统B升级说明_真人动态视频
## 1. 为什么要升级
系统 B V1/V2 的主线是:
```text
真人照片
→ 多人生主题 / 多世界模板
→ 写真图 / 韩漫图
→ 图片运镜 + BGM + 字幕
→ 纪念视频
```
这条链路适合稳定交付写真图集、婚礼相册视频和轻动态纪念片。
现在新增目标是:
```text
真人照片
→ 保持本人长相和身份
→ 换世界 / 换朝代 / 换服装
→ 人物会动、有表情、有动作、可轻口型
→ 像抖音真人短剧 / 真人婚礼电影 / 真人穿越纪念片
```
因此系统 B 不需要推翻,但必须升级为:
```text
系统 B V3:真人动态视频版
```
## 2. V3 的核心定位
系统 B V3 是真人照片驱动的 AI 多人生主题影像平台,支持:
- 真人写真图集
- 图片纪念视频
- 动态写真视频
- AI 真人动态视频
- 高端真人纪念片
系统 B 与系统 A 的关键区别:
```text
系统 A:虚构小说角色 → 真人短剧
系统 B:真实用户照片 → 真人动态纪念视频
```
系统 B 必须优先保证本人相似度、肖像授权、隐私保护、未成年人保护、身份不漂移和公开案例二次授权。
## 3. V3 不推翻的能力
以下 V2 设计继续保留:
- 真人照片上传
- 照片质检
- 人物档案
- 人生主题
- 世界模板
- 场景模板
- 镜头模板
- 图片生成
- FFmpeg 图片视频合成
- 隐私授权
- 后台审核
- 订单和成本控制
- Provider 抽象
V3 是在上述基础上新增真人动态视频链路。
## 4. V3 新增能力
```text
AI 真人动态视频模式
真人身份锁定
身份锚点图
动作模板
关键帧生成
图生视频 / 参考图生视频
视频片段生成
视频片段质检
口型同步任务
FaceConsistencyProvider
MotionPortraitProvider
LipSyncProvider
国内 VideoProvider 策略
更严格肖像权和未成年人保护
更细成本阈值和人工审核
```
## 5. 推荐真实视频 Provider 顺序
第一轮真实小样建议按以下顺序测试:
1. MiniMax Hailuo 2.3 Fast:速度和成本更适合小样验证。
2. 阿里 Wan2.6 I2V Flash:对比稳定性、清晰度和成本。
3. Vidu Q3 Turbo Reference:重点看参考图人物一致性、表情和音画能力。
4. Seedance / 即梦:重点看真人感、镜头语言和中文短剧感。
5. Kling / Runway:作为备用和质量对比。
每次只测同一个项目、同一个人物、同一个镜头,避免变量过多。
## 6. V3 最小验收目标
第一版不要求整片都是真 AI 动态视频。推荐最小可上线策略:
```text
写真图集版:稳定生成 6-12 张图
图片视频版:稳定合成 30-60 秒 MP4
动态写真版:关键图可做轻微眨眼/微笑/背景动效
AI 真人动态视频版:1-3 个关键镜头使用真实图生视频
```
高端真人纪念片再扩展到全片段 AI 视频化、口型、誓言、人工精修和多轮修改。
## 7. 不能省略的安全规则
- 默认不公开用户作品。
- 默认不把用户照片用于训练或展示。
- 公开案例必须二次授权。
- 未成年人默认不公开,必须监护人授权。
- 真实视频 Provider 默认禁用。
- 真实动态视频必须先成本预估,再用户确认,再生成。
- 真实 Provider 失败不能回落 mock 假成功。
- 视频片段必须做本人相似度和合规质检。
@@ -0,0 +1,384 @@
# 01_系统B总需求文档_v3_真人动态视频版
## 1. 项目名称
**AI 真人多人生主题写真 / 动态视频 / 纪念短片生成系统**
简称:
```text
系统 B V3
真人照片 → 多人生主题 → 多世界模板 → 写真图集 / 图片视频 / 动态写真 / AI 真人动态视频
```
## 2. 产品一句话
用户上传本人、情侣、夫妻或家庭成员照片后,系统在授权和质检通过的前提下,生成专属多世界写真图集、纪念视频,以及带表情、动作、轻口型和镜头运动的 AI 真人动态视频。
## 3. V3 输出模式
### 3.1 高清写真图集
```text
真人照片
→ 人物身份档案
→ 多世界写真图
→ 高清图片交付
```
适合:
- 情侣写真
- 婚礼照片
- 个人形象
- 父母纪念照
### 3.2 图片纪念视频
```text
写真图
→ FFmpeg 推拉运镜
→ 配乐 / 旁白 / 字幕
→ MP4
```
效果类似高级相册视频、婚礼纪念片、照片动效视频。人物本身不做真实行动。
### 3.3 动态写真视频
```text
写真图
→ 眨眼 / 微笑 / 头发衣服轻微动
→ 背景动效 / 花瓣光效
→ 轻口型,可选
→ MP4
```
适合婚礼纪念、情侣纪念、父母金婚银婚、个人形象短片。
### 3.4 AI 真人动态视频
```text
真人照片
→ 真人身份档案
→ 身份锚点
→ 世界 / 场景 / 服装设定
→ 关键帧
→ 图生视频 / 参考图生视频
→ 人物动作 / 表情变化
→ 旁白 / 字幕 / BGM / 口型,可选
→ 合成成片
```
效果目标:
- 像抖音真人短剧
- 像真人婚礼电影
- 像真人穿越短片
- 人物有动作、表情和镜头运动
### 3.5 高端真人纪念片
高端版本支持:
- 多世界
- 多场景
- 关键镜头真人动态
- 誓言 / 旁白 / 口型
- 人工审核
- 人工精修
- 多轮修改
## 4. 第一阶段主打场景
第一阶段重点做:
- 结婚纪念
- 恋爱纪念
- 父母银婚金婚
- 情侣写真
- 个人形象定制
后续扩展:
- 家庭全家福
- 宝宝百日
- 儿童成长
- 闺蜜写真
- 亲子纪念
涉及未成年人时,必须启用更严格授权、审核和公开限制。
## 5. V3 标准流程
```text
首页浏览
→ 登录
→ 创建项目
→ 选择人生主题
→ 选择套餐
→ 选择输出模式
→ 选择视觉风格
→ 选择世界观
→ 选择场景
→ 上传照片
→ 肖像和隐私授权确认
→ 照片质检
→ 真人身份档案
→ 生成身份锚点图
→ 用户确认像不像
→ 生成创作方案
→ 成本预估 / 支付 / 额度冻结
→ 生成预览
→ 用户确认
→ 正式图片 / 关键帧生成
→ 真人动态视频片段生成,可选
→ 视频片段质检
→ 配音 / 字幕 / BGM
→ 口型同步,可选
→ 合成成片
→ 人工审核
→ 用户确认
→ 下载交付
```
## 6. 核心业务对象
V3 在 V2 基础上新增或增强:
```text
Project.output_mode
PersonProfile.identity_lock_status
PersonProfile.face_consistency_score
IdentityAnchor
MotionTemplate
VideoClip
LipSyncTask
FaceConsistencyCheck
ProviderConfig
ProviderLog
```
## 7. 真人身份锁定
系统必须建立“真实人物身份锁定”流程:
1. 用户上传多张参考照片。
2. 系统去 EXIF,私有存储。
3. 检测清晰度、人脸数量、遮挡、角度和过度美颜。
4. 生成人物档案。
5. 生成身份锚点图。
6. 用户确认“像本人”后才能进入正式生成。
7. 后续图片和视频都必须引用身份锚点和人物档案。
身份锁定字段:
```text
identity_lock_status
primary_reference_asset_id
approved_anchor_asset_id
face_consistency_score
age_preserve_rule
beautify_level
style_transform_level
privacy_level
```
## 8. 动作与视频片段
V3 需要动作模板:
```text
smile
blink
turn_head
walk_forward
hold_hands
look_at_each_other
bow_ceremony
lift_veil
hug
wave
stand_still_cinematic
slow_camera_push
```
每个视频片段单独保存,记录:
```text
project_id
scene_id
shot_id
person_ids
provider_id
input_asset_id
output_asset_id
prompt_text
duration
resolution
motion_type
lipsync_enabled
status
retry_count
cost_actual
quality_score
```
## 9. Provider 策略
系统 B V3 不直接依赖单一模型,必须通过 Provider 抽象管理:
```text
TextProvider
ImageProvider
VideoProvider
VoiceProvider
MotionPortraitProvider
LipSyncProvider
FaceIdentityProvider
FaceConsistencyProvider
QualityCheckProvider
ModerationProvider
```
短剧向视频 Provider 预设:
```text
MiniMax Hailuo 2.3 Fast
MiniMax Hailuo 2.3
Alibaba Wan2.6 I2V Flash
Alibaba Wan2.6 I2V
Vidu Q3 Turbo Reference
Vidu Q3 Pro
Jimeng / Seedance
Kling
Runway
MockVideoProvider
```
默认策略:
- 真实视频 Provider 默认禁用。
- 测试先启用一个 Provider。
- 先跑 1 个镜头小样。
- 设置单次和每日成本上限。
- 真实 Provider 失败不能回落 mock 假成功。
## 10. Prompt 方向
系统 B Prompt 必须强调真人身份保持:
```text
真实短剧风格,保持参考照片中人物的五官、脸型、年龄感和气质,不能换脸,不能变成其他人。
人物穿着指定主题服装,在指定场景中自然微笑、转头、牵手或行礼。
镜头竖屏 9:16,电影感光影,真实表情,动作自然,适合抖音短视频纪念片。
```
负面约束:
```text
不要改变人物身份
不要变年轻太多
不要变成欧美脸
不要多出第三人
不要脸部扭曲
不要手部异常
不要表情僵硬
不要恐怖感
不要过度美颜
不要低俗姿势
```
## 11. 成本控制
真人动态视频成本必须按以下维度估算:
- 视频片段秒数
- 视频模型
- 分辨率
- 候选数量
- 重试次数
- 口型任务
- 人工审核
后台配置:
```text
max_video_seconds_per_project
max_clip_duration
max_clip_candidates
max_video_retry_per_clip
default_video_resolution
max_cost_per_project
max_cost_per_call
daily_cost_limit
```
示例:
```text
AI 真人动态视频 40 秒:
8 个镜头
每个 5 秒
每镜头最多 1 次重试
默认 720P
```
## 12. 隐私与肖像权
系统 B V3 必须比系统 A 更严格:
- 用户作品默认私密。
- 用户照片默认不公开、不进案例库、不用于训练。
- 上传照片前必须确认拥有照片中所有人物授权。
- 涉及未成年人必须确认监护人授权。
- 公开案例必须单独授权。
- 后台查看、下载、删除用户原图必须记录审计日志。
新增授权文案:
```text
我确认拥有上传照片中所有人物授权。
我授权平台仅为本项目生成图像和视频。
我理解 AI 生成结果可能与本人存在差异。
我确认不得上传未经授权的他人照片。
如涉及未成年人,我确认我是监护人或已获得监护人授权。
```
## 13. 后台运营能力
后台项目详情需新增:
- 人物身份锚点
- 人脸一致性评分
- 视频片段列表
- 动作模板
- 口型任务
- 视频 Provider
- 片段重试
- 片段替换
- 片段质检
- 成本统计
后台审核需新增:
- 像不像本人
- 是否变脸
- 是否男女混脸
- 是否年龄变化过大
- 动作是否自然
- 表情是否怪异
- 是否有不合适姿势
- 是否适合公开案例
## 14. MVP 验收标准
V3 第一版达到以下标准才可进入真实付费小样:
- 图集版可稳定生成 6-12 张图。
- 图片视频版可稳定合成 30-60 秒 MP4。
- 动态写真版可对关键图做轻微动效。
- AI 真人动态视频版可用 1 个真实 Provider 生成 1-3 个关键镜头。
- 每个真实视频片段可预估成本、生成、失败重试、质检、预览和替换。
- 真实视频失败时任务失败并提示原因,不能显示 mock 成功。
- 未成年人、公开案例、用户原图访问均有明确授权和审计。
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,769 @@
# 03_功能清单_页面清单_状态流转设计
## 1. 文档目标
本文档定义系统 B 的功能边界、用户端页面、后台页面、状态流转、权限边界和每个页面的关键操作。
## 2. 角色定义
| 角色 | 说明 |
|---|---|
| 游客 | 未登录用户,可浏览首页、案例、套餐 |
| 普通用户 | 已登录用户,可创建项目、上传照片、生成作品 |
| 运营人员 | 管理案例、模板、审核作品、处理修改 |
| 管理员 | 管理用户、订单、Provider、系统配置 |
| 超级管理员 | 拥有全部权限,包括密钥配置、数据删除、系统设置 |
## 3. 用户端页面清单
### 3.1 首页
功能:展示产品价值、案例、套餐、开始制作入口。
模块:
- Banner
- 热门案例
- 热门主题
- 热门世界观
- 制作流程
- 套餐对比
- 用户评价
- FAQ
按钮:
- 查看案例
- 用同款制作
- 选择主题
- 查看套餐
- 开始制作
- 联系客服
登录要求:不需要。
### 3.2 案例列表页
筛选条件:
- 人生主题
- 世界观
- 视觉风格
- 图集 / 视频
- 最新 / 热门
注意:只展示已授权公开案例。
### 3.3 案例详情页
展示:
- 案例视频
- 案例图集
- 使用主题
- 使用世界观
- 使用风格
- 套餐推荐
按钮:
- 播放视频
- 查看图集
- 用同款制作
- 收藏案例
### 3.4 登录/注册页
第一阶段支持:
- 手机号验证码
- 微信授权
后续可加:
- 邮箱注册
- 账号密码
### 3.5 创建项目页
字段:
- 项目名称
- 人生主题
- 作品用途
- 输出类型
作品用途:
- 自己留念
- 送礼物
- 婚礼现场播放
- 社交平台发布
- 父母纪念
### 3.6 主题选择页
字段:
- 主题名称
- 主题封面
- 主题说明
- 适合人群
- 案例数量
- 是否推荐
第一阶段主题:
- 结婚纪念
- 恋爱纪念
- 银婚金婚
- 情侣写真
- 个人形象定制
### 3.7 套餐选择页
字段:
- 套餐名称
- 价格
- 图片数量
- 视频时长
- 世界数量
- 场景数量
- 修改次数
- 是否人工审核
- 是否支持高级动态
按钮:
- 选择套餐
- 查看套餐详情
- 下一步
### 3.8 风格选择页
风格:
- 韩漫风
- 半写实写真风
- 国风插画风
- 电影写实风
字段:
- 风格预览图
- 适合主题
- 适合世界
- 是否高级风格
### 3.9 世界观选择页
模式:
- 单世界
- 多世界
- 自由排序
- 同款案例带入
套餐限制:
| 套餐 | 世界数量 |
|---|---|
| 标准图集 | 1 个 |
| 短视频 | 1-3 个 |
| 多世界纪念片 | 5-10 个 |
| 高端定制 | 按订单配置 |
### 3.10 场景选择页
每个世界下选择场景。
字段:
- 场景名称
- 场景预览图
- 推荐镜头数
- 是否支持视频动态
- 是否高级场景
### 3.11 照片上传页
双人主题:
- 人物 A3-8 张
- 人物 B3-8 张
- 双人合照:1-5 张,可选
单人主题:
- 本人照片:3-10 张
家庭主题:
- 每位成员 2-5 张
- 家庭合照 1-5 张
禁止上传:
- 模糊照片
- 戴墨镜/口罩
- 过度美颜
- 逆光严重
- 脸部遮挡
- 多人混乱
### 3.12 授权确认页
必须勾选:
- 我确认拥有上传照片的合法使用权
- 我确认已获得照片中人物授权
- 我授权平台为本次项目生成图片和视频
- 我知道作品默认不公开展示
- 如涉及未成年人,我确认我是监护人或已获得监护人授权
### 3.13 照片质检页
检测:
- 清晰度
- 人脸完整度
- 光照
- 遮挡
- 角度
- 多人混入
- 重复图片
- 角色归属
- 过度美颜
状态:
- pass:合格
- warning:可用但有风险
- fail:必须替换
### 3.14 定制信息页
字段:
- 人物姓名
- 关系类型
- 纪念日期
- 文案风格
- 一句话誓言
- 是否显示名字
- 是否显示日期
- 特别要求
- 是否允许公开展示
### 3.15 创作方案预览页
展示:
- 作品标题
- 主题
- 风格
- 世界顺序
- 场景顺序
- 镜头数量
- 图片数量
- 预计视频时长
- 旁白草稿
- 字幕草稿
- 预计消耗额度
按钮:
- 确认方案
- 修改世界
- 修改场景
- 修改文案
- 重新生成方案
- 取消项目
### 3.16 支付/额度确认页
字段:
- 套餐价格
- 优惠金额
- 需支付金额
- 预览额度
- 正式生成额度
- 修改次数
按钮:
- 立即支付
- 使用余额
- 取消订单
### 3.17 预览确认页
展示:
- 低清水印预览图
- 关键镜头
- 人物像不像反馈入口
- 风格满意度反馈入口
按钮:
- 满意,进入正式生成
- 不满意,重新生成预览
- 修改模板
- 联系客服
### 3.18 生成进度页
进度节点:
```text
项目已创建
照片检测完成
人物档案建立中
方案生成中
等待方案确认
预览生成中
等待预览确认
正式图生成中
图片质检中
音频生成中
字幕生成中
视频合成中
人工审核中
等待用户确认
已完成
```
### 3.19 成品确认页
展示:
- 成品视频
- 成品图集
- 封面图
- 有字幕版本
- 无字幕版本
- 下载入口
- 剩余修改次数
按钮:
- 确认完成
- 申请修改
- 下载视频
- 下载图片
- 删除作品
- 授权公开为案例
### 3.20 修改申请页
修改类型:
- 小改:名字、日期、字幕、音乐、片尾文案
- 中改:替换个别图片、重做 1-2 个场景
- 大改:换整体风格、换全部世界、整条重做
规则:大改必须重新计费。
### 3.21 我的项目页
字段:
- 项目名称
- 缩略图
- 主题
- 套餐
- 状态
- 创建时间
- 是否可下载
### 3.22 用户中心页
功能:
- 个人信息
- 我的项目
- 我的订单
- 我的收藏
- 隐私设置
- 删除作品申请
- 联系客服
- 退出登录
## 4. 后台页面清单
后台使用 Geeker-Admin 二开。
### 4.1 仪表盘
指标:
- 今日订单数
- 今日支付金额
- 今日生成项目数
- 今日完成项目数
- 失败任务数
- 待审核项目数
- 待处理修改数
- AI 调用成本
- 存储占用
- 热门主题排行
- 热门世界排行
### 4.2 用户管理
操作:
- 查看用户
- 禁用用户
- 恢复用户
- 查看用户项目
- 查看用户订单
### 4.3 项目管理
操作:
- 查看详情
- 查看素材
- 查看任务
- 手动重试
- 转人工
- 标记异常
- 强制完成
- 取消项目
### 4.4 订单管理
操作:
- 查看订单
- 标记支付
- 退款记录
- 修改套餐
- 查看关联项目
### 4.5 模板管理
子模块:
- 人生主题管理
- 世界观模板管理
- 场景模板管理
- 镜头模板管理
- 视觉风格管理
- 文案模板管理
- 音乐模板管理
- 视频模板管理
- 套餐管理
### 4.6 任务管理
操作:
- 查看输入
- 查看输出
- 重试
- 终止
- 跳过
- 标记人工处理
- 查看错误日志
### 4.7 AI Provider 管理
管理:
- TextProvider
- ImageProvider
- VideoProvider
- VoiceProvider
- ModerationProvider
- FaceCheckProvider
- QualityCheckProvider
### 4.8 案例管理
操作:
- 从项目生成案例
- 设置首页推荐
- 上架/下架
- 排序
- 查看授权记录
### 4.9 修改申请管理
操作:
- 接受
- 拒绝
- 转人工
- 创建重做任务
- 标记完成
### 4.10 隐私与授权管理
管理:
- 用户授权记录
- 公开案例授权
- 未成年人授权确认
- 删除申请
- 数据导出申请
- 素材清理记录
## 5. 项目状态流转
### 5.1 Project 状态枚举
```text
draft
template_selecting
photo_uploading
authorization_pending
photo_checking
photo_rejected
person_profiling
info_filling
plan_generating
waiting_plan_confirm
payment_pending
payment_paid
preview_generating
waiting_preview_confirm
final_generating
image_qc
audio_generating
subtitle_generating
video_rendering
final_qc
manual_review
waiting_user_confirm
revision_requested
revising
completed
cancelled
failed
archived
```
### 5.2 主流程
```text
draft
→ template_selecting
→ photo_uploading
→ authorization_pending
→ photo_checking
→ person_profiling
→ info_filling
→ plan_generating
→ waiting_plan_confirm
→ payment_pending
→ payment_paid
→ preview_generating
→ waiting_preview_confirm
→ final_generating
→ image_qc
→ audio_generating
→ subtitle_generating
→ video_rendering
→ final_qc
→ manual_review
→ waiting_user_confirm
→ completed
→ archived
```
### 5.3 异常分支
照片失败:
```text
photo_checking → photo_rejected → photo_uploading → photo_checking
```
支付失败:
```text
payment_pending → payment_failed → payment_pending / cancelled
```
预览不满意:
```text
waiting_preview_confirm → template_selecting / info_filling / preview_generating
```
成品修改:
```text
waiting_user_confirm → revision_requested → revising → final_generating / video_rendering / manual_review → waiting_user_confirm
```
## 6. 任务状态
```text
pending
running
success
failed
retrying
cancelled
manual_required
```
任务类型:
```text
photo_check
person_profile
plan_generate
prompt_generate
preview_image
final_image
image_qc
video_clip_generate
audio_generate
subtitle_generate
video_render
final_qc
manual_review
```
## 7. V3 真人动态视频页面增量
### 7.1 输出模式选择
创建项目时必须让用户明确选择输出模式:
```text
photo_album:高清写真图集
image_video:图片纪念视频
motion_portrait:动态写真视频
real_videoAI 真人动态视频
premium_film:高端真人纪念片
```
页面必须提示:
- AI 真人动态视频生成时间更长。
- AI 真人动态视频费用更高。
- 真实视频可能需要人工审核和多次重试。
- 不保证每个动作完全自然。
- 真实视频失败时不会用 mock 假成功。
### 7.2 V3 照片上传要求
真人动态视频比图集更依赖参考照片,上传页应提高要求:
```text
单人:正脸清晰照 5-10 张,半身照 2-5 张,不同表情 2-5 张。
情侣/夫妻:男方 5-10 张,女方 5-10 张,双人合照 2-5 张。
家庭:每位成员 3-8 张,家庭合照 2-5 张。
```
禁止:
- 过度美颜
- 脸部遮挡
- 多人混乱
- 低清晰度
- 强滤镜
- 明显年龄不符照片
### 7.3 身份锚点确认页
新增页面或步骤:
- 展示每个人物的主参考照。
- 展示 AI 生成的身份锚点图。
- 显示人脸一致性评分。
- 用户选择“像本人 / 不像本人 / 需要重生”。
- 未确认身份锚点,不允许进入正式动态视频生成。
### 7.4 视频片段页
AI 真人动态视频项目新增片段管理:
- 镜头列表。
- 每个镜头动作模板。
- 输入关键帧。
- 输出视频片段。
- Provider、分辨率、时长、预计成本。
- 生成中 / 成功 / 失败 / 待质检状态。
- 片段预览。
- 重试、替换、转人工。
### 7.5 口型任务页,可选
如果项目启用口型:
- 选择需要口型的片段。
- 绑定音频资产。
- 生成 lip-sync 任务。
- 失败时可回退为旁白字幕版本。
## 8. V3 后台页面增量
后台项目详情页新增:
- 人物身份档案。
- 身份锚点图和用户确认状态。
- 人脸一致性评分。
- 动作模板。
- 视频片段列表。
- 口型任务列表。
- 视频 Provider 和成本。
- 片段质检结果。
- 片段重试和替换入口。
后台审核页新增:
- 是否像本人。
- 是否变脸。
- 是否男女混脸。
- 是否年龄变化过大。
- 动作是否自然。
- 表情是否怪异。
- 是否有不合适姿势。
- 是否允许公开案例。
## 9. V3 状态流转增量
AI 真人动态视频完整状态建议:
```text
photo_checking
→ person_profiling
→ identity_anchor_generating
→ waiting_identity_confirm
→ plan_generating
→ payment_paid
→ keyframe_generating
→ video_clip_estimating
→ video_clip_generating
→ video_clip_qc
→ audio_generating
→ lipsync_generating,可选
→ subtitle_generating
→ video_rendering
→ final_qc
→ manual_review
→ waiting_user_confirm
→ completed
```
新增任务类型:
```text
identity_anchor_generate
face_consistency_check
keyframe_generate
motion_portrait_generate
real_video_clip_generate
video_clip_qc
lipsync_generate
```
+368
View File
@@ -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:口型任务、音频绑定、失败回退
RealVideoProviderModuleHailuo/Wan/Vidu/Seedance/Kling/Runway 配置与调用
```
架构原则:
- 图片纪念视频继续走 FFmpeg,成本可控。
- 动态写真和 AI 真人动态视频独立成片段任务,不复用最终视频合成接口直接调用高成本 Provider。
- 真实视频 Provider 默认禁用,必须配置成本阈值和用户确认。
- 每个视频片段单独落库,支持单片段重试和替换。
- 口型是可选高级任务,失败时回退旁白字幕版本。
V3 推荐链路:
```text
身份锚点
→ 关键帧
→ VideoProvider 生成片段
→ 片段质检
→ 可选口型
→ FFmpeg 合成
→ 最终质检
```
+577
View File
@@ -0,0 +1,577 @@
# 05_数据库表结构设计
## 1. 文档目标
本文档定义系统 B 的 MySQL 核心表结构。字段类型为建议值,实际开发时可根据 ORM 选型调整。
## 2. 命名原则
- 表名使用复数:`users`, `projects`
- 主键统一为 `id BIGINT` 或 UUID,根据实现决定
- 时间字段统一:`created_at`, `updated_at`, `deleted_at`
- 状态字段统一使用字符串枚举
- 金额使用整数分:`amount_cent`
- JSON 配置使用 `JSON` 类型
## 3. users 用户表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 用户 ID |
| nickname | VARCHAR(100) | 昵称 |
| phone | VARCHAR(30) | 手机号 |
| email | VARCHAR(100) | 邮箱 |
| wechat_openid | VARCHAR(100) | 微信 openid |
| avatar_asset_id | BIGINT | 头像资源 |
| status | VARCHAR(30) | active/disabled |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
索引:
- UNIQUE(phone)
- UNIQUE(wechat_openid)
## 4. admin_users 后台用户表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 管理员 ID |
| username | VARCHAR(100) | 用户名 |
| password_hash | VARCHAR(255) | 密码哈希 |
| role_id | BIGINT | 角色 ID |
| status | VARCHAR(30) | 状态 |
| created_at | DATETIME | 创建时间 |
## 5. roles 角色表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 角色 ID |
| name | VARCHAR(100) | 角色名称 |
| code | VARCHAR(100) | 角色编码 |
| permissions | JSON | 权限列表 |
| status | VARCHAR(30) | 状态 |
## 6. projects 项目表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 项目 ID |
| user_id | BIGINT | 用户 ID |
| title | VARCHAR(200) | 项目标题 |
| life_theme_id | BIGINT | 人生主题 |
| package_id | BIGINT | 套餐 |
| style_id | BIGINT | 视觉风格 |
| output_type | VARCHAR(30) | image/video/both |
| status | VARCHAR(50) | 项目状态 |
| payment_status | VARCHAR(50) | 支付状态 |
| total_duration | INT | 视频秒数 |
| image_count | INT | 图片数量 |
| cover_asset_id | BIGINT | 封面 |
| video_asset_id | BIGINT | 视频 |
| allow_public_case | BOOLEAN | 是否允许公开案例 |
| custom_info | JSON | 用户定制信息 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
| completed_at | DATETIME | 完成时间 |
索引:
- INDEX(user_id, status)
- INDEX(created_at)
- INDEX(life_theme_id)
## 7. orders 订单表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 订单 ID |
| user_id | BIGINT | 用户 ID |
| project_id | BIGINT | 项目 ID |
| package_id | BIGINT | 套餐 ID |
| amount_cent | INT | 金额,单位分 |
| pay_status | VARCHAR(30) | pending/paid/failed/cancelled |
| pay_method | VARCHAR(30) | wechat/alipay/balance/manual |
| transaction_id | VARCHAR(100) | 第三方交易号 |
| refund_status | VARCHAR(30) | none/refunding/refunded |
| created_at | DATETIME | 创建时间 |
| paid_at | DATETIME | 支付时间 |
## 8. packages 套餐表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 套餐 ID |
| code | VARCHAR(100) | 编码 |
| name | VARCHAR(100) | 名称 |
| price_cent | INT | 价格 |
| world_min | INT | 最少世界数 |
| world_max | INT | 最多世界数 |
| scene_min | INT | 最少场景数 |
| scene_max | INT | 最多场景数 |
| image_min | INT | 最少图片数 |
| image_max | INT | 最多图片数 |
| video_duration_min | INT | 最短视频秒数 |
| video_duration_max | INT | 最长视频秒数 |
| revision_count | INT | 修改次数 |
| allow_video | BOOLEAN | 是否视频 |
| allow_voice | BOOLEAN | 是否旁白 |
| allow_advanced_video | BOOLEAN | 是否高级动态 |
| manual_review_required | BOOLEAN | 是否人工审核 |
| config_json | JSON | 扩展配置 |
| status | VARCHAR(30) | 状态 |
## 9. life_themes 人生主题表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 主题 ID |
| code | VARCHAR(100) | 编码 |
| name | VARCHAR(100) | 名称 |
| description | TEXT | 说明 |
| cover_asset_id | BIGINT | 封面 |
| person_schema | JSON | 人物结构规则 |
| default_copy_moods | JSON | 默认文案风格 |
| status | VARCHAR(30) | 状态 |
| sort_order | INT | 排序 |
person_schema 示例:
```json
{
"type": "couple",
"roles": ["person_a", "person_b"],
"min_photos_each": 3,
"max_photos_each": 8,
"minor_sensitive": false
}
```
## 10. style_templates 风格模板表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 风格 ID |
| code | VARCHAR(100) | 编码 |
| name | VARCHAR(100) | 名称 |
| description | TEXT | 说明 |
| cover_asset_id | BIGINT | 封面 |
| prompt_style | TEXT | 风格 Prompt |
| negative_rules | TEXT | 禁止项 |
| supported_theme_ids | JSON | 支持主题 |
| status | VARCHAR(30) | 状态 |
## 11. world_templates 世界观模板表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 世界 ID |
| code | VARCHAR(100) | 编码 |
| name | VARCHAR(100) | 名称 |
| category | VARCHAR(100) | 分类 |
| description | TEXT | 说明 |
| cover_asset_id | BIGINT | 封面 |
| prompt_base | TEXT | 世界基础 Prompt |
| costume_rules | TEXT | 服装规则 |
| scene_rules | TEXT | 场景规则 |
| style_rules | TEXT | 风格规则 |
| negative_rules | TEXT | 禁止项 |
| supported_theme_ids | JSON | 支持主题 |
| supported_style_ids | JSON | 支持风格 |
| is_premium | BOOLEAN | 高级模板 |
| status | VARCHAR(30) | 状态 |
| sort_order | INT | 排序 |
## 12. scene_templates 场景模板表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 场景 ID |
| world_id | BIGINT | 所属世界 |
| code | VARCHAR(100) | 编码 |
| name | VARCHAR(100) | 名称 |
| description | TEXT | 说明 |
| cover_asset_id | BIGINT | 封面 |
| scene_prompt | TEXT | 场景 Prompt |
| composition_rules | TEXT | 构图规则 |
| lighting_rules | TEXT | 光影规则 |
| effect_type | VARCHAR(100) | 特效类型 |
| recommended_shot_count | INT | 推荐镜头数 |
| is_premium | BOOLEAN | 高级场景 |
| status | VARCHAR(30) | 状态 |
| sort_order | INT | 排序 |
## 13. shot_templates 镜头模板表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 镜头模板 ID |
| scene_id | BIGINT | 所属场景 |
| code | VARCHAR(100) | 编码 |
| name | VARCHAR(100) | 名称 |
| shot_type | VARCHAR(100) | 镜头类型 |
| camera_angle | VARCHAR(100) | 视角 |
| composition | TEXT | 构图 |
| prompt_rule | TEXT | Prompt 规则 |
| duration | INT | 默认秒数 |
| effect_type | VARCHAR(100) | 运镜/特效 |
| status | VARCHAR(30) | 状态 |
| sort_order | INT | 排序 |
## 14. project_worlds 项目世界关系表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | ID |
| project_id | BIGINT | 项目 ID |
| world_id | BIGINT | 世界 ID |
| sort_order | INT | 顺序 |
## 15. project_scenes 项目场景关系表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | ID |
| project_id | BIGINT | 项目 ID |
| world_id | BIGINT | 世界 ID |
| scene_id | BIGINT | 场景 ID |
| sort_order | INT | 顺序 |
## 16. person_profiles 人物档案表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 人物档案 ID |
| project_id | BIGINT | 项目 ID |
| role | VARCHAR(50) | person_a/person_b/child 等 |
| name | VARCHAR(100) | 名称 |
| gender_label | VARCHAR(50) | 性别标签,可选 |
| age_group | VARCHAR(50) | 年龄段 |
| appearance_summary | TEXT | 外貌摘要 |
| reference_asset_ids | JSON | 参考照片 |
| anchor_asset_id | BIGINT | 锚点图 |
| quality_score | DECIMAL(5,2) | 质量分 |
| status | VARCHAR(30) | 状态 |
| created_at | DATETIME | 创建时间 |
V3 真人动态视频增强字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| identity_lock_status | VARCHAR(50) | unlocked/generating_anchor/waiting_user_confirm/locked/rejected |
| face_consistency_score | DECIMAL(5,2) | 本人相似度评分 |
| primary_reference_asset_id | BIGINT | 主参考照片 |
| approved_anchor_asset_id | BIGINT | 用户确认的身份锚点 |
| age_preserve_rule | VARCHAR(100) | 年龄保持规则:strict/soft/allow_younger 等 |
| beautify_level | VARCHAR(50) | 美化强度:none/light/medium/high |
| style_transform_level | VARCHAR(50) | 风格转换强度:realistic/semi_real/comic |
| privacy_level | VARCHAR(50) | 隐私等级:normal/sensitive/minor |
## 17. assets 素材表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 素材 ID |
| user_id | BIGINT | 用户 ID |
| project_id | BIGINT | 项目 ID |
| asset_type | VARCHAR(50) | 类型 |
| file_path | VARCHAR(500) | 存储路径 |
| file_url | VARCHAR(500) | 访问 URL,可为空 |
| mime_type | VARCHAR(100) | MIME |
| width | INT | 宽 |
| height | INT | 高 |
| duration | INT | 音视频秒数 |
| size | BIGINT | 文件大小 |
| hash | VARCHAR(100) | 文件哈希 |
| visibility | VARCHAR(30) | private/public/case |
| status | VARCHAR(30) | 状态 |
| created_at | DATETIME | 创建时间 |
asset_type
```text
upload_photo
preview_image
final_image
audio
subtitle
video
cover
case_asset
music
```
## 18. shot_plans 镜头计划表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 镜头计划 ID |
| project_id | BIGINT | 项目 ID |
| world_id | BIGINT | 世界 ID |
| scene_id | BIGINT | 场景 ID |
| shot_template_id | BIGINT | 镜头模板 ID |
| title | VARCHAR(200) | 标题 |
| description | TEXT | 画面描述 |
| prompt_text | TEXT | 正向 Prompt |
| negative_prompt | TEXT | 负向 Prompt |
| duration | INT | 秒数 |
| output_asset_id | BIGINT | 生成图 |
| sort_order | INT | 顺序 |
| status | VARCHAR(30) | 状态 |
## 19. render_tasks 生成任务表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 任务 ID |
| project_id | BIGINT | 项目 ID |
| task_type | VARCHAR(100) | 任务类型 |
| provider_id | BIGINT | Provider |
| status | VARCHAR(30) | 状态 |
| input_json | JSON | 输入 |
| input_hash | VARCHAR(100) | 幂等哈希 |
| output_asset_id | BIGINT | 输出素材 |
| provider_request_id | VARCHAR(200) | 三方请求 ID |
| retry_count | INT | 重试次数 |
| max_retry | INT | 最大重试 |
| cost_estimate_cent | INT | 预估成本 |
| cost_actual_cent | INT | 实际成本 |
| error_code | VARCHAR(100) | 错误码 |
| error_message | TEXT | 错误信息 |
| created_at | DATETIME | 创建时间 |
| started_at | DATETIME | 开始时间 |
| finished_at | DATETIME | 完成时间 |
索引:
- UNIQUE(project_id, task_type, input_hash)
- INDEX(status, created_at)
## 20. provider_configs Provider 配置表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | Provider ID |
| provider_type | VARCHAR(50) | text/image/video/voice/moderation |
| provider_name | VARCHAR(100) | 名称 |
| model_name | VARCHAR(100) | 模型名 |
| api_base | VARCHAR(500) | API Base |
| api_key_ref | VARCHAR(100) | 密钥引用,不直接存明文 |
| priority | INT | 优先级 |
| quality_level | VARCHAR(50) | quality/speed/cost |
| rate_limit_json | JSON | 限流配置 |
| cost_rule_json | JSON | 成本规则 |
| fallback_provider_id | BIGINT | 备用 Provider |
| status | VARCHAR(30) | 状态 |
## 21. provider_logs Provider 日志表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 日志 ID |
| provider_id | BIGINT | Provider |
| project_id | BIGINT | 项目 |
| task_id | BIGINT | 任务 |
| request_payload | JSON | 请求,可脱敏 |
| response_payload | JSON | 响应,可脱敏 |
| status | VARCHAR(30) | 状态 |
| cost_cent | INT | 成本 |
| latency_ms | INT | 耗时 |
| created_at | DATETIME | 创建时间 |
## 22. revision_requests 修改申请表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 修改 ID |
| project_id | BIGINT | 项目 ID |
| user_id | BIGINT | 用户 ID |
| revision_type | VARCHAR(30) | small/medium/major |
| request_text | TEXT | 修改内容 |
| status | VARCHAR(30) | 状态 |
| remaining_count_before | INT | 修改前剩余次数 |
| handled_by | BIGINT | 处理人 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
## 23. authorizations 授权记录表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 授权 ID |
| user_id | BIGINT | 用户 ID |
| project_id | BIGINT | 项目 ID |
| authorization_type | VARCHAR(50) | 类型 |
| content | TEXT | 授权文本 |
| ip | VARCHAR(100) | IP |
| user_agent | TEXT | UA |
| confirmed_at | DATETIME | 确认时间 |
类型:
```text
photo_usage
public_case
minor_guardian
privacy_policy
terms
```
## 24. case_showcases 案例表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 案例 ID |
| project_id | BIGINT | 来源项目 |
| title | VARCHAR(200) | 标题 |
| cover_asset_id | BIGINT | 封面 |
| video_asset_id | BIGINT | 视频 |
| theme_id | BIGINT | 主题 |
| style_id | BIGINT | 风格 |
| world_ids | JSON | 世界列表 |
| sort_order | INT | 排序 |
| is_featured | BOOLEAN | 首页推荐 |
| status | VARCHAR(30) | 状态 |
| authorization_id | BIGINT | 授权记录 |
## 25. music_assets 音乐素材表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 音乐 ID |
| name | VARCHAR(200) | 名称 |
| mood | VARCHAR(100) | 情绪 |
| asset_id | BIGINT | 音频资源 |
| duration | INT | 秒数 |
| license_type | VARCHAR(100) | 授权类型 |
| source | VARCHAR(200) | 来源 |
| usage_scope | TEXT | 使用范围 |
| status | VARCHAR(30) | 状态 |
## 26. system_configs 系统配置表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 配置 ID |
| config_key | VARCHAR(100) | Key |
| config_value | JSON | Value |
| description | TEXT | 说明 |
| updated_at | DATETIME | 更新时间 |
## 27. audit_logs 操作日志表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 日志 ID |
| actor_type | VARCHAR(30) | user/admin/system |
| actor_id | BIGINT | 操作人 |
| action | VARCHAR(100) | 动作 |
| target_type | VARCHAR(100) | 目标类型 |
| target_id | BIGINT | 目标 ID |
| detail_json | JSON | 详情 |
| ip | VARCHAR(100) | IP |
| created_at | DATETIME | 创建时间 |
## 28. V3 identity_anchors 身份锚点表
用于保存真人身份锚点,确保后续图片和视频尽量像本人。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 锚点 ID |
| project_id | BIGINT | 项目 ID |
| person_id | BIGINT | 人物档案 ID |
| anchor_asset_id | BIGINT | 锚点素材 |
| anchor_type | VARCHAR(80) | real_photo_anchor/semi_realistic_anchor/korean_comic_anchor/ancient_costume_anchor/future_style_anchor |
| quality_score | DECIMAL(5,2) | 锚点质量分 |
| face_consistency_score | DECIMAL(5,2) | 与本人相似度 |
| approved_by_user | BOOLEAN | 用户是否确认 |
| approved_by_admin | BOOLEAN | 后台是否确认 |
| status | VARCHAR(50) | generating/waiting_confirm/approved/rejected |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
## 29. V3 motion_templates 动作模板表
用于控制动态写真和真人视频片段的动作范围。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 动作模板 ID |
| name | VARCHAR(100) | 动作名称 |
| motion_type | VARCHAR(100) | smile/blink/turn_head/walk_forward/hold_hands 等 |
| description | TEXT | 说明 |
| supported_themes | JSON | 支持人生主题 |
| supported_worlds | JSON | 支持世界模板 |
| supported_styles | JSON | 支持视觉风格 |
| prompt_rule | TEXT | 动作 Prompt 规则 |
| duration | INT | 默认片段秒数 |
| difficulty_level | VARCHAR(50) | easy/medium/hard |
| cost_level | VARCHAR(50) | low/medium/high |
| status | VARCHAR(30) | 状态 |
| sort_order | INT | 排序 |
推荐动作:
```text
smile
blink
turn_head
walk_forward
hold_hands
look_at_each_other
bow_ceremony
lift_veil
hug
wave
stand_still_cinematic
slow_camera_push
```
## 30. V3 video_clips 视频片段表
每个 AI 动态视频片段单独存储,便于重试、替换、质检和成本追踪。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 视频片段 ID |
| project_id | BIGINT | 项目 ID |
| scene_id | BIGINT | 场景 ID |
| shot_id | BIGINT | 镜头 ID |
| person_ids | JSON | 涉及人物 ID |
| provider_id | BIGINT | Provider 配置 ID |
| input_asset_id | BIGINT | 输入关键帧 / 参考图 |
| output_asset_id | BIGINT | 输出视频素材 |
| prompt_text | TEXT | 视频 Prompt |
| duration | INT | 秒数 |
| resolution | VARCHAR(50) | 720p/1080p |
| motion_type | VARCHAR(100) | 动作类型 |
| lipsync_enabled | BOOLEAN | 是否启用口型 |
| status | VARCHAR(50) | pending/running/generated/failed/manual_required |
| retry_count | INT | 重试次数 |
| cost_actual | DECIMAL(12,4) | 实际成本 |
| quality_score | DECIMAL(5,2) | 质检分 |
| quality_issues | JSON | 质检问题 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
## 31. V3 lipsync_tasks 口型任务表
口型任务可选,不应阻塞基础交付;失败时可回退旁白字幕版本。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT PK | 任务 ID |
| project_id | BIGINT | 项目 ID |
| video_clip_id | BIGINT | 视频片段 ID |
| audio_asset_id | BIGINT | 输入音频 |
| output_asset_id | BIGINT | 口型后视频 |
| provider_id | BIGINT | LipSync Provider |
| status | VARCHAR(50) | pending/running/success/failed/manual_required |
| cost_actual | DECIMAL(12,4) | 实际成本 |
| retry_count | INT | 重试次数 |
| error_code | VARCHAR(100) | 错误码 |
| error_message | TEXT | 错误信息 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
+649
View File
@@ -0,0 +1,649 @@
# 06_API接口设计文档
## 1. 文档目标
本文档定义系统 B 的 API 接口结构、请求参数、返回格式、错误码和权限要求。
## 2. 通用规范
### 2.1 Base URL
```text
/api
```
后台接口:
```text
/api/admin
```
### 2.2 通用返回格式
```json
{
"code": 0,
"message": "ok",
"data": {}
}
```
错误示例:
```json
{
"code": 40001,
"message": "照片质量不合格",
"data": {
"reason": "face_blur"
}
}
```
### 2.3 通用错误码
| code | 含义 |
|---|---|
| 0 | 成功 |
| 40000 | 参数错误 |
| 40100 | 未登录 |
| 40300 | 无权限 |
| 40400 | 资源不存在 |
| 40900 | 状态冲突 |
| 42900 | 请求过于频繁 |
| 50000 | 系统错误 |
| 60000 | AI 生成失败 |
| 60001 | Provider 不可用 |
| 70000 | 支付失败 |
| 80000 | 审核不通过 |
## 3. 认证接口
### 3.1 发送验证码
```text
POST /api/auth/send-code
```
请求:
```json
{ "phone": "13800000000" }
```
返回:
```json
{ "success": true }
```
### 3.2 手机号登录
```text
POST /api/auth/login-phone
```
请求:
```json
{
"phone": "13800000000",
"code": "123456"
}
```
返回:
```json
{
"token": "jwt-token",
"user": { "id": 1, "nickname": "用户" }
}
```
### 3.3 微信登录
```text
POST /api/auth/login-wechat
```
请求:
```json
{ "code": "wechat_code" }
```
## 4. 首页与案例接口
### 4.1 首页配置
```text
GET /api/home
```
返回:
```json
{
"banners": [],
"featured_cases": [],
"themes": [],
"packages": []
}
```
### 4.2 案例列表
```text
GET /api/cases?theme_id=1&style_id=2&page=1&page_size=20
```
### 4.3 案例详情
```text
GET /api/cases/:id
```
## 5. 模板查询接口
### 5.1 人生主题列表
```text
GET /api/life-themes
```
### 5.2 套餐列表
```text
GET /api/packages?theme_id=1
```
### 5.3 风格列表
```text
GET /api/styles?theme_id=1
```
### 5.4 世界观列表
```text
GET /api/worlds?theme_id=1&style_id=2
```
### 5.5 场景列表
```text
GET /api/worlds/:world_id/scenes
```
## 6. 项目接口
### 6.1 创建项目
```text
POST /api/projects
```
请求:
```json
{
"title": "我们的时空纪念片",
"life_theme_id": 1,
"output_type": "video"
}
```
返回:
```json
{
"project_id": 1001,
"status": "draft"
}
```
### 6.2 获取项目详情
```text
GET /api/projects/:id
```
### 6.3 保存套餐
```text
POST /api/projects/:id/package
```
请求:
```json
{ "package_id": 2 }
```
### 6.4 保存风格
```text
POST /api/projects/:id/style
```
请求:
```json
{ "style_id": 3 }
```
### 6.5 保存世界观
```text
POST /api/projects/:id/worlds
```
请求:
```json
{
"selected_worlds": [
{ "world_id": 1, "sort_order": 1 },
{ "world_id": 5, "sort_order": 2 }
]
}
```
### 6.6 保存场景
```text
POST /api/projects/:id/scenes
```
请求:
```json
{
"selected_scenes": [
{ "world_id": 1, "scene_id": 11, "sort_order": 1 },
{ "world_id": 5, "scene_id": 51, "sort_order": 2 }
]
}
```
### 6.7 保存定制信息
```text
POST /api/projects/:id/custom-info
```
请求:
```json
{
"names": { "person_a": "男方", "person_b": "女方" },
"relationship_type": "couple",
"anniversary_date": "2026-05-20",
"copy_mood": "romantic",
"show_names": true,
"show_date": true,
"vow_text": "愿此生与你共赴山海",
"special_requirements": "整体梦幻,不要太搞笑",
"allow_public_case": false
}
```
### 6.8 项目进度
```text
GET /api/projects/:id/progress
```
返回:
```json
{
"status": "final_generating",
"percent": 65,
"current_step": "正式图片生成中",
"tasks": [
{ "task_type": "final_image", "success": 12, "total": 20 }
]
}
```
### 6.9 我的项目列表
```text
GET /api/my/projects?page=1&page_size=20
```
## 7. 文件与照片接口
### 7.1 上传照片
```text
POST /api/projects/:id/photos
Content-Type: multipart/form-data
```
字段:
```text
person_role: person_a/person_b/child/self
file: image
```
返回:
```json
{
"asset_id": 2001,
"url": "signed-url",
"status": "uploaded"
}
```
### 7.2 删除照片
```text
DELETE /api/assets/:asset_id
```
### 7.3 触发照片质检
```text
POST /api/projects/:id/photo-check
```
### 7.4 获取照片质检结果
```text
GET /api/projects/:id/photo-check-result
```
## 8. 授权接口
### 8.1 提交授权确认
```text
POST /api/projects/:id/authorizations
```
请求:
```json
{
"types": ["photo_usage", "privacy_policy", "terms"],
"minor_guardian_confirmed": false
}
```
### 8.2 公开案例授权
```text
POST /api/projects/:id/public-case-authorization
```
## 9. AI 生成流程接口
### 9.1 生成创作方案
```text
POST /api/projects/:id/generate-plan
```
返回:
```json
{
"task_id": 3001,
"status": "pending"
}
```
### 9.2 获取创作方案
```text
GET /api/projects/:id/plan
```
### 9.3 确认创作方案
```text
POST /api/projects/:id/confirm-plan
```
### 9.4 生成预览
```text
POST /api/projects/:id/generate-preview
```
### 9.5 确认预览
```text
POST /api/projects/:id/confirm-preview
```
### 9.6 正式生成
```text
POST /api/projects/:id/generate-final
```
### 9.7 获取项目素材
```text
GET /api/projects/:id/assets?asset_type=final_image
```
## 10. 订单支付接口
### 10.1 创建订单
```text
POST /api/projects/:id/orders
```
请求:
```json
{ "package_id": 2, "pay_method": "wechat" }
```
### 10.2 获取支付状态
```text
GET /api/orders/:id
```
### 10.3 支付回调
```text
POST /api/payments/wechat/callback
```
## 11. 修改申请接口
### 11.1 提交修改申请
```text
POST /api/projects/:id/revisions
```
请求:
```json
{
"revision_type": "small",
"request_text": "请把片尾日期改成 2026-05-20"
}
```
### 11.2 修改申请列表
```text
GET /api/projects/:id/revisions
```
## 12. 下载接口
### 12.1 获取下载链接
```text
GET /api/assets/:asset_id/download-url
```
返回:
```json
{
"url": "signed-download-url",
"expires_in": 3600
}
```
## 13. 后台接口示例
### 13.1 后台项目列表
```text
GET /api/admin/projects?status=manual_review&page=1&page_size=20
```
### 13.2 后台项目详情
```text
GET /api/admin/projects/:id
```
### 13.3 后台任务重试
```text
POST /api/admin/tasks/:id/retry
```
### 13.4 后台任务终止
```text
POST /api/admin/tasks/:id/cancel
```
### 13.5 后台转人工
```text
POST /api/admin/projects/:id/manual-review
```
### 13.6 后台模板新增/编辑
```text
POST /api/admin/world-templates
PUT /api/admin/world-templates/:id
POST /api/admin/scene-templates
PUT /api/admin/scene-templates/:id
```
### 13.7 后台 Provider 测试
```text
POST /api/admin/providers/:id/test
```
## 14. WebSocket 进度推送
连接:
```text
/ws/projects/:project_id
```
事件:
```json
{
"event": "project_progress",
"data": {
"project_id": 1001,
"status": "video_rendering",
"percent": 82,
"message": "视频合成中"
}
}
```
## 15. 权限规则
- 用户只能访问自己的项目、素材、订单。
- 后台管理员按角色权限访问后台接口。
- Provider 密钥不可通过接口返回明文。
- 公开案例必须检查授权记录。
## 16. V3 真人动态视频接口增量
### 16.1 输出模式
```text
PATCH /api/projects/:id/output-mode
```
请求:
```json
{
"output_mode": "real_video"
}
```
### 16.2 身份锚点
```text
POST /api/projects/:id/identity-anchors/generate
GET /api/projects/:id/identity-anchors
POST /api/identity-anchors/:anchor_id/confirm
POST /api/identity-anchors/:anchor_id/reject
```
### 16.3 人脸一致性质检
```text
POST /api/person-profiles/:person_id/face-consistency/check
GET /api/person-profiles/:person_id/face-consistency/latest
```
### 16.4 动作模板
```text
GET /api/motion-templates
GET /api/admin/motion-templates
POST /api/admin/motion-templates
PUT /api/admin/motion-templates/:id
```
### 16.5 真人动态视频片段
```text
GET /api/projects/:id/video-clips
GET /api/projects/:id/video-clips/cost-estimate
POST /api/projects/:id/video-clips/generate
POST /api/video-clips/:clip_id/retry
POST /api/video-clips/:clip_id/quality-check
POST /api/video-clips/:clip_id/replace
```
真实生成请求必须包含:
```json
{
"provider_code": "minimax_hailuo_23_fast",
"confirm_real_video": true,
"max_cost_per_clip": 1.0
}
```
未确认或 Provider 未启用时,应返回明确错误,不允许回落 mock。
### 16.6 口型任务
```text
POST /api/video-clips/:clip_id/lipsync
GET /api/projects/:id/lipsync-tasks
POST /api/lipsync-tasks/:task_id/retry
```
+479
View File
@@ -0,0 +1,479 @@
# 07_uniapp用户端页面交互文档
## 1. 文档目标
本文档定义 uni-app 用户端的页面结构、跳转流程、页面字段、按钮动作和异常处理。
## 2. 页面路由建议
```text
/pages/index/index 首页
/pages/case/list 案例列表
/pages/case/detail 案例详情
/pages/auth/login 登录注册
/pages/project/create 创建项目
/pages/project/theme 选择主题
/pages/project/package 选择套餐
/pages/project/style 选择风格
/pages/project/world 选择世界观
/pages/project/scene 选择场景
/pages/project/upload 上传照片
/pages/project/authorization 授权确认
/pages/project/photo-check 照片质检
/pages/project/custom-info 定制信息
/pages/project/plan 创作方案
/pages/project/payment 支付确认
/pages/project/preview 预览确认
/pages/project/progress 生成进度
/pages/project/result 成品确认
/pages/project/revision 修改申请
/pages/my/projects 我的项目
/pages/my/orders 我的订单
/pages/my/profile 用户中心
```
## 3. 全局交互原则
1. 未登录点击制作类按钮,跳转登录页。
2. 用户返回上一步时,不删除已选数据。
3. 所有选择流程都保存到项目草稿。
4. 高成本生成动作必须二次确认。
5. 生成中页面不允许重复触发同一任务。
6. 页面异常时提供“重试”和“联系客服”。
## 4. 首页
### 数据来源
```text
GET /api/home
```
### 页面模块
- 顶部 Banner
- 热门案例横滑
- 热门主题宫格
- 热门世界观
- 套餐展示
- 制作流程
- FAQ
### 主要交互
| 操作 | 行为 |
|---|---|
| 点击开始制作 | 未登录跳登录;已登录跳创建项目 |
| 点击案例 | 跳案例详情 |
| 点击主题 | 跳主题选择,自动带入主题 |
| 点击用同款 | 登录后创建项目并带入案例模板 |
## 5. 登录页
### 支持
- 手机号验证码
- 微信授权
### 登录成功后
如果有 redirect 参数,回到之前页面;否则进入首页。
## 6. 创建项目页
### 字段
- 项目名称
- 作品用途
- 输出类型
### 按钮
- 下一步:调用 `POST /api/projects`,成功后进入主题选择页。
### 校验
- 项目名称可为空,系统自动生成。
- 输出类型必须选择。
## 7. 主题选择页
### 数据来源
```text
GET /api/life-themes
```
### 交互
- 选择主题后保存到项目。
- 下一步进入套餐选择。
### 异常
如果主题涉及未成年人,后续上传页和授权页必须增加未成年人提示。
## 8. 套餐选择页
### 数据来源
```text
GET /api/packages?theme_id=xxx
```
### 交互
- 用户选择套餐后调用保存套餐接口。
- 套餐决定后续世界数、场景数、图片数、视频时长限制。
### 显示重点
- 价格
- 图片数量
- 视频时长
- 修改次数
- 是否人工审核
## 9. 风格选择页
### 数据来源
```text
GET /api/styles?theme_id=xxx
```
### 交互
- 点击风格卡片选中。
- 点击预览案例跳案例列表并带 style_id。
- 下一步保存风格并进入世界观选择。
## 10. 世界观选择页
### 数据来源
```text
GET /api/worlds?theme_id=xxx&style_id=xxx
```
### 交互
- 用户可多选世界观。
- 选中数量受套餐限制。
- 支持拖拽排序。
- 点击世界可查看世界详情和场景预览。
### 校验
- 少于套餐最小数量,不允许下一步。
- 超过套餐最大数量,弹窗提示升级套餐。
## 11. 场景选择页
### 数据来源
```text
GET /api/worlds/:world_id/scenes
```
### 交互
- 每个世界至少选择 1 个场景。
- 可查看场景案例。
- 高级场景如果套餐不支持,提示升级。
## 12. 照片上传页
### 页面逻辑
根据 life_theme 的 person_schema 渲染上传区域。
双人主题:
- 人物 A 上传区
- 人物 B 上传区
- 双人合照上传区
单人主题:
- 本人照片上传区
家庭主题:
- 可添加家庭成员
- 每个成员独立上传
### 上传接口
```text
POST /api/projects/:id/photos
```
### 前端预检
- 文件大小
- 文件格式
- 图片数量
### 交互提示
必须用示例图告诉用户什么照片合格、什么照片不合格。
## 13. 授权确认页
### 交互
所有必选授权项勾选后,才允许下一步。
### 记录
调用:
```text
POST /api/projects/:id/authorizations
```
## 14. 照片质检页
### 触发
```text
POST /api/projects/:id/photo-check
```
### 显示
每张照片显示:
- 缩略图
- 检测状态
- 分数
- 问题原因
### 操作
- 替换照片
- 忽略 warning 继续
- 重新检测
fail 照片必须替换。
## 15. 定制信息页
### 字段
- 人物姓名
- 纪念日期
- 文案风格
- 一句话誓言
- 特别要求
- 是否显示名字
- 是否显示日期
- 是否允许公开展示
### 提交
调用:
```text
POST /api/projects/:id/custom-info
```
## 16. 创作方案页
### 触发生成
```text
POST /api/projects/:id/generate-plan
```
### 加载方式
轮询或 WebSocket 获取任务进度。
### 展示
- 标题
- 镜头列表
- 旁白
- 字幕
- 世界顺序
- 场景顺序
### 操作
- 确认方案
- 重新生成方案
- 返回修改世界/场景/文案
## 17. 支付确认页
### 显示
- 套餐价格
- 优惠金额
- 应付金额
- 生成内容说明
- 修改次数
### 交互
- 立即支付
- 使用余额
- 返回修改套餐
## 18. 预览确认页
### 展示
- 关键场景预览图
- 水印
- 人物与风格反馈按钮
### 操作
- 满意,确认预览
- 不满意,重新生成
- 返回修改模板
注意:预览重新生成要限制次数。
## 19. 生成进度页
### 数据来源
```text
GET /api/projects/:id/progress
```
或 WebSocket。
### 交互
- 显示进度条
- 显示当前步骤
- 显示已完成任务
- 失败时显示原因和联系客服入口
## 20. 成品确认页
### 展示
- 成品视频播放器
- 图集
- 下载按钮
- 修改按钮
- 公开案例授权按钮
### 操作
- 确认完成:项目 completed
- 申请修改:进入修改申请页
- 下载视频:获取签名链接
- 授权公开:创建 public_case 授权记录
## 21. 修改申请页
### 校验
- 检查剩余修改次数
- 检查修改类型是否属于套餐范围
- 大改提示重新计费
### 提交
```text
POST /api/projects/:id/revisions
```
## 22. 我的项目页
### 列表字段
- 缩略图
- 标题
- 状态
- 创建时间
- 是否可下载
### 操作
- 查看项目
- 继续制作
- 下载作品
- 申请修改
- 删除项目
## 23. 异常状态处理
| 场景 | 处理 |
|---|---|
| 网络失败 | 弹出重试按钮 |
| 登录过期 | 跳登录并保留 redirect |
| 项目状态冲突 | 刷新项目状态 |
| 支付失败 | 返回支付页 |
| 任务失败 | 显示失败原因和联系客服 |
| 无权限 | 跳首页或提示无权限 |
## 24. V3 真人动态视频页面增量
### 24.1 输出模式选择
创建项目时新增输出模式:
```text
高清写真图集
图片纪念视频
动态写真视频
AI 真人动态视频
```
选择 AI 真人动态视频时必须提示:
- 生成时间更长。
- 成本更高。
- 可能需要人工审核。
- 可能需要重试。
- 动作自然度无法 100% 保证。
### 24.2 身份锚点确认
页面展示:
- 原始参考照。
- 身份锚点图。
- 本人相似度评分。
- “像本人 / 不像本人 / 重生”按钮。
未确认锚点,不允许进入真实视频片段生成。
### 24.3 视频片段制作页
展示:
- 镜头列表。
- 动作模板。
- 输入关键帧。
- 输出视频片段。
- 预计成本。
- Provider 名称。
- 生成状态。
- 质检结果。
操作:
- 成本估算。
- 勾选真实视频确认。
- 生成片段。
- 预览片段。
- 重试片段。
- 进入合成。
### 24.4 口型任务,可选
仅高端或用户选择口型时展示:
- 选择片段。
- 选择音频。
- 生成口型。
- 失败回退旁白字幕版。
+533
View File
@@ -0,0 +1,533 @@
# 08_GeekerAdmin后台管理设计
## 1. 文档目标
本文档定义基于 Geeker-Admin 二开的后台管理系统菜单、页面字段、操作按钮、权限和审核流程。
## 2. 后台角色
| 角色 | 权限 |
|---|---|
| 超级管理员 | 全部权限,包括系统配置和 Provider 密钥 |
| 管理员 | 用户、订单、项目、任务、模板管理 |
| 运营 | 案例、模板、项目审核、修改申请 |
| 审核员 | 照片审核、成品审核、内容审核 |
| 财务 | 订单、支付、退款、成本报表 |
## 3. 菜单结构
```text
仪表盘
用户管理
项目管理
订单管理
生成任务
素材管理
模板中心
人生主题
套餐管理
视觉风格
世界观模板
场景模板
镜头模板
文案模板
音乐素材
案例管理
修改申请
授权与隐私
AI Provider
日志中心
系统配置
```
## 4. 仪表盘
### 指标卡片
- 今日订单数
- 今日收入
- 今日生成项目数
- 今日完成项目数
- 待审核项目数
- 失败任务数
- AI 成本
- 毛利估算
### 图表
- 订单趋势
- 成本趋势
- 热门主题排行
- 热门世界排行
- 失败任务类型排行
## 5. 用户管理
### 表格字段
- 用户 ID
- 昵称
- 手机号
- 微信 openid
- 注册时间
- 项目数
- 订单数
- 消费金额
- 状态
### 操作
- 查看详情
- 禁用用户
- 恢复用户
- 查看项目
- 查看订单
- 查看授权记录
## 6. 项目管理
### 筛选
- 项目状态
- 人生主题
- 套餐
- 风格
- 用户手机号
- 创建时间
- 是否公开授权
### 表格字段
- 项目 ID
- 用户
- 标题
- 主题
- 套餐
- 风格
- 世界数量
- 当前状态
- 支付状态
- 创建时间
- 完成时间
### 操作
- 查看详情
- 查看素材
- 查看任务
- 手动重试
- 转人工
- 标记异常
- 强制完成
- 取消项目
### 项目详情页
Tab
- 基本信息
- 用户照片
- 人物档案
- 世界/场景
- 镜头计划
- 生成素材
- 任务记录
- 订单信息
- 修改记录
- 授权记录
## 7. 订单管理
### 字段
- 订单 ID
- 用户
- 项目 ID
- 套餐
- 金额
- 支付方式
- 支付状态
- 退款状态
- 创建时间
- 支付时间
### 操作
- 查看订单
- 手动标记支付
- 创建退款记录
- 查看项目
- 导出订单
## 8. 生成任务管理
### 筛选
- 任务类型
- 状态
- Provider
- 项目 ID
- 创建时间
### 字段
- 任务 ID
- 项目 ID
- 类型
- Provider
- 状态
- 重试次数
- 成本
- 耗时
- 错误码
- 创建时间
### 操作
- 查看输入
- 查看输出
- 重试
- 终止
- 跳过
- 转人工
- 查看 Provider 日志
## 9. 素材管理
### 字段
- 素材 ID
- 项目 ID
- 用户
- 类型
- 缩略图
- 尺寸
- 文件大小
- 可见性
- 创建时间
### 操作
- 预览
- 下载
- 生成签名链接
- 删除
- 标记公开案例资源
## 10. 模板中心
### 10.1 人生主题管理
字段:
- 编码
- 名称
- 封面
- 人物结构规则
- 是否启用
- 排序
操作:新增、编辑、启用、禁用、排序。
### 10.2 套餐管理
字段:
- 套餐编码
- 套餐名称
- 价格
- 世界数量
- 场景数量
- 图片数量
- 视频时长
- 修改次数
- 是否人工审核
- 是否支持高级动态
### 10.3 视觉风格管理
字段:
- 风格编码
- 名称
- 预览图
- 风格 Prompt
- 禁止项
- 支持主题
- 是否启用
### 10.4 世界观模板管理
字段:
- 世界编码
- 名称
- 分类
- 封面
- Prompt Base
- 服装规则
- 场景规则
- 禁止项
- 支持主题
- 支持风格
- 是否高级
操作:
- 新增世界
- 编辑世界
- 配置 Prompt
- 测试生成
- 启用/禁用
### 10.5 场景模板管理
字段:
- 场景编码
- 所属世界
- 名称
- 封面
- 场景 Prompt
- 构图规则
- 光影规则
- 特效类型
- 推荐镜头数
### 10.6 镜头模板管理
字段:
- 镜头编码
- 所属场景
- 镜头类型
- 视角
- 构图
- Prompt 规则
- 默认时长
- 特效类型
### 10.7 文案模板管理
字段:
- 主题
- 文案风格
- 文案类型
- 模板内容
- 变量
- 状态
文案类型:
- 片头
- 旁白
- 字幕
- 片尾
- 誓言
- 祝福语
### 10.8 音乐素材管理
字段:
- 音乐名称
- 情绪
- 文件
- 时长
- 授权类型
- 来源
- 使用范围
必须记录版权来源。
## 11. 案例管理
### 字段
- 案例 ID
- 来源项目
- 标题
- 封面
- 视频
- 主题
- 风格
- 世界
- 是否首页推荐
- 授权记录
- 状态
### 操作
- 从项目生成案例
- 编辑标题和封面
- 设置推荐
- 上架/下架
- 排序
规则:无公开授权记录,不允许上架。
## 12. 修改申请管理
### 字段
- 修改 ID
- 项目 ID
- 用户
- 修改类型
- 修改内容
- 剩余次数
- 状态
- 处理人
- 创建时间
### 操作
- 接受修改
- 拒绝修改
- 转人工
- 创建重做任务
- 标记完成
## 13. 授权与隐私管理
管理:
- 照片使用授权
- 公开案例授权
- 未成年人授权
- 隐私协议确认
- 用户删除申请
操作:
- 查看授权详情
- 导出授权记录
- 处理删除申请
## 14. AI Provider 管理
字段:
- Provider 类型
- 名称
- 模型名
- API Base
- 密钥引用
- 优先级
- 质量等级
- 限流配置
- 成本规则
- 备用 Provider
- 状态
操作:
- 新增 Provider
- 编辑 Provider
- 测试连接
- 启用/禁用
- 设置优先级
密钥不允许明文展示。
## 15. 日志中心
日志类型:
- 登录日志
- 操作日志
- AI 调用日志
- 支付日志
- 下载日志
- 错误日志
## 16. 系统配置
配置项:
- 上传文件大小限制
- 下载链接有效期
- 默认重试次数
- 每用户每日预览次数
- 项目保留天数
- 是否开启人工审核
- 是否开启案例授权
- 水印配置
- 成本告警阈值
## 17. V3 真人动态视频后台增量
### 17.1 身份锚点管理
项目详情新增:
- 人物参考照。
- 身份锚点图。
- 用户确认状态。
- 管理员确认状态。
- 本人相似度评分。
- 重生 / 标记通过 / 标记拒绝。
### 17.2 视频片段管理
项目详情新增视频片段列表:
- 镜头号。
- 动作模板。
- Provider。
- 输入关键帧。
- 输出视频。
- 片段时长。
- 预计成本 / 实际成本。
- 状态。
- 质检分。
- 重试次数。
操作:
- 预览片段。
- 重试片段。
- 替换片段。
- 执行质检。
- 转人工。
### 17.3 动作模板管理
后台新增动作模板菜单:
- 动作名称。
- motion_type。
- 支持主题。
- 支持世界。
- Prompt 规则。
- 默认时长。
- 难度等级。
- 成本等级。
### 17.4 视频 Provider 管理
AI Provider 管理需支持:
- MiniMax Hailuo。
- 阿里 Wan。
- Vidu。
- Seedance / 即梦。
- Kling。
- Runway。
- MockVideoProvider。
真实视频 Provider 默认禁用;后台测试真实视频 Provider 也应禁用或必须二次确认,避免误扣费。
### 17.5 V3 审核项
审核页新增:
- 是否像本人。
- 是否变脸。
- 是否男女混脸。
- 是否年龄变化过大。
- 动作是否自然。
- 表情是否怪异。
- 是否有不合适姿势。
- 是否适合公开案例。
+518
View File
@@ -0,0 +1,518 @@
# 09_AI生成流水线_Provider抽象设计
## 1. 文档目标
本文档定义系统 B 的 AI 核心流水线、Provider 抽象、任务输入输出、质量控制和模型可替换策略。
## 2. 核心原则
1. 不把任何模型写死到业务代码。
2. 所有 AI 能力通过 Provider 调用。
3. 高成本任务必须检查订单/额度。
4. 所有 AI 调用必须记录日志和成本。
5. 任务失败可重试,可切换备用 Provider。
6. 预览和正式生成分离。
## 3. Provider 类型
```text
TextProvider:文案、创作方案、Prompt 生成
ImageProvider:预览图、正式图、局部重绘
VideoProvider:图生视频、关键动态镜头
VoiceProvider:旁白、誓言、祝福语 TTS
ModerationProvider:文本/图片审核
FaceCheckProvider:人脸检测、角色归属、清晰度
QualityCheckProvider:图片质量、人像一致性、视频质检
```
V3 真人动态视频新增 Provider
```text
FaceIdentityProvider:真人身份档案、身份特征摘要、身份锚点建议
FaceConsistencyProvider:本人相似度、人脸一致性、男女混脸检测
MotionPortraitProvider:动态写真,眨眼、微笑、头发衣服轻微动
LipSyncProvider:口型同步、誓言口播、祝福语口播
```
VideoProvider 在 V3 中不只用于“关键动态镜头”,还要支持:
```text
image_to_video:首帧图生视频
reference_to_video:多参考图保持人物一致性
start_end_to_video:首尾帧视频
speech_to_video / lipsync:带音频或口型的视频任务,可选
```
## 4. Provider 通用配置
字段:
```text
provider_type
provider_name
model_name
api_base
api_key_ref
priority
quality_level
rate_limit
cost_rule
fallback_provider_id
status
```
## 5. AI 流水线总览
```text
用户上传照片
→ 原图去 EXIF
→ 照片质检
→ 人物档案生成
→ 用户填写定制信息
→ 创作方案生成
→ 镜头计划生成
→ Prompt 分层组装
→ 预览图生成
→ 用户确认预览
→ 正式图生成
→ 图片质检
→ 旁白/字幕生成
→ 视频合成
→ 最终质检
→ 人工审核
→ 交付
```
## 5.1 V3 真人动态视频流水线
```text
用户上传照片
→ 授权确认
→ 原图去 EXIF / 私有存储
→ 照片质检
→ FaceIdentityProvider 生成人物身份档案
→ 身份锚点图生成
→ FaceConsistencyProvider 评分
→ 用户确认像不像
→ 创作方案 / 镜头计划
→ 关键帧生成
→ 成本预估和额度冻结
→ VideoProvider 生成真人动态片段
→ 视频片段质检
→ VoiceProvider 生成旁白 / 誓言
→ LipSyncProvider 口型同步,可选
→ FFmpeg 合成成片
→ 最终质检
→ 人工审核
→ 用户确认
→ 交付
```
关键规则:
- 未完成授权,不允许照片处理和生成。
- 未确认身份锚点,不允许正式动态视频生成。
- 真实视频 Provider 默认关闭,必须运营启用、用户确认和成本通过后才调用。
- 真实 Provider 失败不能回落 mock 假成功。
- 每个视频片段必须可单独预览、重试、替换、质检和计费。
## 6. 照片处理流程
### 6.1 输入
- 用户原始照片
- 人物角色:person_a/person_b/self/child/family_member
- 项目主题
### 6.2 处理
```text
保存原图
去除 EXIF
生成缩略图
检测人脸数量
检测清晰度
检测遮挡
检测角度
检测重复图片
检测是否多人混入
检测过度美颜风险
```
### 6.3 输出
```json
{
"asset_id": 1001,
"quality_status": "pass",
"quality_score": 86.5,
"face_count": 1,
"issues": []
}
```
## 7. 人物档案生成
### 7.1 目标
将多张参考照片整理成人物档案,供后续 Prompt 和一致性控制使用。
### 7.2 输出字段
```text
role
name
gender_label
age_group
appearance_summary
face_features
hair_features
temperament
reference_asset_ids
anchor_asset_id
avoid_changes
quality_score
```
### 7.3 示例
```text
person_a:30岁左右男性,短黑发,脸型偏长,五官清晰,气质沉稳。生成时保持发型、脸型和年龄感,不要变成欧美脸,不要明显年轻化或老化。
```
## 8. 创作方案生成
### 8.1 输入
```text
人生主题
套餐
视觉风格
世界观列表
场景列表
人物档案
用户定制信息
输出类型
```
### 8.2 输出
```text
作品标题
作品简介
世界顺序
场景顺序
镜头计划
旁白草稿
字幕草稿
片头文案
片尾文案
总时长
预计图片数
预计视频片段数
```
### 8.3 生成约束
- 不要生成用户未选择的世界。
- 不要改变人物关系。
- 文案不要过长。
- 如果是父母银婚金婚,语气要庄重温馨。
- 如果是情侣写真,可以更浪漫轻盈。
## 9. Prompt 分层组装
Prompt 由以下层组成:
```text
人物层
关系层
人生主题层
世界观层
场景层
镜头层
视觉风格层
质量层
限制层
```
### 9.1 人物层
来自 person_profile。
### 9.2 世界观层
来自 world_template。
### 9.3 场景层
来自 scene_template。
### 9.4 镜头层
来自 shot_template。
### 9.5 质量层
根据套餐决定:
- high quality
- commercial portrait quality
- detailed lighting
- clean composition
### 9.6 限制层
必须包含:
```text
不要多出无关人物
不要文字乱入
不要明显畸形手
不要改变人物年龄
不要男女混脸
不要改变人物核心五官
```
## 10. 预览图生成
### 10.1 目标
让用户低成本确认:
- 人物像不像
- 风格是否满意
- 世界方向是否正确
### 10.2 规则
- 数量少
- 加水印
- 低清或中清
- 只生成关键场景
- 预览重生次数受限
## 11. 正式图生成
### 11.1 输入
- 确认后的镜头计划
- 人物档案
- 场景模板
- 风格模板
- 预览锚点图,可选
### 11.2 规则
- 使用高质量 Provider 配置
- 每张图记录 Prompt
- 每张图记录 Provider
- 每张图记录版本
- 失败可重试
- 多次失败转人工
## 12. 图片质检
自动检查:
```text
人脸是否崩坏
人物是否不像本人
男女是否混脸
是否多出第三人
手部是否异常
服装是否跑偏
场景是否错误
是否有乱码文字
是否违规
```
输出:
```text
pass
warning
fail
```
处理:
- pass:进入视频合成
- warning:人工复核
- fail:自动重生
## 13. TTS 和字幕生成
### 13.1 文案来源
- 片头
- 旁白
- 誓言
- 祝福语
- 片尾
### 13.2 字幕规则
- 每屏字数控制
- 不遮挡人物脸部
- 字幕和旁白时间对齐
- 支持有字幕/无字幕版本
## 14. 视频合成
### 14.1 输入
```text
final_images
shot_plans
subtitle_srt
voice_audio
bgm_audio
video_template
```
### 14.2 FFmpeg 处理
- 图片转视频片段
- 推拉运镜
- 转场
- 字幕烧录
- 音频混合
- 片头片尾
- 封面生成
### 14.3 视频等级
```text
L1:静态图片 + 推拉运镜
L2:图片 + 简单光效/花瓣/粒子
L3:关键镜头图生视频
L4:高级动态视频
```
第一阶段建议:L1 + L2 为主。
## 15. 最终质检
检查:
- 视频可播放
- 音画同步
- 字幕不出框
- BGM 音量合适
- 旁白清晰
- 分辨率正确
- 文件大小合理
- 无违规内容
## 16. Provider 失败切换
策略:
```text
主 Provider 失败
→ 记录错误
→ 判断是否可重试
→ 重试 N 次
→ 切换 fallback Provider
→ 仍失败则 manual_required
```
## 17. 成本记录
每次 AI 调用记录:
```text
project_id
task_id
provider_id
model_name
input_size
output_size
estimated_cost
actual_cost
latency_ms
status
```
## 18. 需要人工介入的场景
- 人像连续不像
- 多次生成崩坏
- 视频合成失败
- 用户申请中改/大改
- 审核警告
- 高端定制项目
## 19. V3 VideoProvider 策略
系统 B V3 优先测试图生视频、参考图生视频和人物动作视频,不建议直接依赖文生视频。
推荐 Provider 预设:
| Provider | 适合用途 | 默认状态 |
|---|---|---|
| MiniMax Hailuo 2.3 Fast | 低成本快速小样、真人动效验证 | 禁用 |
| MiniMax Hailuo 2.3 | 质量更高的小样 / 正式片段 | 禁用 |
| Alibaba Wan2.6 I2V Flash | 快速对比稳定性和成本 | 禁用 |
| Alibaba Wan2.6 I2V | 标准质量图生视频 | 禁用 |
| Vidu Q3 Turbo Reference | 多参考图人物一致性、音画能力 | 禁用 |
| Vidu Q3 Pro | 高质量参考图生视频 | 禁用 |
| Jimeng / Seedance | 中文短剧感、真人镜头语言 | 禁用 |
| Kling / Runway | 备用对比和部分高质量场景 | 禁用 |
| MockVideoProvider | 流程演练和不扣费测试 | 启用 |
每个 Provider 配置至少包含:
```text
provider_name
model_name
mode: image2video / reference2video / start_end2video / lipsync
resolution
max_duration_per_clip
cost_per_second 或 cost_per_clip
supports_reference_image
supports_start_end_frame
supports_audio
supports_lipsync
supports_character_reference
retry_limit
priority
fallback_provider
status
```
## 20. V3 视频片段质检
每个真实视频片段必须检查:
- 是否像本人。
- 是否男女混脸。
- 是否年龄变化过大。
- 是否多出第三人。
- 动作是否自然。
- 表情是否怪异。
- 手部和身体是否畸形。
- 是否有不合适姿势。
- 是否有水印、乱码、logo。
- 是否适合公开案例。
质检结果:
```text
passed:可进入合成
needs_retry:建议重试
manual_review:转人工
rejected:不可用
```
## 21. V3 口型策略
口型属于高级能力,不作为基础交付强依赖。
规则:
- 只有高端真人纪念片或用户选择口型套餐时启用。
- 口型失败时允许回退为旁白字幕版本。
- 口型任务必须单独记录 Provider、成本、状态和错误。
- 涉及未成年人时,口型内容必须更严格审核。
+371
View File
@@ -0,0 +1,371 @@
# 10_Prompt模板_世界观模板规范
## 1. 文档目标
本文档定义系统 B 的 Prompt 结构、世界观模板、场景模板、镜头模板和风格模板规范,保证生成效果稳定、可维护、可复用。
V3 增量:系统 B 支持 AI 真人动态视频后,Prompt 必须从“生成好看的写真图”升级为“保持真实用户身份并生成自然动作”。真人动态视频 Prompt 必须明确身份保持、年龄保持、动作边界和负面约束。
## 2. Prompt 总体结构
最终 Prompt 由系统拼接,不建议让用户自由输入完全控制。
```text
[人物层]
[关系层]
[人生主题层]
[世界观层]
[场景层]
[镜头层]
[视觉风格层]
[光影与构图层]
[质量层]
[限制层]
```
## 3. 人物层模板
```text
根据参考照片保留人物核心五官、脸型、年龄感和气质。
人物A{person_a_summary}
人物B{person_b_summary}
不要改变人物的核心外貌,不要使人物明显年轻化或老化。
```
## 4. 关系层模板
婚礼/恋爱:
```text
两人是亲密情侣/夫妻关系,画面应体现自然、温柔、信任、纪念感。
```
银婚金婚:
```text
两人是多年相伴的夫妻,画面应体现温暖、庄重、岁月感和纪念价值。
```
个人形象:
```text
单人形象定制,突出人物气质和主题世界观,不要出现无关人物。
```
## 5. 风格模板
### 5.1 韩漫风 korean_comic
```text
高质量韩漫风格,精致人物五官,干净线条,柔和光影,浪漫氛围,现代韩漫审美,画面清晰,人物面部稳定。
```
禁用:
```text
低质量,脸部变形,五官漂移,过度夸张,杂乱背景,错误文字,第三人乱入。
```
### 5.2 半写实写真风 semi_realistic
```text
半写实精修写真风,保留真人特征,电影感光影,高级质感,真实但略带艺术化,适合商业纪念照。
```
### 5.3 国风插画 chinese_illustration
```text
国风插画风,东方美学,细腻服饰纹理,柔和色彩,古典构图,雅致氛围,适合古风和仙侠主题。
```
### 5.4 电影写实 cinematic_realistic
```text
电影写实风,真实摄影质感,电影级灯光,真实布料与场景,人物保留参考照片特征,高端纪念片风格。
```
注意:电影写实最容易暴露人脸不一致,应放高端套餐并人工审核。
## 6. 世界观模板字段规范
每个世界观必须包含:
```text
world_code
world_name
category
description
prompt_base
costume_rules
scene_rules
color_rules
lighting_rules
negative_rules
supported_themes
supported_styles
```
## 7. 历史朝代系模板示例
### 7.1 明制婚礼 ming_dynasty
prompt_base
```text
明代中式婚礼世界,庄重华丽,传统中式礼制,大红喜庆色调,精致木质建筑,红灯笼,红绸,喜堂,东方古典美学。
```
costume_rules
```text
新郎穿明制婚服,端庄正式。新娘穿明制凤冠霞帔或传统中式婚服,华丽但不过度夸张。
```
scene_rules
```text
场景可包含王府喜堂、红绸长廊、花轿、庭院、洞房花烛、夜宴烟花。
```
negative_rules
```text
不要现代西式婚纱,不要清代旗装,不要民国服饰,不要混入其它朝代元素。
```
### 7.2 唐朝婚礼 tang_dynasty
prompt_base
```text
盛唐婚礼世界,华丽、大气、富贵,宫廷感,暖金色调,开放盛大的东方审美。
```
costume_rules
```text
新郎新娘穿唐风华丽婚服,服饰层次丰富,色彩明艳,发饰精致。
```
## 8. 仙侠修真系模板示例
### 8.1 仙宫大婚 xianxia_palace
prompt_base
```text
仙侠世界的云海仙宫婚礼,漂浮宫殿,云雾缭绕,仙鹤、灵光、花瓣,梦幻而庄重。
```
costume_rules
```text
人物穿仙侠婚服,轻盈飘逸,带有东方仙气,不要现代服装。
```
scene_rules
```text
云海仙宫、桃花仙境、宗门大殿、仙舟、星河天台、凤凰环绕礼台。
```
negative_rules
```text
不要西方魔法袍,不要机械科幻元素,不要恐怖暗黑风。
```
### 8.2 龙宫婚礼 dragon_palace
```text
海底龙宫婚礼,水晶宫殿,蓝金色调,水下光影,东方龙纹装饰,神秘华丽。
```
## 9. 未来科技系模板示例
### 9.1 星际婚礼 space_wedding
prompt_base
```text
未来星际婚礼,宇宙星空背景,星舰大厅,银河观景台,全息光效,高级科技感,浪漫与未来感结合。
```
costume_rules
```text
未来礼服,干净利落,高级材质,带少量光效装饰,不要过度机甲化。
```
negative_rules
```text
不要古代服饰,不要脏乱废土,不要恐怖外星元素。
```
## 10. 趣味脑洞系模板示例
### 10.1 恐龙时代 dinosaur_age
prompt_base
```text
远古恐龙时代的浪漫纪念场景,史前森林,巨大恐龙在远处温和出现,金色夕阳,奇幻浪漫,不恐怖。
```
rules
```text
恐龙只作为背景氛围,不攻击人物。画面应浪漫、奇妙、适合纪念,不要血腥。
```
### 10.2 海底王国 underwater_kingdom
```text
海底王国,水晶宫殿,发光珊瑚,蓝色梦幻光影,鱼群环绕,浪漫神秘。
```
## 11. 场景模板规范
场景模板必须包含:
```text
scene_code
scene_name
scene_prompt
composition_rules
lighting_rules
effect_type
recommended_shot_count
negative_rules
```
示例:明朝王府喜堂
```text
scene_prompt:传统中式喜堂,红色帷幔,木质梁柱,喜字装饰,红灯笼,两位新人站在中央。
composition_rules:双人正面构图,人物居中,背景对称,庄重仪式感。
lighting_rules:暖色室内光,柔和但喜庆。
effect_typeslow_zoom_in
```
## 12. 镜头模板规范
镜头类型:
```text
双人正面主图
牵手远景
对视特写
仪式镜头
氛围镜头
单人特写
家庭合照
儿童成长镜头
```
示例:对视特写
```text
两位主角近景对视,表情温柔自然,背景虚化,突出眼神和情感,不要夸张表情。
```
## 13. 通用负面 Prompt
```text
低质量,模糊,五官变形,脸部崩坏,年龄漂移,男女混脸,第三人乱入,多余手指,畸形手,文字乱码,水印,logo,现代物品乱入,服装风格错误,背景杂乱,恐怖,血腥,色情,侮辱性内容。
```
## 14. Prompt 生成规则
1. 用户自由输入只能作为补充要求。
2. 用户输入不得覆盖安全限制。
3. 历史朝代模板要严格避免混搭。
4. 单个 Prompt 不要过长到失控。
5. 每次生成要保存 Prompt 和版本号。
6. 同一项目内同一人物描述必须一致。
7. 同一世界内服装和色调尽量保持一致。
## 15. 模板测试标准
每个新世界模板上线前,至少测试:
- 单人图
- 双人图
- 远景
- 特写
- 同一人物多场景一致性
- 与 2 种不同视觉风格组合
- 是否容易出现违规或错题
## 16. V3 真人动态视频 Prompt 模板
### 16.1 中文主模板
```text
真实短剧风格,保持参考照片中人物的五官、脸型、年龄感和气质,不能换脸,不能变成其他人。
人物穿着 {theme_costume},在 {scene_description} 中 {motion_description}。
镜头竖屏 9:16,电影感光影,真实表情,动作自然,适合抖音短视频纪念片。
人物身份必须与参考照片一致,保留性别、年龄段、脸型、发型和整体气质。
```
### 16.2 英文辅助词
```text
identity preservation, same person as reference, natural facial expression,
realistic body movement, photorealistic cinematic short video,
vertical 9:16, natural camera movement, no identity change
```
### 16.3 动作模板片段
```text
自然微笑:the person smiles naturally with subtle eye movement, gentle expression.
转头:the person slowly turns head toward the camera, natural neck and shoulder movement.
牵手:the couple gently holds hands and looks at each other, warm and respectful.
行礼:the couple performs a gentle ceremonial bow, stable body posture, respectful mood.
拥抱:the couple gives a gentle hug, natural arms and calm facial expression.
```
### 16.4 真人动态负面约束
```text
不要改变人物身份
不要变年轻太多
不要变成欧美脸
不要多出第三人
不要脸部扭曲
不要手部异常
不要表情僵硬
不要恐怖感
不要过度美颜
不要低俗姿势
不要夸张肢体
不要改变性别
不要男女混脸
不要生成未授权名人脸
```
### 16.5 未成年人额外约束
```text
健康、温馨、日常、家庭纪念风格。
禁止成人化服装、成人化姿势、暧昧表达、危险动作和任何不适合儿童的内容。
```
## 17. V3 Prompt 保存要求
每个关键帧和视频片段必须保存:
```text
prompt_text
negative_prompt
person_profile_version
identity_anchor_id
motion_template_id
provider_code
model_name
seed,可选
```
这样后续才能复现、重试、对比 Provider 和排查“为什么不像本人”。
+358
View File
@@ -0,0 +1,358 @@
# 11_订单支付_额度_成本控制设计
## 1. 文档目标
本文档定义系统 B 的订单、支付、额度、退款、修改计费和 AI 成本控制。由于系统使用高质量模型,成本控制是商业落地的核心。
## 2. 核心原则
1. 高成本正式生成前必须支付或冻结额度。
2. 预览生成必须限制次数。
3. 失败重试不重复扣用户额度。
4. 用户主动大改需要重新计费。
5. 每个任务必须记录预估成本和实际成本。
6. 后台必须能看到项目毛利。
## 3. 套餐计费
### 3.1 标准图集版
包含:
- 1 个主题
- 1 个世界
- 3 个场景
- 6-12 张图
- 1 次小改
### 3.2 短视频版
包含:
- 1-3 个世界
- 30-60 秒视频
- 12-24 张图
- 字幕、BGM
- 1 次小改
### 3.3 多世界纪念片
包含:
- 5-10 个世界
- 1-3 分钟视频
- 25-60 张图
- 旁白、字幕、片头片尾
- 2 次修改
### 3.4 高端定制版
按人工报价,支持:
- 自由主题
- 专属文案
- 高级动态
- 人工精修
- 多轮修改
### 3.5 V3 动态写真版
包含:
- 1-3 个世界
- 6-18 张写真图
- 3-8 个轻动态片段
- 眨眼、微笑、背景动效、花瓣光效等轻动作
- 30-60 秒视频
- 不默认启用完整真人短剧动作
### 3.6 V3 AI 真人动态视频版
包含:
- 1-3 个世界
- 4-10 个真人动态镜头
- 每个镜头 3-6 秒
- 默认 720P
- 人物表情、转头、牵手、行礼、慢走等动作
- 片段质检
- 真实视频生成前必须二次确认成本
### 3.7 V3 高端真人纪念片
按人工报价,支持:
- 多世界
- 多场景
- 关键镜头真人动态
- 口型 / 誓言 / 旁白
- 人工精修
- 人工审核
- 多轮修改
## 4. 订单状态
```text
pending:待支付
paid:已支付
cancelled:已取消
failed:支付失败
refunding:退款中
refunded:已退款
closed:已关闭
```
## 5. 支付流程
```text
用户选择套餐
→ 创建订单
→ 用户支付
→ 支付回调
→ 订单标记 paid
→ 项目标记 payment_paid
→ 开放预览/正式生成
```
## 6. 预览策略
推荐策略:
```text
登录用户每天可免费生成 1 次低清水印预览。
超过免费次数需支付小额预览费或先购买套餐。
正式高清生成必须支付。
```
预览规则:
- 加水印
- 低清或中清
- 数量少
- 不提供无水印下载
- 预览图仅用于确认人物和风格
## 7. 额度模型
每个订单生成以下额度:
```text
preview_quota:预览次数
image_quota:正式图片生成额度
video_quota:视频生成额度
revision_quota:修改次数
advanced_video_quota:高级动态镜头额度
```
## 8. 额度扣减规则
### 8.1 正常成功
任务成功后扣减对应额度。
### 8.2 AI 失败
如果 Provider 失败、系统错误、超时导致未产生成果,不扣用户额度。
### 8.3 用户不满意
如果成果符合套餐说明但用户主观不满意,按修改次数或重新生成次数扣减。
### 8.4 大改
以下属于大改,需重新计费:
- 更换整体风格
- 更换全部世界观
- 重建人物档案
- 整条视频重做
- 超出套餐范围的场景替换
## 9. 成本记录
每个任务记录:
```text
task_id
project_id
provider_id
task_type
estimated_cost_cent
actual_cost_cent
input_size
output_size
latency_ms
status
```
每个项目汇总:
```text
订单收入
AI 文本成本
AI 图片成本
AI 视频成本
TTS 成本
存储成本估算
人工成本估算
总成本
毛利
```
## 10. 成本控制策略
### 10.1 预览和正式分离
预览阶段:
- 少量生成
- 水印
- 低清
- 限制次数
正式阶段:
- 高质量
- 无水印
- 完整生成
### 10.2 重试限制
每个任务默认:
```text
max_retry = 2 或 3
```
多次失败后转人工,不无限重试。
### 10.3 高级动态限制
AI 视频成本高,应按套餐限制:
- 标准图集:不支持
- 短视频:可选 0-1 个
- 多世界纪念片:2-5 个
- 高端定制:按报价
### 10.5 V3 真人动态视频成本规则
真人动态视频成本按以下维度估算:
```text
视频片段秒数
视频 Provider
模型
分辨率
候选数量
重试次数
口型任务
人工审核
```
后台配置项:
```text
max_video_seconds_per_project
max_clip_duration
max_clip_candidates
max_video_retry_per_clip
default_video_resolution
max_cost_per_project
max_cost_per_call
daily_cost_limit
```
示例:
```text
AI 真人动态视频 40 秒:
8 个镜头
每个 5 秒
每镜头最多 1 次重试
默认 720P
```
真实视频 Provider 必须满足:
- 默认禁用。
- 运营手动启用。
- 填写 `price_per_second``price_per_clip`
- 设置单次成本上限和当日成本上限。
- 用户端展示预计费用。
- 用户确认后才执行。
- Provider 失败不回落 mock 假成功。
### 10.6 V3 片段级成本展示
后台和用户端应展示:
- 每个片段预计成本。
- 每个片段实际成本。
- 每个项目视频总成本。
- 每个用户累计成本。
- 每个 Provider 今日成本。
- 重试造成的额外成本。
### 10.4 复用素材
同一项目中可复用:
- 人物锚点图
- 同一世界服装锚点
- 背景图
- 片头片尾模板
## 11. 退款规则
建议规则:
| 阶段 | 退款建议 |
|---|---|
| 未开始生成 | 可全额退款 |
| 已生成预览 | 可部分退款 |
| 正式生成中 | 一般不退款,可协商 |
| 已交付成品 | 不支持退款,支持套餐内修改 |
| 系统失败无法交付 | 可退款或补偿额度 |
## 12. 修改计费规则
### 小改
套餐内可用修改次数。
### 中改
消耗 1 次修改,必要时消耗部分生成额度。
### 大改
重新报价或重新下单。
## 13. 后台成本看板
指标:
- 今日收入
- 今日 AI 成本
- 今日毛利
- 项目平均成本
- 图片平均成本
- 视频平均成本
- Provider 成本排行
- 高成本项目提醒
## 14. 成本告警
触发条件:
- 单项目成本超过套餐价格的设定比例
- Provider 日成本超过阈值
- 失败重试成本异常
- 用户短时间大量生成预览
处理:
- 暂停项目自动生成
- 通知管理员
- 转人工审核
@@ -0,0 +1,337 @@
# 12_任务队列_错误重试_稳定性设计
## 1. 文档目标
本文档定义系统 B 的任务队列、状态机、幂等、重试、错误码、恢复机制和并发控制。
## 2. 为什么必须队列化
系统 B 的生成链路长且耗时:
```text
照片检测
人物档案
方案生成
预览图
正式图
图片质检
TTS
字幕
视频合成
最终质检
人工审核
```
如果同步执行,容易导致:
- 请求超时
- 用户重复点击
- 服务阻塞
- 失败无法恢复
- 成本无法追踪
## 3. 队列划分
```text
photo_check_queue:照片检测
text_queue:方案、文案、Prompt
image_queue:预览图、正式图
video_queueAI 图生视频
voice_queueTTS
audio_queueBGM 处理
ffmpeg_queue:视频合成
qc_queue:质量检测
cleanup_queue:文件清理
notification_queue:通知
```
## 4. 任务状态
```text
pending:等待执行
running:执行中
success:成功
failed:失败
retrying:重试中
cancelled:取消
manual_required:需要人工处理
```
## 5. 任务字段
每个任务必须有:
```text
task_id
project_id
task_type
provider_id
status
input_json
input_hash
output_asset_id
provider_request_id
retry_count
max_retry
cost_estimate
cost_actual
error_code
error_message
created_at
started_at
finished_at
```
## 6. 幂等设计
幂等 key
```text
project_id + task_type + input_hash
```
规则:
- 如果已有成功任务,直接返回成功结果。
- 如果已有运行任务,返回当前任务状态。
- 如果已有失败任务,按重试规则处理。
- 同一请求不能重复创建多个高成本任务。
## 7. 项目级锁
某些任务必须串行:
- 创作方案生成
- 视频合成
- 最终交付
使用 Redis lock
```text
lock:project:{project_id}:workflow
```
避免并发触发导致状态混乱。
## 8. 重试策略
默认:
```text
max_retry = 3
backoff = exponential
```
例如:
```text
第 1 次失败:30 秒后重试
第 2 次失败:2 分钟后重试
第 3 次失败:5 分钟后重试
```
不可重试错误:
- 用户照片不合格
- 余额不足
- 授权未确认
- 内容审核不通过
- 套餐限制冲突
可重试错误:
- Provider 超时
- 网络错误
- 速率限制
- 临时服务异常
- FFmpeg 临时失败
## 9. 失败转人工
满足任一条件转人工:
- 同一任务连续失败超过 max_retry
- 图片质检连续失败
- 人像一致性评分过低
- 视频合成失败
- 审核 warning
- 高端定制项目
状态:
```text
manual_required
```
## 10. 并发限制
### 用户级
```text
每个用户最多同时 1 个正式生成项目
```
### 项目级
```text
每个项目最多同时 N 个图片任务
视频合成任务只能 1 个
```
### Provider 级
```text
按 Provider 设置 QPS 和并发数
```
## 11. 队列优先级
优先级建议:
1. 高端定制项目
2. 已支付正式生成
3. 预览生成
4. 免费预览
5. 清理任务
## 12. 错误码设计
| 错误码 | 含义 |
|---|---|
| TASK_TIMEOUT | 任务超时 |
| PROVIDER_TIMEOUT | Provider 超时 |
| PROVIDER_RATE_LIMIT | Provider 限流 |
| PROVIDER_ERROR | Provider 错误 |
| INPUT_INVALID | 输入参数错误 |
| PHOTO_QUALITY_FAIL | 照片质量不合格 |
| PAYMENT_REQUIRED | 需要支付 |
| QUOTA_NOT_ENOUGH | 额度不足 |
| MODERATION_REJECTED | 审核不通过 |
| FFMPEG_FAILED | 视频合成失败 |
| STORAGE_FAILED | 存储失败 |
| UNKNOWN_ERROR | 未知错误 |
## 13. 任务恢复
服务重启后:
1. 扫描 running 超时任务。
2. 判断是否有 Provider request_id。
3. 查询 Provider 状态,能恢复则恢复。
4. 无法恢复则标记 failed 并按规则重试。
## 14. 状态一致性
项目状态由 WorkflowService 统一更新。不要让 Worker 随意改最终状态。
Worker 只上报:
```text
task success/failed
output asset
progress
error
```
WorkflowService 根据任务完成情况推进项目状态。
## 15. 防重复点击
前端:按钮 loading,防抖。
后端:幂等 key + 状态校验。
例如:
- 已在 preview_generating,不允许再次 generate-preview。
- 已 payment_paid,不允许重复创建同一套餐订单。
## 16. 任务超时设置
建议:
```text
photo_check2 分钟
text_generate3 分钟
image_generate10 分钟
video_generate30 分钟
voice_generate5 分钟
ffmpeg_render30 分钟
final_qc10 分钟
```
## 17. 告警
触发告警:
- 失败任务数超过阈值
- 某 Provider 连续失败
- 队列积压过多
- 视频合成失败率过高
- 单项目成本异常
- 磁盘/MinIO 容量不足
## 18. 日志要求
每个任务记录:
- 输入摘要
- 输出摘要
- Provider
- 成本
- 耗时
- 错误
- 重试次数
敏感数据脱敏保存。
## 19. V3 真人动态视频队列增量
新增队列:
```text
identity_anchor_queue:身份锚点生成
face_consistency_queue:本人相似度检查
motion_portrait_queue:动态写真轻动效
real_video_clip_queue:真人动态视频片段
video_clip_qc_queue:视频片段质检
lipsync_queue:口型同步
```
隔离原则:
- `real_video_clip_queue` 必须独立限流,避免高成本视频任务堵住图片和普通合成。
- `lipsync_queue` 独立限流,失败不影响基础旁白字幕交付。
- `face_consistency_queue` 可优先级较高,因为它决定是否能继续生成。
V3 超时建议:
```text
identity_anchor_generate10 分钟
face_consistency_check3 分钟
motion_portrait_generate20 分钟
real_video_clip_generate60 分钟
video_clip_qc10 分钟
lipsync_generate45 分钟
```
V3 错误码:
```text
IDENTITY_ANCHOR_NOT_CONFIRMED
FACE_CONSISTENCY_LOW
REAL_VIDEO_PROVIDER_DISABLED
REAL_VIDEO_CONFIRMATION_REQUIRED
REAL_VIDEO_COST_LIMIT_EXCEEDED
REAL_VIDEO_CLIP_FAILED
VIDEO_CLIP_QC_FAILED
LIPSYNC_FAILED
MINOR_MANUAL_REVIEW_REQUIRED
```
真实视频任务失败时:
1. 记录 Provider 错误。
2. 标记片段 failed 或 needs_retry。
3. 不回落 mock 假成功。
4. 不重复扣用户额度。
5. 用户端显示失败原因和重试入口。
+295
View File
@@ -0,0 +1,295 @@
# 13_隐私授权_内容审核_合规设计
## 1. 文档目标
系统 B 处理真人照片、婚恋关系、家庭成员、儿童照片和定制视频,必须从第一版就设计隐私授权、内容审核、删除机制和版权合规。
## 2. 基本原则
1. 用户作品默认私密。
2. 用户照片只用于本次项目生成。
3. 公开展示案例必须单独授权。
4. 未成年人照片必须确认监护人授权。
5. 用户可以申请删除作品和素材。
6. 后台访问敏感数据必须记录日志。
7. 音乐和素材必须有商业授权来源。
## 3. 上传前授权
用户上传照片前必须勾选:
```text
我确认拥有上传照片的合法使用权。
我确认已获得照片中人物授权。
我授权平台为本次项目生成图片和视频。
我知道作品默认不公开展示。
如涉及未成年人,我确认我是监护人或已获得监护人授权。
```
V3 真人动态视频新增授权:
```text
我确认拥有上传照片中所有人物授权。
我授权平台仅为本项目生成图像和视频。
我理解 AI 生成结果可能与本人存在差异。
我确认不得上传未经授权的他人照片。
我理解 AI 真人动态视频可能产生表情、动作、服装和场景变化。
如涉及未成年人,我确认我是监护人或已获得监护人授权。
```
授权记录保存:
```text
user_id
project_id
authorization_type
content
ip
user_agent
confirmed_at
```
## 4. 公开案例授权
默认不公开。
用户在成品页主动点击“授权公开为案例”后,才允许后台加入案例库。
授权内容应说明:
- 可在首页、案例页、宣传材料展示。
- 可展示成品图/视频。
- 不展示用户手机号等隐私信息。
- 用户可申请撤回授权。
## 5. 未成年人规则
涉及主题:
- 宝宝百日
- 儿童成长
- 亲子纪念
- 家庭全家福
必须:
- 默认不公开展示。
- 增加监护人确认。
- 后台审核更严格。
- 禁止生成不适合儿童的内容。
## 6. 用户删除权
用户可申请:
- 删除项目
- 删除上传照片
- 删除成品
- 删除公开案例
删除策略:
```text
前台删除:用户不可见,进入删除队列。
后台删除:运营确认后清理 MinIO 文件和数据库状态。
备份删除:按备份保留策略到期清理。
```
## 7. 内容审核范围
必须审核:
```text
用户上传照片
用户输入文案
系统生成 Prompt
生成图片
生成视频封面
最终视频
公开案例
```
## 8. 禁止内容
禁止生成:
- 色情或露骨内容
- 侮辱性内容
- 暴力血腥内容
- 未成年人不当内容
- 未授权名人/公众人物冒用
- 政治人物冒充
- 违法犯罪宣传
- 恐吓、诈骗、仇恨内容
## 9. 文案审核
用户输入:
- 一句话誓言
- 特别要求
- 片尾文案
- 自定义世界描述
必须先走文本审核。
审核失败:
- 提示用户修改
- 不进入生成流程
## 10. 图片审核
阶段:
1. 上传照片审核
2. 预览图审核
3. 正式图审核
4. 案例公开前审核
审核结果:
```text
pass
warning
reject
```
## 11. 视频审核
最终视频合成后必须检查:
- 画面是否违规
- 字幕是否违规
- 封面是否违规
- 是否含未经授权 logo 或水印
V3 真人动态视频片段还必须检查:
- 是否像本人。
- 是否变脸。
- 是否男女混脸。
- 是否年龄变化过大。
- 动作是否自然。
- 表情是否怪异。
- 是否有低俗、不尊重或不合适姿势。
- 是否适合公开案例。
结果为 `warning``manual_review` 的片段,不允许自动进入公开案例。
## 12. 后台权限控制
原则:
- 普通运营不能查看 Provider 密钥。
- 审核员只能看审核相关素材。
- 财务只能看订单和成本,不看用户原图。
- 超级管理员敏感操作要记录日志。
## 13. 文件访问安全
要求:
- 原图不直接暴露公网。
- 下载使用签名 URL。
- 下载链接有效期可配置。
- 公开案例资源复制到公开 bucket 或 public path。
- 删除项目后停止下载链接生成。
## 14. EXIF 清理
用户上传照片后必须去除 EXIF 信息,避免泄露:
- 拍摄地点
- 设备信息
- 拍摄时间
## 15. 音乐版权
音乐素材必须记录:
```text
音乐名称
来源
授权类型
授权文件
使用范围
有效期
```
不允许使用来源不明音乐进行商业交付。
## 16. 用户协议与隐私协议
至少需要:
- 用户服务协议
- 隐私政策
- 肖像授权说明
- 公开案例授权说明
- 未成年人监护人确认说明
- 退款和修改规则
## 17. 审计日志
记录:
- 管理员查看用户照片
- 管理员下载素材
- 管理员删除素材
- 修改项目状态
- 上架公开案例
- 修改 Provider 配置
## 18. 风险处理
如果发现用户上传未授权照片或生成侵权内容:
1. 暂停项目。
2. 隐藏作品。
3. 通知用户补充授权或删除。
4. 必要时关闭账号。
## 19. V3 真人身份和原图保护
系统 B V3 涉及真实用户人脸,必须强化:
- 原图私有存储,不直接暴露公网。
- 原图下载和后台预览必须记录审计日志。
- 公开案例不使用原始照片,除非用户单独授权。
- 默认不把原图、锚点图、视频片段用于模型训练。
- 身份锚点图属于敏感资产,访问权限等同原图。
- 删除项目时,原图、锚点图、关键帧、视频片段都进入清理队列。
## 20. V3 未成年人保护
涉及儿童成长、宝宝百日、亲子纪念、家庭全家福时:
- 必须确认监护人授权。
- 默认不公开案例。
- 不允许成人化服装、成人化姿势、暧昧表达、危险动作。
- 动态视频和口型内容必须人工复核。
- 后台公开案例审核必须二次确认未成年人风险。
## 21. V3 公开案例二次授权
公开案例授权必须独立于项目生成授权。
授权内容必须明确:
```text
可展示哪些图片。
可展示哪些视频片段。
是否展示完整成片。
是否允许展示人物昵称或纪念主题。
用户可随时撤回公开授权。
```
默认值:
```text
不公开
不进案例库
不用于宣传材料
不用于模型训练
```
+258
View File
@@ -0,0 +1,258 @@
# 14_部署运维_日志监控_备份设计
## 1. 文档目标
本文档定义系统 B 的部署结构、服务目录、环境变量、日志、监控、备份、告警和清理策略。
## 2. 推荐部署架构
第一阶段单服务器即可:
```text
Nginx
NestJS API
BullMQ Workers
MySQL
Redis
MinIO
FFmpeg
Geeker-Admin 静态文件
uni-app H5 静态文件
```
后续可拆分:
```text
API 服务器
Worker 服务器
数据库服务器
对象存储
视频渲染服务器
```
## 3. 目录结构建议
```text
/opt/system-b/
backend/
admin-web/
user-web/
workers/
logs/
ffmpeg-temp/
docker-compose.yml
.env
```
## 4. 环境变量
```text
NODE_ENV=production
APP_PORT=3000
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=system_b
MYSQL_PASSWORD=xxx
MYSQL_DATABASE=system_b
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
MINIO_ENDPOINT=127.0.0.1
MINIO_PORT=9000
MINIO_ACCESS_KEY=xxx
MINIO_SECRET_KEY=xxx
JWT_SECRET=xxx
OPENAI_API_KEY=xxx
```
Provider 密钥建议使用密钥管理或环境变量,不直接写入数据库明文。
## 5. Nginx 配置目标
反代:
```text
/api → NestJS
/admin → Geeker-Admin
/ → uni-app H5
/ws → WebSocket
```
静态文件不直接暴露 MinIO 私密 bucket。
## 6. 进程管理
可选:
- PM2
- systemd
- Docker Compose
服务:
```text
api-server
worker-photo
worker-text
worker-image
worker-video
worker-ffmpeg
worker-qc
```
## 7. 日志设计
日志类型:
```text
api.log
worker.log
error.log
provider.log
payment.log
ffmpeg.log
audit.log
```
日志要求:
- 按天切割
- 保留 30-90 天
- 敏感信息脱敏
- 重要错误报警
## 8. 监控指标
应用指标:
- API 响应时间
- API 错误率
- 队列积压数
- 任务失败率
- Provider 失败率
- 视频合成耗时
系统指标:
- CPU
- 内存
- 磁盘
- 网络
- MinIO 容量
- MySQL 连接数
- Redis 内存
业务指标:
- 今日订单数
- 今日收入
- 今日 AI 成本
- 项目完成数
- 待审核数
## 9. 告警规则
触发:
- API 5xx 错误率过高
- 队列积压超过阈值
- Provider 连续失败
- 磁盘剩余空间低于 20%
- MinIO 容量不足
- MySQL 备份失败
- 单日 AI 成本超阈值
## 10. 数据库备份
建议:
```text
每日全量备份
每小时 binlog 增量
备份保留 7-30 天
定期恢复演练
```
备份目录:
```text
/backups/mysql/YYYY-MM-DD/
```
## 11. MinIO 备份
策略:
- 重要成品每日同步
- 用户原图按隐私策略备份
- 临时文件不备份
- 公开案例单独备份
## 12. Redis 持久化
Redis 用于队列和缓存:
- 开启 AOF 或 RDB
- 定期检查内存
- 设置合适 maxmemory 策略
## 13. 临时文件清理
清理对象:
- FFmpeg 临时文件
- 预览临时素材
- 失败任务中间文件
- 过期下载包
策略:
```text
每晚 cleanup_queue 执行
临时文件保留 1-3 天
失败任务文件保留 7 天
```
## 14. 项目素材保留策略
建议:
| 类型 | 保留 |
|---|---|
| 用户上传原图 | 按用户协议,默认 90-180 天或项目删除后清理 |
| 预览图 | 30 天 |
| 正式图 | 180 天或长期,按套餐 |
| 成品视频 | 180 天或长期,按套餐 |
| 公开案例 | 授权有效期间保留 |
## 15. 发布流程
```text
代码提交
→ 自动测试
→ 构建后端
→ 构建后台
→ 构建用户端
→ 数据库迁移
→ 灰度发布
→ 检查日志
→ 正式发布
```
## 16. 回滚方案
必须保留:
- 上一个后端版本
- 上一个前端静态包
- 数据库迁移回滚脚本
- 配置备份
## 17. 安全要求
- HTTPS
- 后台登录二次验证,后续可加
- 密钥不提交代码仓库
- 上传文件类型限制
- API 限流
- 防刷验证码
- 后台操作日志
+438
View File
@@ -0,0 +1,438 @@
# 15_测试用例_验收标准
## 1. 文档目标
本文档定义系统 B 的测试范围、测试用例和验收标准,确保项目不仅能跑通,还能稳定交付。
## 2. 验收原则
1. 主流程必须完整跑通。
2. 异常流程必须可恢复。
3. 任务失败不能导致项目死锁。
4. 支付、额度、成本必须准确。
5. 用户隐私和授权流程必须完整。
6. 后台必须能处理失败、审核、修改。
## 3. 用户注册登录测试
### 用例 1:手机号验证码登录
步骤:
1. 输入手机号。
2. 获取验证码。
3. 输入验证码登录。
预期:
- 登录成功。
- 返回 token。
- 用户信息正常。
### 用例 2:未登录访问制作流程
步骤:
1. 游客点击开始制作。
预期:
- 跳转登录页。
- 登录后回到创建项目页。
## 4. 首页案例测试
### 用例
1. 首页加载。
2. 查看案例列表。
3. 打开案例详情。
4. 点击用同款制作。
预期:
- 公开案例正常展示。
- 未授权项目不出现在案例页。
- 用同款制作能带入模板。
## 5. 项目创建测试
### 主流程
1. 创建项目。
2. 选择主题。
3. 选择套餐。
4. 选择风格。
5. 选择世界。
6. 选择场景。
预期:
- 项目状态正确推进。
- 选择数据正确保存。
- 套餐限制生效。
### 异常
- 世界选择超出套餐限制。
- 场景数量不足。
- 返回上一步后数据保留。
## 6. 照片上传测试
### 合格照片
预期:上传成功,质检 pass。
### 不合格照片
测试:
- 模糊
- 戴墨镜
- 多人混入
- 无人脸
- 低分辨率
预期:质检 fail 或 warning,并给出原因。
## 7. 授权测试
### 未勾选授权
预期:不能继续下一步。
### 涉及未成年人主题
预期:必须出现监护人授权确认。
## 8. 创作方案测试
步骤:
1. 提交定制信息。
2. 生成创作方案。
3. 查看镜头计划。
预期:
- 方案与主题、世界、场景一致。
- 不出现未选择的世界。
- 字幕和旁白不超长。
## 9. 支付与额度测试
### 正常支付
预期:订单 paid,项目进入 payment_paid。
### 未支付直接生成正式图
预期:拒绝,提示需要支付。
### 失败重试
预期:系统错误重试不重复扣用户额度。
## 10. 预览生成测试
步骤:
1. 触发预览。
2. 等待任务完成。
预期:
- 生成低清水印预览。
- 用户可确认或重新生成。
- 预览次数受限。
## 11. 正式图生成测试
预期:
- 按镜头计划生成图片。
- 图片保存为 asset。
- render_task 状态 success。
- 成本日志记录。
异常:
- Provider 超时,应重试。
- 多次失败转人工。
## 12. 图片质检测试
测试内容:
- 多出第三人
- 手部异常
- 人脸崩坏
- 场景错误
- 文字乱入
预期:
- fail 自动重生。
- warning 转人工复核。
## 13. 视频合成测试
步骤:
1. 准备图片、字幕、BGM、旁白。
2. 触发 FFmpeg 合成。
预期:
- 输出 MP4。
- 视频可播放。
- 字幕不出框。
- 音画同步。
- 封面生成正常。
## 14. 成品确认测试
操作:
- 下载视频。
- 下载图集。
- 确认完成。
- 申请修改。
预期:
- 下载链接有效期正常。
- 确认后项目 completed。
- 修改次数正确扣减。
## 15. 修改申请测试
### 小改
预期:允许套餐内修改。
### 中改
预期:消耗修改次数,创建重做任务。
### 大改
预期:提示重新计费。
## 16. 后台任务测试
操作:
- 查看任务。
- 重试任务。
- 终止任务。
- 转人工。
预期:
- 状态正确变化。
- 重试不重复创建相同任务。
## 17. 权限测试
- 用户不能看他人项目。
- 运营不能看 Provider 密钥。
- 财务不能看用户原图。
- 超级管理员可以配置系统。
## 18. 隐私删除测试
步骤:
1. 用户申请删除作品。
2. 后台处理。
3. 检查下载链接。
预期:
- 前台不可见。
- 下载链接失效。
- 素材进入清理队列。
## 19. 压力测试
测试:
- 100 个用户同时浏览首页。
- 20 个项目同时生成预览。
- 5 个项目同时正式生成视频。
关注:
- API 延迟
- 队列积压
- Provider 限流
- 服务器 CPU/内存
## 20. 最终验收标准
MVP 完成标准:
```text
用户可以注册登录。
用户可以完整创建项目。
用户可以上传照片并质检。
用户可以选择主题、套餐、风格、世界、场景。
系统可以生成创作方案。
系统可以生成预览图。
支付/额度逻辑可用。
系统可以生成正式图。
系统可以合成基础视频。
用户可以下载成品。
用户可以申请修改。
后台可以管理项目、模板、任务、订单、案例。
失败任务可以重试或转人工。
授权和公开案例逻辑可用。
```
## 21. V3 输出模式测试
### 用例:四档输出模式创建
分别创建:
- 高清写真图集
- 图片纪念视频
- 动态写真视频
- AI 真人动态视频
预期:
- 项目 `output_mode` 保存正确。
- 套餐限制正确。
- AI 真人动态视频模式展示费用高、耗时长、需确认的提示。
- 未选择真实视频确认时,不允许进入真实视频生成。
## 22. V3 真人身份锚点测试
步骤:
1. 上传同一人物多张清晰照片。
2. 生成身份档案。
3. 生成身份锚点图。
4. 做人脸一致性评分。
5. 用户确认锚点。
预期:
- 身份锚点图可预览。
- `face_consistency_score` 有记录。
- 用户未确认锚点前,不能正式生成真人动态视频。
- 锚点不满意可重生或转人工。
## 23. V3 视频片段生成测试
步骤:
1. 准备已确认身份锚点。
2. 准备关键帧。
3. 选择启用的 VideoProvider。
4. 查看成本估算。
5. 勾选真实视频确认。
6. 生成 1 个 3-6 秒视频片段。
预期:
- 生成前展示预计成本。
- 生成后可预览片段。
- 片段写入 `video_clips`
- Provider 日志记录成本、耗时、状态。
- 禁用 Provider 返回明确错误。
- 真实 Provider 失败不会回落 mock 假成功。
## 24. V3 视频片段质检测试
测试内容:
- 人脸不像本人。
- 男女混脸。
- 年龄变化过大。
- 动作不自然。
- 表情怪异。
- 多出第三人。
- 手部畸形。
预期:
- passed 可进入合成。
- needs_retry 可重试。
- manual_review 转人工。
- rejected 不进入成片和公开案例。
## 25. V3 口型任务测试
步骤:
1. 选择一个已生成视频片段。
2. 绑定音频。
3. 触发口型任务。
预期:
- `lipsync_tasks` 状态正确。
- 成本单独记录。
- 失败时可回退旁白字幕版本。
- 涉及未成年人时必须人工复核。
## 26. V3 成本保护测试
测试:
- 单片段成本超过上限。
- 项目视频秒数超过上限。
- Provider 日成本超过阈值。
- 重试次数超过上限。
预期:
- 调用前拦截。
- 写入失败任务和错误信息。
- 不调用外部真实 Provider。
- 用户端和后台都能看到原因。
## 27. V3 隐私和公开案例测试
测试:
- 未授权公开案例。
- 涉及未成年人公开案例。
- 后台查看原图。
- 用户撤回公开授权。
预期:
- 默认不公开。
- 未成年人默认不进入案例库。
- 后台查看原图写审计日志。
- 撤回授权后公开案例下架,下载链接失效或停止生成。
## 28. V3 真实视频小样验收标准
第一轮真实付费小样只验收 1 个镜头:
```text
同一人物
同一世界
同一动作
同一时长
分别测试 MiniMax Hailuo / Wan / Vidu / Seedance 等 Provider
```
评分维度:
- 本人相似度。
- 面部表情。
- 动作自然度。
- 镜头语言。
- 中文短剧感。
- 清晰度。
- Prompt 可控性。
- 失败率。
- 生成耗时。
- 实际成本。
+635
View File
@@ -0,0 +1,635 @@
# 16_Codex开发任务拆解文档
## 1. 文档目标
本文档用于把系统 B 拆成适合 Codex 执行的开发任务。每个任务应该尽量独立、可验证、可回滚。
## 2. 开发原则
1. 先跑通主流程,再优化细节。
2. 每个任务必须有验收标准。
3. 不要一次让 Codex 写完整系统。
4. 数据库、接口、页面、任务队列分阶段完成。
5. AI Provider 先做抽象,再接具体模型。
## 3. 阶段 1:项目基础框架
### 任务 01:初始化后端项目
目标:创建 NestJS 后端项目。
要求:
- TypeScript
- 环境变量配置
- 全局异常处理
- 日志基础封装
- Swagger 可选
验收:
- `npm run start` 正常启动。
- `/api/health` 返回 ok。
### 任务 02:配置数据库 ORM
目标:接入 MySQL。
要求:
- TypeORM 或 Prisma 二选一
- 配置迁移
- 创建基础 users/projects 表
验收:
- 可以执行迁移。
- 可以读写测试数据。
### 任务 03:配置 Redis 和 BullMQ
目标:接入 Redis 队列。
要求:
- QueueModule
- 测试队列
- Worker 示例
验收:
- 能创建任务。
- Worker 能消费任务。
### 任务 04:配置 MinIO 文件上传
目标:实现对象存储。
要求:
- 上传文件
- 生成签名 URL
- 删除文件
- 缩略图字段预留
验收:
- 上传图片成功。
- 数据库 asset 记录生成。
## 4. 阶段 2:用户与权限
### 任务 05:实现用户注册登录
要求:
- 手机号验证码模拟版
- JWT 登录
- 获取当前用户
验收:
- 登录成功返回 token。
- 受保护接口能识别用户。
### 任务 06:实现后台管理员登录
要求:
- admin_users
- roles
- 权限中间件
验收:
- 管理员可登录。
- 不同角色权限可区分。
## 5. 阶段 3:模板系统
### 任务 07:实现人生主题 API
接口:
- GET /api/life-themes
- POST /api/admin/life-themes
- PUT /api/admin/life-themes/:id
验收:
- 前台可读取主题。
- 后台可新增编辑。
### 任务 08:实现套餐 API
接口:
- GET /api/packages
- 后台增删改查
验收:
- 套餐限制字段可配置。
### 任务 09:实现风格、世界、场景、镜头模板 API
要求:
- style_templates
- world_templates
- scene_templates
- shot_templates
验收:
- 前台按主题/风格查询世界。
- 后台可维护模板。
## 6. 阶段 4:项目创建流程
### 任务 10:实现项目创建 API
接口:
- POST /api/projects
- GET /api/projects/:id
- GET /api/my/projects
验收:
- 用户可创建项目。
- 只能查看自己的项目。
### 任务 11:实现项目选择流程 API
接口:
- POST /api/projects/:id/package
- POST /api/projects/:id/style
- POST /api/projects/:id/worlds
- POST /api/projects/:id/scenes
- POST /api/projects/:id/custom-info
验收:
- 项目选择数据可保存。
- 套餐限制生效。
### 任务 12:实现授权记录
接口:
- POST /api/projects/:id/authorizations
验收:
- 未授权不能进入照片质检。
- 授权记录包含 IP 和 UA。
## 7. 阶段 5:照片与人物档案
### 任务 13:实现照片上传
要求:
- 按 person_role 上传
- 创建 asset
- 绑定 project
验收:
- 上传成功。
- 角色归属正确。
### 任务 14:实现基础照片质检 Worker
第一版可先实现基础检测:
- 文件格式
- 尺寸
- 文件大小
- 是否可读取
后续接 Python 人脸检测。
验收:
- 合格返回 pass。
- 不合格返回 fail。
### 任务 15:实现人物档案生成
要求:
- 汇总合格照片
- 创建 person_profiles
- 外貌摘要先可用文本模型生成,或手动占位
验收:
- 每个角色有 person_profile。
## 8. 阶段 6AI Provider 抽象
### 任务 16:实现 Provider 配置表和管理 API
要求:
- provider_configs
- provider_logs
- 后台可新增编辑测试
验收:
- Provider 不写死在代码。
### 任务 17:实现 TextProvider 接口
功能:
- generatePlan
- generatePrompt
- generateCopy
验收:
- 输入项目数据,输出创作方案 JSON。
### 任务 18:实现 ImageProvider 接口
功能:
- generatePreviewImage
- generateFinalImage
验收:
- 可生成图片并保存 asset。
### 任务 19:实现 VoiceProvider 接口
功能:
- 文本转音频
验收:
- 生成音频 asset。
## 9. 阶段 7:生成工作流
### 任务 20:创作方案生成
接口:
- POST /api/projects/:id/generate-plan
- GET /api/projects/:id/plan
- POST /api/projects/:id/confirm-plan
验收:
- 任务队列化。
- 方案保存为 shot_plans。
### 任务 21:预览图生成
接口:
- POST /api/projects/:id/generate-preview
- POST /api/projects/:id/confirm-preview
验收:
- 生成水印预览图。
- 用户可确认。
### 任务 22:正式图生成
接口:
- POST /api/projects/:id/generate-final
验收:
- 按 shot_plans 生成正式图。
- 图片 asset 绑定镜头。
### 任务 23:图片质检任务
要求:
- 先做基础检查
- 后续接高级检测
验收:
- fail 任务可重试。
## 10. 阶段 8:视频合成
### 任务 24:字幕生成
要求:
- 根据旁白/文案生成 SRT
验收:
- SRT 文件保存为 asset。
### 任务 25FFmpeg 视频合成 Worker
要求:
- 图片转视频
- 简单推拉
- BGM
- 字幕
- 输出 MP4
验收:
- 生成可播放视频。
- 项目 video_asset_id 更新。
### 任务 26:成品下载
接口:
- GET /api/assets/:id/download-url
验收:
- 签名链接有效。
- 非本人不能下载。
## 11. 阶段 9:订单和额度
### 任务 27:订单创建
接口:
- POST /api/projects/:id/orders
验收:
- 创建 pending 订单。
### 任务 28:支付模拟和状态推进
第一版可做后台手动标记支付。
验收:
- paid 后项目进入 payment_paid。
- 未支付不能正式生成。
### 任务 29:额度和成本日志
要求:
- 任务成本记录
- 项目成本汇总
验收:
- 后台能看到项目成本。
## 12. 阶段 10:后台管理
### 任务 30:接入 Geeker-Admin
要求:
- 登录
- 菜单
- 权限
- 基础布局
验收:
- 后台可登录。
### 任务 31:项目管理页
功能:
- 项目列表
- 项目详情
- 任务查看
- 素材查看
### 任务 32:模板管理页
功能:
- 主题
- 套餐
- 风格
- 世界
- 场景
- 镜头
### 任务 33:任务管理页
功能:
- 查看任务
- 重试
- 终止
- 转人工
### 任务 34:案例管理页
功能:
- 从项目生成案例
- 上架/下架
- 设置首页推荐
## 13. 阶段 11:修改与审核
### 任务 35:修改申请
接口:
- POST /api/projects/:id/revisions
- 后台处理修改申请
验收:
- 修改次数扣减。
- 大改提示重新计费。
### 任务 36:人工审核流程
要求:
- manual_review 状态
- 审核通过/驳回
验收:
- 高端项目可进入人工审核。
## 14. 阶段 12:稳定性和运维
### 任务 37:任务幂等
要求:
- input_hash
- 重复请求不重复生成
### 任务 38:错误码和异常处理
要求:
- 统一错误返回
- 日志记录
### 任务 39:清理任务
要求:
- 临时文件清理
- 过期下载链接
### 任务 40:部署脚本
要求:
- Docker Compose 或 PM2
- Nginx 配置示例
- 环境变量模板
## 15. 建议开发顺序
```text
基础框架
→ 用户登录
→ 模板系统
→ 项目创建
→ 文件上传
→ 照片质检
→ AI Provider
→ 创作方案
→ 图片生成
→ 视频合成
→ 后台管理
→ 订单支付
→ 修改审核
→ 稳定性增强
```
## 15.1 V3 真人动态视频追加阶段
V3 不建议一开始就全片真实视频化,应按以下顺序追加:
```text
V2 图集/图片视频主流程
→ 输出模式分层
→ 真人身份锚点
→ 本人相似度质检
→ 动态写真轻动效
→ 真实 VideoProvider 配置
→ 单镜头真实视频小样
→ 视频片段列表/重试/质检
→ 片段合成
→ 口型任务,可选
→ 隐私/未成年人/公开案例强化验收
```
### 阶段 13:输出模式和身份锚点
任务 41:项目输出模式
- 增加 `output_mode`photo_album/image_video/motion_portrait/real_video/premium_film。
- 用户端创建项目时明确选择。
- 后台项目列表展示输出模式。
任务 42:身份锚点表和接口
- 增加 `identity_anchors`
- 支持生成锚点、用户确认、后台确认。
- 未确认锚点不允许真实视频生成。
任务 43FaceConsistencyProvider
- 抽象本人相似度检查。
- 第一版可 mock,后续接真实人脸一致性服务。
- 结果写入 `face_consistency_score`
### 阶段 14:动态写真和动作模板
任务 44:动作模板管理
- 增加 `motion_templates`
- 后台可维护动作名称、Prompt 规则、时长、难度和成本等级。
任务 45:动态写真片段
- 支持眨眼、微笑、头发衣服轻微动、背景动效。
- 先用 mock 或轻量 Provider 跑通,不直接上全片真实视频。
### 阶段 15:AI 真人动态视频片段
任务 46VideoProvider 国内预设
- 预置 MiniMax Hailuo、阿里 Wan、Vidu、Seedance、Kling、Runway。
- 默认禁用。
- 后台可配置 Key、Base URL、模型、单价、成本阈值。
任务 47:视频片段生成
- 增加 `video_clips`
- 按镜头生成 3-6 秒片段。
- 生成前做成本估算。
- 用户确认后才真实生成。
- 失败不能回落 mock 假成功。
任务 48:视频片段质检
- 检查像不像本人、动作、表情、年龄变化、混脸、多出第三人。
- 支持 passed/needs_retry/manual_review/rejected。
任务 49:视频片段合成
- 使用 FFmpeg concat 合成多个片段。
- 加旁白、字幕、BGM。
- 支持片段替换后重新合成。
### 阶段 16:口型和高端纪念片
任务 50LipSyncProvider
- 增加 `lipsync_tasks`
- 绑定视频片段和音频资产。
- 口型失败可回退旁白字幕版本。
任务 51:高端真人纪念片后台流程
- 人工报价。
- 人工审核。
- 多轮修改。
- 片段精修和替换。
任务 52V3 合规验收
- 未成年人保护。
- 公开案例二次授权。
- 后台访问原图审计。
- 删除项目清理原图、锚点、关键帧、视频片段。
## 16. Codex 使用建议
每次只给 Codex 一个任务,附带:
- 目标
- 相关表
- 相关接口
- 相关文件路径
- 验收标准
- 注意事项
不要一次让 Codex “开发完整系统”。
+67
View File
@@ -0,0 +1,67 @@
# 系统B:真人照片 → 多人生主题写真 / 韩漫 / 纪念视频生成系统 文档包
版本:V3 真人动态视频升级版
整理日期:2026-06-02
## 使用说明
这套文档用于把系统 B 从产品想法推进到可开发、可测试、可部署的完整项目。建议先按顺序阅读:
1. `00_系统B升级说明_真人动态视频.md`:说明为什么从 V2 升级到 V3。
2. `01_系统B总需求文档_v3_真人动态视频版.md`:当前主需求基线,后续开发以此为准。
3. `01_需求文档第一版本.md`:保留最初产品思路。
4. `02_需求文档修改v2.md`:V2 基础版,作为写真图集和图片纪念视频链路参考。
5. `03_功能清单_页面清单_状态流转设计.md`:前端、后台、状态机的产品实现依据。
6. `04_技术架构设计_模块拆分.md`:系统整体技术方案。
7. `05_数据库表结构设计.md`MySQL 表结构草案。
8. `06_API接口设计文档.md`:前后台接口规范。
9. `07_uniapp用户端页面交互文档.md`uni-app 页面流程。
10. `08_GeekerAdmin后台管理设计.md`:后台管理端设计。
11. `09_AI生成流水线_Provider抽象设计.md`AI 核心流水线。
12. `10_Prompt模板_世界观模板规范.md`:世界观、场景、Prompt 模板规范。
13. `11_订单支付_额度_成本控制设计.md`:商业闭环和成本控制。
14. `12_任务队列_错误重试_稳定性设计.md`:稳定性与故障恢复。
15. `13_隐私授权_内容审核_合规设计.md`:真人照片、肖像权、隐私合规。
16. `14_部署运维_日志监控_备份设计.md`:服务器部署和运维。
17. `15_测试用例_验收标准.md`:测试与验收。
18. `16_Codex开发任务拆解文档.md`:交给 Codex 的开发拆解。
当前系统 B 必须明确分成 4 档输出:
```text
高清写真图集
图片纪念视频
动态写真视频
AI 真人动态视频
```
高端真人纪念片作为人工报价和多轮精修套餐处理。
## 当前推荐技术栈
- 用户端:uni-app
- 后台端:Geeker-Admin 二开
- 后端:Node.js + NestJS
- 数据库:MySQL 8
- 队列:Redis + BullMQ
- 存储:MinIO / 后续可切云 OSS
- 视频合成:FFmpeg
- AI 辅助 WorkerPython 可选
- AI 接入:统一 Provider 抽象层,不把任何模型名写死到业务代码
## 重要原则
1. 第一阶段主打婚礼、恋爱纪念、银婚金婚、情侣写真、个人形象定制。
2. 系统底层按“人生主题 + 世界观模板 + 场景模板 + 镜头模板”设计,不要写死婚礼。
3. 所有 AI 模型通过 Provider 管理,支持最高质量模型和后续替换。
4. AI 真人动态视频默认不自动开启真实 Provider,必须先成本预估、用户确认、后台启用和阈值保护。
5. 真人照片必须有授权、隐私、删除、公开案例二次授权机制。
6. 系统 B 比系统 A 更重视本人相似度、肖像权、未成年人保护、身份锚点和后台审计。
7. 生成流程必须队列化、可重试、可恢复、可追踪成本。
## 修正说明
本包已升级为 V3 真人动态视频版:V1/V2 保留为历史与基础链路参考,V3 用于指导“真人会动、有表情、有动作、像真人短剧/纪念电影”的新目标。
开发主依据:优先使用 `01_系统B总需求文档_v3_真人动态视频版.md``02_需求文档修改v2.md` 作为基础链路参考,`01_需求文档第一版本.md` 作为历史需求版本与对照参考。
+26
View File
@@ -0,0 +1,26 @@
{
"project": "系统B:真人照片 → 多人生主题写真 / 动态视频 / AI真人纪念片生成系统",
"version": "V3-real-video-docs-package",
"date": "2026-06-02",
"files": [
"00_系统B升级说明_真人动态视频.md",
"01_系统B总需求文档_v3_真人动态视频版.md",
"01_需求文档第一版本.md",
"02_需求文档修改v2.md",
"03_功能清单_页面清单_状态流转设计.md",
"04_技术架构设计_模块拆分.md",
"05_数据库表结构设计.md",
"06_API接口设计文档.md",
"07_uniapp用户端页面交互文档.md",
"08_GeekerAdmin后台管理设计.md",
"09_AI生成流水线_Provider抽象设计.md",
"10_Prompt模板_世界观模板规范.md",
"11_订单支付_额度_成本控制设计.md",
"12_任务队列_错误重试_稳定性设计.md",
"13_隐私授权_内容审核_合规设计.md",
"14_部署运维_日志监控_备份设计.md",
"15_测试用例_验收标准.md",
"16_Codex开发任务拆解文档.md",
"README.md"
]
}