将 Clover 从上层产品包旧仓库中独立出来,建立专属版本控制。 当前状态=纵切片端到端已打通(登录→选品→出文出图→审核→下载包), M1文案质量去套路化已验收。此提交作为后续按核销清单逐条修复的基线。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.8 KiB
Clover 链路缺失诊断 + 代码层/Prompt层开工清单
对照俊达"完整闭环",逐行扒 Clover 真实代码后的诊断。每条都标了文件:行号和改法。 ⚠️ 并发:backend/frontend 另一窗口在改(15:34时间戳),本清单只诊断+给改法,落地前先看冲突列。
一、定性结论(先看这个)
你说的三个症状,根因各不相同,别一锅炖:
| 你的感受 | 真实根因 | 性质 |
|---|---|---|
| "点文案按钮404" | Sidebar导航写死了4个不存在的路由 | 死链bug,半天能修 |
| "界面比较空" | prompt产出丰富,但前端没把"五维分/角度/飞轮/资产"可视化出来 | 呈现层缺失 |
| "逻辑链路有缺失" | 能跑通,但是"断点式8孤岛",不是俊达的"一个任务流过的闭环" | 链路编排缺失 |
反常识发现:prompt层不空,反而饱满。
_text_prompt.py已有人设/变量池ABC/5步框架/四段结构/5类标题公式/反AI味/emoji规则,做了方法层vs数据层分离。空的是"产出之后怎么呈现、怎么串环、怎么沉淀"。
二、404死链详情(最急,先修这个)
frontend/src/components/layout/Sidebar.tsx:19-28 NAV_ITEMS 写死了占位路径:
| Sidebar标签 | 写的href | 真实路由 | 现状 |
|---|---|---|---|
| 选择文案 | /tasks |
只有 /tasks/[id]/text |
🔴404 |
| 选择图片 | /images |
只有 /tasks/[id]/images |
🔴404 |
| 建立任务 | /tasks/build |
不存在 | 🔴404 |
| 任务列表 | /tasks/list |
不存在 | 🔴404 |
根因:文案/图片页是挂在具体任务下的(路由含 [id],见 app/tasks/[id]/text/page.tsx),但侧边栏把它们做成了无taskId的全局入口。没有"当前任务"时点击→跳无id路由→404。
改法(二选一,推荐B):
- A临时止血:把这4个死项从NAV_ITEMS删掉/置灰,只留真实可达的(工作台/开新任务/审核台/历史/配置)。
- B正解:导航改成"任务流"语义——侧边栏不再放"选择文案"这种环节级入口,环节入口由"当前进行中的任务"动态带 taskId 跳转(dashboard已有
RecentTasksBar组件可复用)。这正是俊达"一个任务流过所有环"的呈现方式。
三、逻辑链路缺失(你说的"链路不完整")
真实可跑通的链路(从代码反推):
dashboard → tasks/new → [id]/text → [id]/images → [id]/confirm → review → history
✅ ✅ ✅ ✅ ✅ ✅ ✅
单条链路是通的。但对照俊达缺3个闭环回路:
| 缺的回路 | 俊达有 | Clover现状 | 触达文件 |
|---|---|---|---|
| 改稿→飞轮 | 人改AI草稿,diff喂回去(最强信号) | SignalType(enums.py:57-63)只有5种,无text_edit;TextCandidate(task.py:73)无edited字段 |
见配套《增量①改稿diff细案》 |
| 审核→爆款库 | 过审的爆款拆解进资产库复用 | fission表已建有reference_level,但无service/api接线 |
配套映射文档② |
| 任务列表回看 | 全局看所有任务状态流转 | 页面根本不存在(Sidebar指向的/tasks/list是空的) |
需新建 app/tasks/list/page.tsx |
链路不是"断",是"只有一条单向流,没有俊达那种'产出→沉淀→回灌'的回路"。这跟底层逻辑逆向文档§2飞轮四动作完全对应——Clover的飞轮①捕获缺最强信号、资产库②没接线。
四、呈现层缺失(你说的"界面空")—— 已逐组件核实,需修正
核实后修正:文案卡 TextCandidateCard.tsx 其实很饱满,渲染了:角度标签(55)、正文+展开收起(56-67)、违禁词状态(70-78)、七维分数条ScoreDimBars(81)、AI评委总评verdict+summary(84-93)。这张卡不空。
所以"界面空"不在文案卡。真正可能空的位置,重新定位:
| 怀疑位置 | 待核实文件 | 为什么怀疑 |
|---|---|---|
| 工作台dashboard | app/dashboard/page.tsx(已读) |
🔴确证空:只有3个DashCard+一句问候,无数据看板、无近期任务、无飞轮进度。俊达进系统是仪表盘,Clover是3个按钮 |
| 图片卡 | ImageProgressCard.tsx |
未核,存疑 |
| 审核卡 | ReviewCard.tsx |
未核,存疑 |
| 历史/归档页 | app/history/page.tsx |
未核,可能只是列表无成品预览 |
| 任务列表页 | 不存在 | 🔴确证缺失 |
修正结论:不是"卡片空",是"着陆页和全局视图空"。用户一进来是dashboard(3个按钮),缺俊达那种"今天生成X条/待审Y条/飞轮已学Z条"的仪表盘感。空的是框,不是卡。这个判断比之前准。
五、Prompt层到底缺什么(其实缺得不多)
_text_prompt.py 已很饱满。对照俊达只缺2块:
- 改稿示范注入:俊达把"人改过的好稿"当few-shot塞进prompt。Clover的
build_prompt(line126) 现在只注入产品数据+随机变量,没有"参考这些人工修订过的范本"这一段。← 配套改稿diff细案S4要补的就是这个。 - 图片prompt的资产复用:文案prompt成熟,但生图prompt(
storyboard.py)有没有复用"历史选中的好图风格"待查。俊达双通道+后台选优,Clover是否只是单通道一次性生图待确认。
结论:prompt层不需要大改,只需把飞轮的"改稿范本"接进
build_prompt的注入段。这跟"界面空"是两码事,别混。
六、开工优先级(按ROI和并发安全排序)
| 序 | 干什么 | 工作量 | 并发风险 | 价值 |
|---|---|---|---|---|
| P0 | 修Sidebar死链404 | 半天 | 🟢低(纯前端导航) | 立刻不404 |
| P1 | 核查并补全卡片字段渲染(五维分/角度/违禁词) | 1-2天 | 🟡中(动卡片组件) | 界面立刻"饱满" |
| P2 | 改稿diff飞轮(见独立细案) | 已拆好 | 🔴高(碰enums/review) | 最强飞轮信号 |
| P3 | 新建任务列表页 + 导航改任务流语义 | 1-2天 | 🟡中 | 链路闭环呈现 |
| P4 | 爆款库接线 | 二期 | 🟢低(新模块) | 资产化 |
七、并发冲突列(另一窗口在改,落地前必看)
| 文件 | 冲突等级 | 说明 |
|---|---|---|
api/v1/review.py |
🔴最高 | 改稿diff细案已确认绕开它走task_actions |
constants/enums.py |
🟡 | 加text_edit信号要动这里,仅此处需手工merge |
components/tasks/*.tsx |
🟡 | 补字段渲染会动卡片,先git status看另一窗口动没动 |
Sidebar.tsx |
🟢 | 导航文件,另一窗口大概率没碰,P0可先动 |
落地任何一条前:先
git status+git log --oneline -5看另一窗口提交到哪了,再动手。