Files
beige/plans/Clover链路缺失诊断与开工清单.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

114 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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 链路缺失诊断 + 代码层/Prompt层开工清单
> 对照俊达"完整闭环",逐行扒 Clover 真实代码后的诊断。每条都标了**文件:行号**和**改法**。
> ⚠️ 并发backend/frontend 另一窗口在改15:34时间戳本清单只诊断+给改法,落地前先看冲突列。
---
## 一、定性结论(先看这个)
你说的三个症状,根因各不相同,别一锅炖:
| 你的感受 | 真实根因 | 性质 |
|---|---|---|
| "点文案按钮404" | Sidebar导航写死了4个不存在的路由 | **死链bug**,半天能修 |
| "界面比较空" | prompt产出丰富但前端没把"五维分/角度/飞轮/资产"可视化出来 | **呈现层缺失** |
| "逻辑链路有缺失" | 能跑通,但是"断点式8孤岛",不是俊达的"一个任务流过的闭环" | **链路编排缺失** |
> 反常识发现:**prompt层不空反而饱满**。`_text_prompt.py` 已有人设/变量池ABC/5步框架/四段结构/5类标题公式/反AI味/emoji规则做了方法层vs数据层分离。空的是"产出之后怎么呈现、怎么串环、怎么沉淀"。
<!-- 后续Edit补充二、404死链详情 / 三、链路缺失 / 四、呈现层缺失 / 五、prompt层缺什么 / 六、开工优先级 / 七、并发冲突列 -->
---
## 二、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` | 未核,可能只是列表无成品预览 |
| 任务列表页 | 不存在 | 🔴确证缺失 |
> **修正结论**:不是"卡片空",是"**着陆页和全局视图空**"。用户一进来是dashboard3个按钮缺俊达那种"今天生成X条/待审Y条/飞轮已学Z条"的仪表盘感。空的是**框**,不是**卡**。这个判断比之前准。
---
## 五、Prompt层到底缺什么其实缺得不多
`_text_prompt.py` 已很饱满。对照俊达**只缺2块**
1. **改稿示范注入**:俊达把"人改过的好稿"当few-shot塞进prompt。Clover的 `build_prompt`(line126) 现在只注入产品数据+随机变量,**没有"参考这些人工修订过的范本"这一段**。← 配套改稿diff细案S4要补的就是这个。
2. **图片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` 看另一窗口提交到哪了,再动手。