Files
beige/通关路线图.md
yangqianqian 6a2632da70 baseline: Clover 独立仓库首次基线提交
将 Clover 从上层产品包旧仓库中独立出来,建立专属版本控制。
当前状态=纵切片端到端已打通(登录→选品→出文出图→审核→下载包),
M1文案质量去套路化已验收。此提交作为后续按核销清单逐条修复的基线。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:30:22 +08:00

170 lines
11 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Clover 通关路线图think 全流程产出)
> 产出日期2026-06-09
> 方法:/think-router 复杂度评估 + 第一性原理倒推 + 坑点深挖2个Explore agent审真实代码+ 多视角校准
> 唯一标尺:`验收清单.md`——勾上某项才算完成G2端到端一条龙跑通是闸门G1
> 状态图例:✅已勾(真验证) / 🔧进行中 / ⬜未开始 / 🔴致命坑 / 🟡阻塞坑 / 🟢风险
---
## 一、复杂度判断Cynefin
这是一件 **两段性质不同** 的事,不能用一个方法论盖全程:
| 段 | 性质 | 方法 | 对应验收 |
|----|------|------|---------|
| 第一段 生产链跑通 | **Complicated**(繁但确定) | 纵切片、逐接缝亲手验 | 第一道线 1A/1B/安全 |
| 第二段 过北哥抽检 | **Complex**(真探索) | 做真东西→北哥看→喂飞轮→迭代逼近 | 第二道线 |
五维:因果确定性🟡分裂(链清晰/质量探索) · 利益方🟢单(北哥) · 信息🟡中(质量标准缺) · 先例🟢高(产品包) · 约束🔴高(12红线)
## 二、方向收敛(项目真实方向)
1. **我之前的根本错误**:把"两段"当"一段",用 Complicated 打法(修零件报完成)对待最终要 Complex 迭代的目标,所以越修越漂。
2. **不可逾越的闸门**:第二段(北哥抽检)无法启动,除非北哥能真的从登录走到下载、拿到真素材包。**"端到端一条龙跑通"=从 Complicated 跨进 Complex 的唯一闸门**。它之前,质量/多轨/飞轮/美化全是空中楼阁——这是 G1 的深层原因。
3. **飞轮(1B)不是收尾装饰,是第二段的发动机**:闸门撞开→北哥看真东西→飞轮喂料→逼近"过抽检、完整可用"。
## 三、残酷真相(坑点深挖结论)
"零件齐全"是假象。真串起来,从地基到下载 **连环死 9 处**(详见第四节)。这恰恰印证 G1横向铺满零件纵向接缝一次没对过。
---
## 四、全部坑点(基于真实代码深挖,按死亡顺序)
### A. 地基坑(服务起不来,整条龙=0
| # | 坑 | 严重 | 位置 |
|---|----|------|------|
| D1 | backend/.env 不存在;根.env缺 JWT_SECRET/DATABASE_URL/MONGO_URI/REDIS_URLFERNET_KEY是占位符 | 🔴 | config.py:15-19 |
| D2 | docker-compose 路径错位nginx.conf 引用路径不存在nginx必崩compose只能从Clover根跑 | 🔴 | docker-compose.yml:94 |
| D3 | alembic迁移不自动跑起来是空库首请求即500003/004 downgrade有PG语法(MySQL炸) | 🔴 | Dockerfile/main.py |
| D4 | 无种子脚本:无账号(登录必败)、无预置素颜霜(无可选)、无违禁词 | 🔴 | scripts/ 空 |
### B. 生成棒接缝坑worker真跑必死
| # | 坑 | 严重 | 位置 |
|---|----|------|------|
| G1坑 | text_variants 调 client.chat.completions.create但AIClients无此方法→AttributeErrorLLM文案永远出不来,只能退化本地草稿 | 🔴 | text_variants.py:20-33 |
| G2坑 | Gemini fallback 无key(gemini_key=None)→主通道挂必炸,图全失败 | 🔴 | pipeline_steps.py:49 |
| G3坑 | SSE error事件 workspace_id写死0→被前端过滤丢弃,失败时前端永久loading | 🔴 | tasks.py:138 |
| G4坑 | 图存相对路径,但main.py没挂StaticFiles→前端<img>全404 | 🔴 | pipeline_io.py:120 |
| G5坑 | storyboard角色名(pain_scene等)与ImageRole枚举(pain等)对不上→7/8角色fallback成MAIN,信息全丢 | 🔴 | constants.py:39 vs enums.py:89 |
| G6坑 | provider不匹配:预检查不验provider,worker硬查"openai",存"apiports"则白跑 | 🟡 | task_service.py:18 |
| G7坑 | Celery retry重复写候选(最多4倍脏数据) | 🟡 | tasks.py:81 |
| G8坑 | httpx.AsyncClient不close,每任务泄露连接 | 🟡 | gemini_factory.py:106 |
### C. 交付端坑
| # | 坑 | 严重 | 位置 |
|---|----|------|------|
| C1 | download-file带auth,但前端window.open无法附带token→401,下不了 | 🔴 | delivery.py:95 / components.tsx:36 |
| C2 | 打包硬判 url.startswith("uploads/"),改绝对路径则zip图为空 | 🟡 | packaging_task.py:55 |
| C3 | 前端缺postcss.config.js→样式全失效(已修✅) | 已修 | 已补 |
| C4 | 去水印Pillow未装则静默退化(不炸但功能失效) | 🟢 | image_postprocessor.py:39 |
**致命坑合计D1-D4 + G1-G5坑 + C1 = 10个🔴**(撞闸门前必须全清)
---
## 五、策略(怎么打)
**核心策略:纵切片撞闸门,一次只通一棒,撞死就地修,禁止往下铺。**
- 打法不是"按坑点列表逐个修"(那是横向思维回潮),而是**沿一条龙从头走,走到哪棒死就修哪棒,修通立刻往下走**。坑点表是"预警地图",不是"施工顺序"。
- 每修通一棒 → 按 G2 报"勾上1A第X项,证据=可验证事实"。
- 同一接缝连续2次修不通 → 按§3撞墙规则 Pivot,报你介入。
- **最小一条龙的"最丑"标准**1产品·1条文案·1张图·1次审核·1个包。多轨/8图/美化/飞轮全部押后。
## 六、全方位行动方案(三层)
### 目标层O
北哥1名熟手,浏览器里独立走完[登录→选素颜霜→传图→生成→选稿→组长审→下载素材包],不靠开发,产出过北哥抽检。
### 阶段层(里程碑 = 验收线)
```
M0 地基通 → 服务起来+有账号+有素颜霜 → 勾 1A-1
M1 一条龙通→ 最丑端到端跑通(撞开闸门) → 勾 1A-2/3/7/8/9/10/11/12/13 (9项)
━━━━━━━━━ 闸门:北哥能看真东西了 ━━━━━━━━━
M2 飞轮通 → 1B四点+第一道线补全(多轨/违禁词/N图) → 勾完1A剩余+1B四点+安全
M3 抽检通 → 北哥真看真喂料,质量迭代逼近 → 第二道线(Complex,迭代非规划)
M4 上线 → 飞轮启动+独立AI审核 → 第三道线
```
### 执行层M0+M1 = 撞闸门,当前唯一战场,逐棒)
| 棒 | 动作 | 清掉的坑 | 勾上 |
|----|------|---------|------|
| 0a | 修docker-compose路径+补backend/.env全变量 | D1 D2 | — |
| 0b | 写种子脚本(3账号+素颜霜+5违禁词)+迁移自动跑 | D3 D4 | — |
| 0c | docker起全栈,熟手登录看到素颜霜 | — | **1A-1** |
| 1 | 选素颜霜+传图+建任务,抓包验无明文key | — | **1A-2,1A-3** |
| 2a | 修文案鸭子类型(G1坑)→真出1条文案 | G1坑 | 1A-5(部分) |
| 2b | 修生图provider/fallback(G2,G6坑)→真出1张图 | G2 G6坑 | **1A-7** |
| 2c | 修图片StaticFiles(G4坑)+角色枚举(G5坑) | G4 G5坑 | — |
| 2d | 修SSE error事件(G3坑)→进度+失败可见 | G3坑 | **1A-8** |
| 2e | 验去水印过流水线(C4) | C4 | **1A-11** |
| 3 | 挑这条文案+这张图 | — | **1A-9** |
| 4 | 组长登录看队列→通过 | — | **1A-10** |
| 5a | 修下载401(C1坑)→fetch+blob下载 | C1坑 | — |
| 5b | 打包→熟手下载→打开zip确认能用 | C2 | **1A-12,1A-13** |
**撞闸门验收**M1走完,1A 13项勾上9项(1A-1/2/3/7/8/9/10/11/12/13),北哥能看真东西→闸门开。
剩4项(1A-4标杆8特征/1A-5文案双轨/1A-6违禁词三级/部分)归M2加深。
---
## 七、多视角校准(自检盲点)
**视角1·北哥实用主义**"我要的是能用,不是你内部跑通。"
- ⚠️盲点:M1用我(开发)跑通≠北哥熟手能跑通。M1验收必须**北哥本人或我模拟纯小白点**,不能我用脚本验通就算。→ 修正:M1验收标准加一条"非开发视角点完全程"。
-真出图烧北哥key额度。→ M2前每次真跑都提前报你,你授权再跑。
**视角2·QA挑刺**"你怎么保证这次不又是假跑通?"
- ⚠️盲点:坑点是静态读码挖的,真跑可能冒新坑(尤其异步/Celery/Redis时序)。→ 修正:M1每棒"真点真看真下载",不接受单元测试代替;冒新坑就地加入坑表。
-10个🔴是"已知致命",可能有"未知致命"。→ 接受,纵切片的意义就是用真跑把未知逼出来。
**视角3·倩倩姐战略**"方向对不对,节奏谁定?"
- ✅两段论+闸门+飞轮发动机=方向收敛清晰。
- ⚠️节奏判断权在你:M0→M1是否一口气推?还是M0先给你验一次再推M1?→ 待你拍。
-Lead这次还用不用?它之前空转。→ 建议M0/M1我亲自逐棒干(链路串通需要全局视野,不适合派),M2加深再用团队并行。待你拍。
## 八、待你拍板3个判断点
1. **方向收敛**(两段论/闸门/飞轮发动机)校准了吗?
2. **节奏**:M0通了先停给你验,还是M0+M1一口气撞到闸门?
3. **谁干**:M0/M1我亲自逐棒(推荐),还是仍走Lead团队?
闸门撞开前,这份图就是唯一作战地图。每勾一项我按G2报证据。
---
## 九、【归一·补漏】质量内核坑(之前漏挖,北哥方法论只落地25-30%
> 教训:我把"已回填的质量标准"误判成"以后迭代的质量探索",整段漏挖。北哥最值钱的方法论(北哥回填解读与落点.md §3/§4)现在就该在代码里。
> 铁律A守住了✅:无硬编码"倍分子"/89元/玻尿酸,方法层数据层隔离干净。
| # | 北哥要的(方法层,全品类共用) | 现状 | 性质 |
|---|------------------------------|------|------|
| Q1 | 随机变量池ABC:身份场景×起因情绪×小缺点 各随机抽1,N条不撞,池可扩展 | **0行** | 🔴反同质化命脉 |
| Q2 | 5步框架:Hook暴击低价→痛点共鸣→救星登场→卖点罗列(✅小标题)→逼单 | 旧7步SOP,逻辑全错 | 🔴 |
| Q3 | 正文四段(痛点→实测→种草→引导)+350-400字+3-5段空行 | 180-260字,无四段 | 🔴 |
| Q4 | 佛系反推销人设("东西放这了买不买跟我没关系")+70%场景30%产品 | **0行** | 🔴 |
| Q5 | 违禁词:negative类(神器/福音/救急单品/遮羞布/日常维稳/精简底妆/不仅而且/焕发/守护/尽享)**prompt负向约束不准写进正文**,非auto_fix事后替换;遮羞布漏收 | 走auto_fix替换+漏遮羞布 | 🟡机制错 |
| Q6 | 6图顺序:封面痛点大字→单品特写+品牌词→成分→质地→上脸对比→促单;品牌词2/6张·转化句6·对比5 | 顺序3/6不匹配 | 🟡 |
| Q7 | 反AI味+防人群重叠+防场景重复(北哥最大痛点) | 仅相似度去重,无源头prompt约束 | 🟡 |
| Q8 | 标题公式(肤质/价格/功效/夸张/标题党各5词例) | 笼统一句 | 🟢 |
## 十、撞闸门新定义(工程+质量合一)
**闸门 = 跑通 AND 产出合格。** 只通工程→跑通但AI味垃圾,北哥毙;只改质量→跑不起来,等于没改。M1每棒"修工程接缝 + 落北哥方法论"一次到位:
| 棒 | 工程(清坑) | 质量(落方法论) | 勾验收 |
|----|-----------|---------------|--------|
| 2a 出文案 | 修鸭子类型G1坑 | 落Q1变量池+Q2 5步+Q3四段350字+Q4佛系人设+Q7反AI味+Q8标题 | 1A-5 |
| 2b 出图 | 修provider/fallback G2/G6坑 | 落Q6 6图顺序对齐 | 1A-7 |
| 2c 图可见 | 修StaticFiles G4+角色枚举G5坑 | Q6角色名统一 | — |
| 2d 进度 | 修SSE G3坑 | — | 1A-8 |
| 2e 去水印 | 验C4 | — | 1A-11 |
| (违禁词) | — | 落Q5 negative改prompt负向约束+补遮羞布 | 1A-6部分 |
**M1验收(双标准)**:①北哥/纯小白视角点完全程能下载 ②产出3条文案"像素人不同质化",北哥认可。机器测试过不算过。
## 十一、节奏(按推荐)
M0通了先停给倩倩姐验一次(看到登录+素颜霜)→再推M1。M0/M1我亲自逐棒(链路串通+方法论落地需全局视野),M2加深再用团队并行。