# 模特库 + 资产模型重构 · 设计稿 > 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 再逐稿对)。 - 声线打包方式(挂在模特实体下)。 - 这些页用户还要逐页再过一遍。