636 lines
10 KiB
Markdown
Executable File
636 lines
10 KiB
Markdown
Executable File
# 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. 阶段 6:AI 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。
|
||
|
||
### 任务 25:FFmpeg 视频合成 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`。
|
||
- 支持生成锚点、用户确认、后台确认。
|
||
- 未确认锚点不允许真实视频生成。
|
||
|
||
任务 43:FaceConsistencyProvider
|
||
|
||
- 抽象本人相似度检查。
|
||
- 第一版可 mock,后续接真实人脸一致性服务。
|
||
- 结果写入 `face_consistency_score`。
|
||
|
||
### 阶段 14:动态写真和动作模板
|
||
|
||
任务 44:动作模板管理
|
||
|
||
- 增加 `motion_templates`。
|
||
- 后台可维护动作名称、Prompt 规则、时长、难度和成本等级。
|
||
|
||
任务 45:动态写真片段
|
||
|
||
- 支持眨眼、微笑、头发衣服轻微动、背景动效。
|
||
- 先用 mock 或轻量 Provider 跑通,不直接上全片真实视频。
|
||
|
||
### 阶段 15:AI 真人动态视频片段
|
||
|
||
任务 46:VideoProvider 国内预设
|
||
|
||
- 预置 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:口型和高端纪念片
|
||
|
||
任务 50:LipSyncProvider
|
||
|
||
- 增加 `lipsync_tasks`。
|
||
- 绑定视频片段和音频资产。
|
||
- 口型失败可回退旁白字幕版本。
|
||
|
||
任务 51:高端真人纪念片后台流程
|
||
|
||
- 人工报价。
|
||
- 人工审核。
|
||
- 多轮修改。
|
||
- 片段精修和替换。
|
||
|
||
任务 52:V3 合规验收
|
||
|
||
- 未成年人保护。
|
||
- 公开案例二次授权。
|
||
- 后台访问原图审计。
|
||
- 删除项目清理原图、锚点、关键帧、视频片段。
|
||
|
||
## 16. Codex 使用建议
|
||
|
||
每次只给 Codex 一个任务,附带:
|
||
|
||
- 目标
|
||
- 相关表
|
||
- 相关接口
|
||
- 相关文件路径
|
||
- 验收标准
|
||
- 注意事项
|
||
|
||
不要一次让 Codex “开发完整系统”。
|