Files
yingqing/docs/todo/模特库与资产模型-设计稿-2026-06-20.md
seaislee1209andClaude Opus 4.8 44e90233ff feat(models): 期1 模特库地基 — Model 顶级实体 + 模特库页 + 审核范围扩展
后端:
- 新增 Model(模特)团队级实体:形象图+三视图+声线(声线尾期),官方模板标签,软删
- Asset.Category 枚举一次加全(model_portrait/tri_view/voice/model_tryon/platform_kit/free_create/storyboard),逐期接线
- 送审范围 person → REVIEW_CATEGORIES{person,tri_view,storyboard}(review.py + adminpanel 队列),图片趴不送审;当前行为不变(forward-compat)
- /api/models/ ModelLibraryViewSet:本团队∪官方模板、官方/我的 tab、真人上传、软删(官方不可删)、跨团队资产引用防越权
- backfill_models 命令把历史成套模特(kind=model + 项目流命名配对)归集成 Model,dry-run 默认

前端:
- 左菜单新增「模特库」顶级入口(person 图标)+ 路由 /models
- 模特库页:全部/官方模板/我的模特 tab + 真人上传 + 模特卡(形象图+三视图缩略+官方标签),仅用 design token

测试:assets 10/10 绿;tsc+build 全绿;无头走查 0 console error(全部5/官方3/我的2,官方标签达标)
基线既有 7 失败(ai/projects provider mock 漂移)零新增

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 22:53:46 +08:00

117 lines
6.3 KiB
Markdown

# 模特库 + 资产模型重构 · 设计稿
> 2026-06-20 · 与用户对齐后产出 · **先拍这版图纸,再分 3 期施工**。
> 现状全是测试数据、平台未上线 → 数据可随意动(归类 / 删错图)。
---
## 0. 一句话目标
把「模特」从"一张图"升级成**团队级、可复用的实体(模特库)**;图片生成线 + 视频项目线都能调它;资产按"图片趴 / 视频趴"两大块清晰分类。
---
## 1. 资产模型(实体定义)
### ① 模特(顶级实体 = 模特库)
一个完整模特 = **形象图 + 三视图 + 声线**(声线最后做)。
- **团队级、可复用**,不绑某个项目;图片线 + 视频线都能引用。
- 来源:**官方预制**(打「官方模板」标签)/ **商家自建**(AI 生成或上传真人)。
- 模特库 = **左侧顶级菜单**(像商品库),不再埋在弹窗里。
### ② 图片趴(3 类,均为「组」)
| 类 | 说明 | 形态 |
|---|---|---|
| 模特上身图 | 模特 + 商品 宣传图(引用模特库的模特) | 一组多张 |
| 平台套图 | 电商头图/轮播主图,各平台尺寸不同 | 一组 N 张(平台规则后续加) |
| 自由创作 | 杂图都归这 | 单张/多张 |
### ③ 视频趴
| 类 | 说明 | 形态 |
|---|---|---|
| 角色(原「人物」改名) | 见下方"角色链路" | 项目内,引用模特库 |
| 分镜图 | 每个视频任务脚本 = 一组分镜图 + 一组视频素材 | 组 |
**角色链路(视频趴):**
- **A 引用模特库**:选库里某模特当参考图 + 叠加**符合剧情的服装样貌描述** → 生成该模特的**定妆照** → 再出三视图。
- **B 直接新生成**:不用库里的,新生成一个 → **自动入模特库**(要删去模特库删)。
- → "角色"卡需小改以承载这两条来法。
---
## 2. 后端模型设计(提案,期 1 细化)
**新增 `Model`(模特)实体 · 团队级:**
```
Model: team, name, is_official(官方模板), source(ai/upload),
portrait_asset(形象图 FK), triview_asset(三视图 FK),
voice_asset(声线 FK, 可空·后做), metadata, created_by
```
**`Asset.Category` 枚举一次加全(逐期接线):**
- model_portrait(模特形象图)· tri_view(三视图)· voice(声线占位)
- model_tryon(模特上身图)· platform_kit(平台套图)· free_create(自由创作)
- storyboard(分镜图)
- 保留:product_image / scene / video_clip / final_video / upload / uncategorized
**「组」落库:** 复用/扩展现有 BaseAssetGroup 或加 group_id+task 关联(期 2/3 定);上身图组/套图组/分镜组/视频组同源思路。
**审核范围(不变,已拍板):** 送审 = 视频趴人脸 = **{模特定妆照(person), tri_view(三视图), storyboard(分镜图)}**;图片趴(上身图/套图/创作)**不送审**。`review.py` + adminpanel 队列过滤 `person → person+tri_view+storyboard`
---
## 3. 页面 / 导航
- **新增顶级「模特库」**(左菜单):官方模板 tab / 我的模特 tab / 真人上传入口。
- **图片生成页**:三类入口(上身图/套图/自由创作),上身图接模特库。
- **视频项目·资产趴**:"人物"→"角色",角色卡承载 A/B 两条来法。
- **深埋的 actor-library 弹窗**:本轮先不动(逻辑顺),做到对应页时再收编。
---
## ★ 施工纪律(每一块/每个 Phase 都严格走这一圈,缺一不可)
> 这是硬流程,不是口号。任何一块没走完整圈,不算完、不 commit、不进下一块。
1. **写(开发)** — 实现这一块;后端先于前端;独立子项可派 sub-agent 并行(worktree 隔离防冲突)。
2. **审(自审)** — 回头**批判性**读自己刚写的 diff(或派 sub-agent 当审查者):逻辑 / 边界(空值·0·越权·并发)/ 安全(密钥不回传·权限不漏)/ **回归风险** / 有没有跑题。发现问题 → 修 → 再审,**审干净才往下**。
3. **改(修)** — 上面审出来的、下面测出来的,全修掉。
4. **测(三层全绿,缺一不可)**:
- **后端单测**:`DB_ENGINE=sqlite python manage.py test apps.<相关app>`;每个新端点 ≥ 正常 + 权限拒绝 + 边界。
- **无头浏览器 e2e**:Playwright 真点击走完整流程 + locator 断言 + **抓 console/pageerror 必须为 0**;按需起 worker 真跑异步(出图/审核)。
- **类型/构建**:`npx tsc --noEmit && npm run build` 全绿。
5. **无头 + 截图核对** — 关键画面**截图**,逐张对照设计稿 / 预期,**视觉达标**才算过;不达标 → 回第 3 步继续迭代。
6. **直到完美验收** — 三层全绿 + 截图达标 + 该块业务链路走通,才算这块完成。
7. **全绿才本地 commit**(消息规范);写进度;**进下一块**。
8. **回归红线**:开工前记下进场既有失败基线,只保证**不新增** fail;既有链路零回归。
9. **全程本地、绝不 push**;不碰 master/main、不 `--no-verify`、不绕 hook。
— 即「**写 → 审 → 改 → 测 → 无头 → 截图 → 不达标继续迭代 → 完美验收 → commit**」,一圈不少。
## 4. 分 3 期开发(每期都走上面这一圈;不 push)
### 期 1 · 模特库地基
- 后端:`Model` 实体 + 迁移;`Asset.Category` 枚举加全;审核过滤改 person+tri_view+storyboard;后端单测。
- 数据:把**历史已成套模特(形象图+三视图)归集成 Model 实体**当测试数据;**删早期错图**理干净。
- 前端:左菜单 +「模特库」页(官方模板标签 / 我的模特 / 真人上传)。
- 验收:模特库页能看到归好的成套模特、官方标签;无头截图 + 0 console error。
### 期 2 · 图片趴三类
- 模特上身图(组,引用模特库)/ 平台套图(组)/ 自由创作 —— 落库 + 图片生成页接线。
- 前端标签表全对(上身图/套图/创作各归各类)。
- 验收:三类各生成→归类正确;截图核对。
### 期 3 · 视频趴(角色 + 分镜组)
- "人物"→"角色"改名 + 角色卡小改(承载 A 引用库 / B 新生成自动入库)。
- 分镜图成组(每脚本一组分镜 + 一组视频素材),理顺现有链路。
- 资产库"成片"→"素材";最终成片类隐藏。
- 验收:角色两条来法走通、分镜组正确;截图 + 链路零回归。
### 尾 · 声线(最后)
- 模特声线生成 + 模特实体挂声线 + 参考元素加"声音"选项。
---
## 5. 待定 / 后续
- 平台套图各平台尺寸规则(逐平台加)。
- 角色卡 UI 细节(做到期 3 再逐稿对)。
- 声线打包方式(挂在模特实体下)。
- 这些页用户还要逐页再过一遍。