# Clover 总核销表（做完一项勾一项·任务只减不增）

> 孙总方法论载体：总核销表+分模块核销表，每模块小步快跑+高频check，门禁硬卡。
> 勾选规则：□未做 / ◐做了没验 / ✅真端到端验过(附证据) / ⏸️阻塞(等北哥定义)。
> **报"✅"必附证据。绝不信第一遍自评,每环必独立交叉核对(孙总:实测AI谎报"都做了"实际20-30%)。**
> 事实底座：勘验workflow wf_d4c1dbab-583（2026-06-12，6容器全Up，task41端到端312s成功）。

## 终点线（倩倩姐2026-06-12拍板·全量）
KR1链路连通 + KR2质量达标 + KR3自主可验 + KR4引擎补全(第2环+第11环) 全绿 = 全勾完。

---

> 🟢 全部7份模块核销表已细化到90分级(每份含 Ralph修改步骤 + auto/human验收清单 + 已吸收独立交叉验证修正⚠️)。

## P0 主链修真bug（第5环文案 + 第6环配图）

| ID | 任务 | 模块核销表 | 细化 | 状态 |
|----|------|-----------|------|------|
| M0 | 模型探活(opus-4-8/gpt-5.5)→定模型 | — | — | ✅ 2026-06-12探活:opus-4-8/gpt-5.5/sonnet-4-5全HTTP200真可用,/models已列出。按拍板用opus-4-8(文案) |
| M1 | 第5环 写文案修bug | plans/核销-第5环-写文案.md | 🟢S1-S9/AC1-6 | ◐ 本体做了(随基线6a2632d,LLM生成+7维AI评委+合格线80+先展示后台补三链齐全:tasks.py:108/pipeline_io.py:136/replenish_task.py)。质量优化循环(text_variants.py:136)暂关等北哥prompt。**独立仓无专项commit,需补端到端验证标✅** |
| M2 | 第6环 配图修bug+3套 | plans/核销-第6环-配图.md | 🟢S1-S8/A1-A8(含A6b) | ✅ 2026-06-15 task62端到端真跑:3套A/B/C各2张入库,6张全1024×1536,瓶身只印素颜霜不P品牌词,背景干净无杂物,三套真拉开差异(A痛点/B场景/C成分背书),倩倩姐过目认可前后对比图能用。倩倩姐独立核对全绿 |

## P1 配套+底座（第8环审核 / 第12环归档 / 工程底座）

| ID | 任务 | 模块核销表 | 细化 | 状态 |
|----|------|-----------|------|------|
| M3 | 第8环 审核(死链/打回回路) | plans/核销-第8环-审核.md | 🟢S1-S6/A1-A8 | □ |
| M4 | 第12环 归档(日期品类筛选/导出) | plans/核销-第12环-归档.md | 🟢S1-S8/A1-A12 | □ |
| M5 | 工程底座(5并发/magic/选标杆/置灰/lightbox) | plans/核销-工程底座.md | 🟢S1-S6/A1-A8 | □ |

## P2 引擎补全（第2环标杆 / 第11环裂变）

| ID | 任务 | 模块核销表 | 细化 | 状态 |
|----|------|-----------|------|------|
| M6 | 第2环 标杆8特征分析 | plans/核销-第2环-标杆.md | 🟢S1-S12(S12拆a/b)/A1-A12 | ◐ **引擎双路径端到端真验完成**(2026-06-16 c1ac2a6):①文本路径(手填亮点)8维齐全conf0.9 ②截图vision路径(真喂4.7MB素颜霜图)source=vision真读图,识别三段式卖点/√图标/大字报模板/办公背景,看不到的诚实标"截图未体现"。features_json落库done。端点健壮(404/422/读图失败降级/key缺失提示)。**剩非引擎本体待办:①北哥过目8维草案标✅满分 ②第5/6环消费features_json对标(接线,归M6下游或随M1/M2)**。8维=banana不变量+俊达配方+3链接 |
| M7 | 第11环 裂变(工作台内) | plans/核销-第11环-裂变.md | 🟢S1-S13(含S10.5)/AC1-12 | ◐ **引擎端到端真跑通**(2026-06-16 cefdbaa):①fission_service扇出1源→N子任务(回填source_fission_id,复用主管道run_generation_pipeline),MAX_FANOUT=5红线 ②fission_prompt三档(high/mid/low)规则 ③tasks.py worker识别裂变子任务→注入对应档位进文案上下文(自抓关键缺口,**worker曾跑旧内存代码未热重载,restart后实测注入日志level=high真出现**) ④POST/fission触发+GET/fission/{id}进度聚合,main.py注册路由 ⑤实测fission_id=2扇出task70/71,子任务带source_fission_id+档位注入生效,进度端点聚合正确(total=2/done=0/generating)。**剩待办:①三档真实措辞待北哥定义(现占位规则) ②前端裂变入口+进度呈现(归前端攒批) ③子任务真出3套差异化文案+配图的质量验收(需北哥过目)** |

## P3 前端打通+飞轮（2026-06-16 九文档审核结论·按序逐条修）

> 来源：倩倩姐扒的对标文档+另一AI建议，经3独立agent交叉验证。合5桶。门禁同上。
> 排期：倩倩姐2026-06-16拍板"全都需要修，按顺序一个一个往下修"。

### 桶A 必须做（主链可用性，最先修）
| ID | 任务 | 根据 | 状态 |
|----|------|------|------|
| A1 | Sidebar 4个死链路由(/tasks /images /tasks/build /tasks/list 全不存在) | Sidebar.tsx确证 | ✅ 2026-06-16 删4死链+补回/review审核台(限supervisor+admin),tsc全量EXIT0,commit 77f52e7 |
| D1 | 改稿进飞轮(SignalType.text_edit + TextCandidate.edited + 改稿端点走task_actions) | 最强真实信号 | ◐ 后端✅2026-06-16端到端真跑(edited False→True+飞轮信号落库weight=5,实测抓出ENUM未同步bug已修,commit e3fb6f2)。**前端改稿框入口攒批做(倩倩姐2026-06-16:后端先串完前端攒批)** |
| C2 | 审核界面显分(读score_json总分,不读eval_score NULL列) | 审核可判断 | ✅ 2026-06-16 review.py复用_score_array_to_obj算总分+7维,ReviewCard接ScoreDimBars(passLine=80红线),端到端验task40返回total=83,新旧维度兼容,commit ea423e8 |
| B7 | 事件处理补齐(SSE/轮询状态流转) | 前端诊断 | ✅ 2026-06-16 核实已做无缺口:SSE签ticket换JWT(?ticket=合规红线)+useSse消费progress/done/error全链+轮询兜底,后端事件发布到位,标绿 |
| B6 | 错误态呈现(status=failed前端可见) | 前端诊断 | ✅ 2026-06-16 后端加TaskStatus.FAILED终态+异常区分重试中vs耗尽(耗尽落failed不retry)+014迁移ALTER status ENUM;前端fatalError state+useSse error不再静默丢+FatalErrorBanner提示+failed标签(列表/历史页可见,history纳入HISTORY_STATUSES),tsc EXIT0 |

### 桶B 飞轮专项（产品最大亮点·做扎实+前端呈现）
| ID | 任务 | 守的底线 | 状态 |
|----|------|---------|------|
| E12 | AI评图分进飞轮:仅"生成时筛选+前端展示X分已入飞轮" | 权重只认真实信号(选/改/审),eval_score留NULL铁律 | □ |
| FV | 飞轮可视化=轻量化关键节点反馈(让客户感到确实越用越好) | 不做独立飞轮主视图大页(砍E01) | □ |

### 桶C 接线（数据流薄，主链通后接）
| ID | 任务 | 状态 |
|----|------|------|
| B1 | 图片按strategy分组(generationStore现一维平铺) | □ |
| C1 | 任务看板 | □ |
| B2/B3/B4/B5 | 前端数据流补齐 | □ |
| C3/C4 | 展示层补薄 | □ |

### 桶D 踩刹车（砍/缓，防堆伪需求偏离纵切片）
| ID | 任务 | 裁决 |
|----|------|------|
| E04 | 竞品笔记数据监控 | ✅砍(自动抓小红书=合规反爬红线,倩倩姐2026-06-16拍板) |
| E02/E13/E05/E08/E01/E22 | 各类增强 | ⏸️二三期或砍,本轮不做 |

### 桶E 需补充（缺口补全）
| ID | 任务 | 状态 |
|----|------|------|
| 补1 | 上传主图校验(必含产品瓶身,防质地图/手臂图当主图) | □ |
| 补2 | status=failed 完整处理(后端+前端) | ✅ 同B6(2026-06-16),后端FAILED终态+前端可见,commit 1b48875/ffc213f |
| 补3 | git版本兜底 | ✅2026-06-16已建Clover独立仓库,基线6a2632d |
| D2 | 数据复盘(飞轮喂料可见) | □ |
| D3 | 爆款解析(并入M6标杆) | ⏸️随M6 |

---

## P4 本轮执行清单（倩倩姐2026-06-12实跑15问+截图欠账·去重合并·按序R1→R8做一块核销一块）

> 来源：倩倩姐亲自实跑前端提15问 + 上次实跑截图欠账(C3/C5/C7/B1/M3/M4/M5/E12/补1/D2)。
> 经4 agent并行审码定位 file:line + 2交叉核(is_active登录校验/api-keys路由前缀)。
> 顺序倩倩姐拍板：P0(R1挑图体验/R2重生/R3生图质量) → P1(R4工作台/R5多图/R6账号) → P2(R7飞轮/R8归档)。
> 拍板3点：①operator能看改**全部**产品档案 ②3套图是前端没分组非后端没出 ③截图欠账全接入不许丢。

### R1 挑图页体验（P0）
| 子项 | 去重映射 | 根因证据 | 状态 |
|------|---------|---------|------|
| 图按A/B/C分组展示 | =既有B1(九文档桶C) | ✅ImageStrategyGroup按strategy分3组,page.tsx:34-36+pipeline_io.py:263 | ✅ |
| 点图放大看全图lightbox | =C5,既有M5含 | ✅ImageLightbox object-contain完整不裁+ESC/遮罩关,page.tsx:78接线 | ✅ |
| 组内按seq固定6图序 | 问题12新 | ✅组内sort by seq升序,后端pipeline_io.py:272推seq+sse.ts声明 | ✅ |
| 修"交审"按钮点不动 | 问题7新bug | ✅useSse.ts:24进任务clearSelections清残留,选0张才灰 | ✅ |
| 修"批次重试"点不动 | 问题8新bug | ✅按钮可点+发请求+ROLE_LABEL中文名;单批重生归R2(一期整体重生已标注) | ✅ |
| 进度条补五维(不全0) | =B1实跑(≠九文档B1) | ✅占位0→异步GET补全,后端_score_array_to_obj返七维+dims,ScoreDimBars消费 | ✅ |

> R1 核销证据：tsc EXIT=0(0错误) + 独立agent交叉重核5✅+1⚠️一期妥协(单批重生归R2),无漏接线/无类型隐患。2026-06-12。

### R2 单张/单套重生+人工提示词（P0）
| 子项 | 去重映射 | 根因证据 | 状态 |
|------|---------|---------|------|
| 后端regenerate加strategy/role/custom_prompt | 问题6新 | ✅RegenerateRequest请求体+role必配strategy校验,透传enqueue→Celery→pipeline→image_gen全链路 | ✅ |
| 前端单张/单套重生+提示词输入框 | 问题6新 | ✅RegenControls弹窗(含custom_prompt框)+每张"重生此张"+每套"重生整套"+同strategy+role去重展示最新 | ✅ |

> R2 核销证据：①后端真import+4签名校验通过 ②alembic 017(is_regen)升级到head ③Pydantic五模式校验全过(整体/单套/单张/非法strategy拦/超长拦) ④生图局部重生4逻辑测试过(单张只1张/custom_prompt注入/全量3张/匹配不到回退) ⑤前端tsc EXIT=0 ⑥独立agent交叉审8项:7✅+1硬伤(空文案降级生图)已修(无文案硬失败推error40002不静默降级) ⑦红线守住:重生新增不删旧/eval_score留NULL/合规约束不被custom_prompt覆盖(sanitize+追加末尾)。2026-06-12。

### R3 生图质量（P0·C3硬伤提前）
| 子项 | 去重映射 | 根因证据 | 状态 |
|------|---------|---------|------|
| C3中文乱码(canvas叠字) | =C3,记忆标硬伤 | 倩倩姐2026-06-12拍板"只留口子不实现":OVERLAY_TEXT_RENDER_ENABLED=False+image_gen.py TODO(C3-overlay)接入点;本轮验收图大标题"倍分子素颜霜"+瓶身字清晰未触发错别字 | ✅ |
| C7像小红书(prompt约束) | =C7截图🟡 | 新增IMAGE_XHS_STYLE_CONSTRAINTS(反电商/素人感)append到base_prompt;真实验收:参考图笔电背景→生成图换梳妆台镜子生活场景,带标题/卖点/#标签/emoji,明显去电商化 | ✅ |
| 补1上传主图必含瓶身校验 | =既有补1 | 后端2层硬拦截已就位(task_service.py:57建任务校验+pipeline_io.py:199worker兜底);前端ProductSubComponents.tsx加引导"必须含产品主体,质地图不能替代主图"(倩倩姐定调:质地图也算产品但主体必传) | ✅ |
| C1产品一致(走真图) | =既有C1 | 真实端到端:产品5真图(白罐金边盖)→生成图瓶身忠于参考图原样,印"倍分子焕颜沁透水润 素颜霜 SKIN CREAM"未改包装/未混入他品;apiports503自动回落codeproxy+gpt-5.5强档兜底 | ✅ |

> R3 核销证据(2026-06-17真实端到端)：worker容器内 r3_verify.py 用产品5真图+真key+真模型生 product_closeup 特写图,83秒,1.9MB,AI分82。独立Explore agent交叉审4处改动无硬伤、R1/R2回归安全。
> 备忘(非R3,记R5收紧)：ALLOW_TEXT_ONLY_IMAGE默认true第三层放水,与前端引导文案语义不一致;当前前两层防线已拦截"入镜却纯文生图",R5多图时一并收紧默认值。
> 待优化(非阻塞)：①产品5未录brand_keyword(品牌词客户填,本次验证未带词) ②生成图出现"核心买点。"模板占位词漏到图上=文案字段没填实,记文案优化。

### R4 三功能工作台（P1·形态级）
| 子项 | 去重映射 | 根因证据 | 状态 |
|------|---------|---------|------|
| 文案/图片排版/裂变三独立入口+可连贯 | 问题3新形态 | Sidebar线性流水线,裂变前端零入口 | 🟢 倩倩姐2026-06-15拍板"三并列入口";Sidebar.tsx改三并列(文案创作/tasks/new·图片排版/history·裂变扩散/fission);裂变扩散=独立裂变页(倩倩姐拍板"新建独立裂变页",app/fission/page.tsx+FissionLauncher+FissionProgress);tsc零错 |
| 图片排版可脱离文案独立用 | 问题3新 | images页强依赖text页带入 | 🟢 图片排版入口落/history每行加"排图"链→/tasks/{id}/images(图片步骤需task id,从历史任一非failed任务直接进排图,不强依赖刚走完text);components.tsx已加 |
| supervisor含运营全部操作 | 问题9新 | AuthGuard:18把/tasks/new挡住supervisor | 🟢 AuthGuard:18已加supervisor;ProgressBar:25只排除admin;后端POST/tasks用require_write_permission不卡角色(前轮R4-a改) |
| 导入文案补粘贴/上传入口 | 问题11新 | tasks/new:48直跳过输入,/import-text没调 | 🟢 新建ImportTextModal(粘贴多条用"---"切分);new页"导入外部文案"→先校验→开弹窗→建import任务→逐条POST/api/v1/tasks/{id}/import-text→跳text页;半成品态保留task_id跳text可续;tsc零错;端点路径核对/api/v1/tasks/{id}/import-text真实存在 |
| 第8环审核回路(死链/打回) | =既有M3 | M3未开工 | 🟢 M3前后端已建成(前轮核实非未开工);_fmt_task补review_status/reject_reason/reviewed_at修死链;RejectReasonBanner组件text/images页呈现打回原因 |

### R5 产品多图（P1）
| 子项 | 去重映射 | 根因证据 | 状态 |
|------|---------|---------|------|
| 产品图多张(DB+上传端点+前端multiple) | 问题2/14新 | image_path单值字符串,无multiple,覆盖式 | □ |
| 生图按场景选用对应图 | 问题2新 | pipeline_io只读单条image_path | □ |
| operator选品/快速建品/产品入镜 | 问题1新 | POST/products限admin,operator不能建 | □ |

### R6 账号体系+Key+权限（P1）
| 子项 | 去重映射 | 根因证据 | 状态 |
|------|---------|---------|------|
| 后端users.py增/删/列用户(删=软删is_active) | 问题15新 | 无users CRUD,is_active登录已校验:37 | □ |
| 前端配置台账号管理Tab | 问题15新 | 无账号管理入口 | □ |
| Key绑定账号显式展示 | 问题15新 | UserApiKey已按user隔离,只缺前端展示 | □ |
| operator配置编辑权(放开全部产品) | 问题13a新 | /config硬限admin,products CRUD require_admin | □ |
| 保存按钮补错误提示(治点不动) | 问题13b新 | ProductForm校验静默return无提示 | □ |

### R7 飞轮闭环+可视化（P2）
| 子项 | 去重映射 | 根因证据 | 状态 |
|------|---------|---------|------|
| 飞轮片段注入生图链路(补断点1) | 新 | run_image_generation没传flywheel_fragment | □ |
| 选图信号带strategy进飞轮(补断点2) | 新 | image_select的angle_label=None空转 | □ |
| 统一前端查询与注入的计数口径 | 新 | service用次数/aggregator用权重不一致 | □ |
| AI评图分仅展示+生成筛选 | =既有E12 | 守eval_score NULL红线 | □ |
| 飞轮可视化轻量节点反馈 | =既有FV/D2 | 让客户感到越用越好 | □ |

### R8 归档（P2）
| 子项 | 去重映射 | 根因证据 | 状态 |
|------|---------|---------|------|
| 历史打回显示原因 | =问题10,既有M4沾边 | _fmt_task()没返reject_reason,前端没读 | □ |
| 日期/品类筛选+导出 | =既有M4 | M4未开工 | □ |

---

## 🔴 跨模块迁移版本号统一（防三环撞008车）
008=brand_keyword / 009=benchmark_analyze_fields(含features_json) / 010=fission_tasks表 / 011=task_benchmark_fission_fields / 012=product_target_audience / 013=text_candidate edited+signal_type ENUM补text_edit(D1已落) / **014=generation_tasks.status ENUM补failed(B6已落)**。下一个可用=015。

## 总验收（最高门禁）

| ID | 任务 | 状态 |
|----|------|------|
| Z1 | 一条龙真跑通(录屏为证) | □ |
| Z2 | 北哥抽检文案+图认可 | □ |

---

## 待北哥确认（不是干等·先提炼草案再请北哥过目）
1. 标杆8特征具体哪8维 → **我先从banana结构+俊达逻辑+3链接提炼8维草案,北哥只需过目确认/微调**
2. 裂变参考度档位(高/中/低)各多大改动、裂变维度可选哪些 → **先移植banana裂变流程打通,再请北哥定档位**
3. ~~90分过滤后不足数量~~ → **已定:合格线80(红线)+先展示后台补,已实现,此条作废**
