将 Clover 从上层产品包旧仓库中独立出来,建立专属版本控制。 当前状态=纵切片端到端已打通(登录→选品→出文出图→审核→下载包), M1文案质量去套路化已验收。此提交作为后续按核销清单逐条修复的基线。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
50 lines
4.4 KiB
Markdown
50 lines
4.4 KiB
Markdown
# 核销表 · 第11环 裂变
|
||
|
||
> 90分级验收(孙总方法论·硬门禁)。已吸收独立交叉验证修正(⚠️)。本环是本轮**补全的缺失引擎环**。
|
||
|
||
## 模块目标
|
||
①1个爆款笔记 → 裂变出 N 套**完整笔记包**(非只换文案,含文案+配图整套) ②裂变在工作台内呈现(不是独立页割裂) ③裂变任务可追溯源(source_fission_id) ④参考度档位(高/中/低)控制与原爆款的相似度。
|
||
|
||
## 🔴 迁移版本号统一
|
||
- **010 = fission_tasks 表(本环)**
|
||
- 011 = benchmark_ids(第2环) + **source_fission_id(本环,合并进011)**
|
||
|
||
## Ralph 修改步骤
|
||
|
||
| # | 改什么 | 落点 |
|
||
|---|--------|------|
|
||
| S1 | 迁移010:新建 fission_tasks 表(id/source_note/reference_level/fanout_count/status/created_at) | 010_*.py(新) |
|
||
| S2 | FissionTask ORM 新建 | models/fission_task.py(新) |
|
||
| S3 | fission_service.py 新建(≤120行):接收源爆款+参考度+扇出数 → 构造 N 个子生成任务 | services/fission_service.py(新) |
|
||
| S4 | 裂变 prompt 模板:按 reference_level(高=贴原爆款结构/中=保卖点换角度/低=只借选题) 调 prompt | prompts/fission.py(新) |
|
||
| S5 | POST /fission 触发:写 fission_tasks,扇出 N 个 task(每个完整走文案+配图) | fission.py(新) |
|
||
| S6 | ⚠️函数名修正:子任务配图调 **image_gen.py:121 generate_storyboard_images**(原清单写 generate_image_set 不存在) | fission_service.py |
|
||
| **S7** | ⚠️归并(原 S2+S7 source_fission_id 重复):迁移011 task 表加 `source_fission_id INT NULL`+ORM 字段;fission 扇出时回填,标识子任务来源 | 011_*.py + task.py |
|
||
| S8 | 异步:扇出走 Celery generation 队列(N 套并发受 MAX_CONCURRENT 限) | fission_task.py(新) |
|
||
| S9 | dto.fission.ts 新建 | dto.fission.ts(新) |
|
||
| S10 | 工作台内呈现:任务列表区加"裂变"入口(非独立路由),FissionPanel 子组件 | workbench 或 tasks 页内 FissionPanel.tsx(新,≤80行) |
|
||
| **S10.5** | ⚠️审计补(AC9 遗漏):dashboard/page.tsx 加裂变任务统计/入口卡片 | dashboard/page.tsx |
|
||
| S11 | 参考度选择 UI:高/中/低 单选 + 扇出数 input(1-N,受 MAX_CONCURRENT) | FissionPanel.tsx |
|
||
| S12 | 进度回流:N 套子任务状态聚合显示(x/N 完成) | FissionPanel.tsx |
|
||
| S13 | 源追溯:子任务详情页显"来自裂变 #{fission_id}"角标 | tasks/[id] 页 |
|
||
|
||
## 验收清单(做完一个勾一个)
|
||
|
||
- [ ] **AC1**〔auto〕迁移010+011:`alembic upgrade head` 成功,fission_tasks 表存在,task 表含 source_fission_id。
|
||
- [ ] **AC2**〔auto〕触发裂变:POST /fission(源+参考度=中+扇出=3) → 200,返回 fission_id + 3个子 task_id。
|
||
- [ ] **AC3**〔auto〕完整笔记包:每个子任务跑完后**既有文案又有配图**(非只换文案)——查子 task 既有 TextCandidate 又有 ImageCandidate。
|
||
- [ ] **AC4**〔auto〕source 回填:`SELECT source_fission_id FROM task WHERE id IN(子)`全==该 fission_id(防链路断)。
|
||
- [ ] **AC5**〔auto〕参考度生效:高/中/低三档抓 prompt 请求体不同(高含原爆款全文,低只含选题),三档 prompt 互不相同(反向断言)。
|
||
- [ ] **AC6**〔auto〕配图函数:抓日志/打点确认走 generate_storyboard_images(非报 generate_image_set undefined)。
|
||
- [ ] **AC7**〔auto〕扇出受并发限:扇出数=10 但 MAX_CONCURRENT=5 → 排队不报错,最终全跑完。
|
||
- [ ] **AC8**〔human〕工作台内呈现:裂变入口在工作台/任务区**内**(非孤立新路由),点开有参考度+扇出数控件。
|
||
- [ ] **AC9**〔human〕dashboard 入口:⚠️dashboard 有裂变统计卡片/入口(S10.5),点击进裂变。
|
||
- [ ] **AC10**〔human〕进度聚合:裂变后 FissionPanel 显 "x/N 完成" 实时更新。
|
||
- [ ] **AC11**〔human〕源追溯:子任务详情页有"来自裂变 #X"标识,可回查源爆款。
|
||
- [ ] **AC12**〔human〕参考度肉眼差异:同源裂高/中/低各1套,高与原最像、低差异最大(北哥目视认可)。
|
||
|
||
## 待北哥定义(🔴阻断 S4/AC5/AC12)
|
||
- **参考度档位(高/中/低)的具体含义** + **裂变维度定义**(沿哪些轴裂变:选题/结构/卖点/人群/场景?)。北哥未给前 S4 用占位规则(高=结构+卖点全保/中=保卖点换角度/低=只借选题),AC12 暂以"三档肉眼有梯度差异"验收。
|
||
- 扇出数上限(受 MAX_CONCURRENT=5 约束,是否允许排队超 5)。
|
||
- 裂变是否消耗与正常任务相同的额度/并发名额。
|