# 俊达产品 → Clover 增量落地映射（对照代码版）

> 2026-06-15 落盘。来源：俊达万牛会分享（PPT 31页《电商XAI·一家小公司的探索》+ 现场演示视频2段 + 倩倩/俊达口述全文稿）。
> 目的：把俊达那套小红书电商全链路AI系统里**值得借鉴的增量**，逐条对照 Clover 现有代码拆到「动哪个文件、加哪张表、改哪个函数」，开工直接照做。
> 对齐基准：Clover 走 **13环目标导向**（见 `plans/13环目标导向-修改验收总纲.md`），当前 P0 修第5/6环、P2 等北哥给定义。本文增量**全部挂到 13 环语言下**，不另起炉灶。
> 代码事实底座：勘验于 2026-06-15，backend 迁移已到 011，6容器可跑通（task41 端到端 312s 成功）。

---

## 〇、一句话结论（先看这个）

俊达和 Clover 是**同构但错位**：俊达铺的是**全链路广度**（内容+客服+企微+ERP+投放闭环+AI做产品），Clover 扎的是**内容生产单点深度**（尤其生图工程化，比俊达展示的更细）。
所以借鉴 = **用俊达的广度，补 Clover 深度之外的空白**，不是照抄。

**经代码核实后，真正的增量只有 4 个（按 ROI 排序）：**

| 优先级 | 增量 | Clover 现状 | 落到 13 环 | 建议窗口 |
|---|---|---|---|---|
| ⭐P0-轻 | **改稿 diff 作飞轮最强信号** | 🔴 缺：飞轮缺这一路信号 | 增强第8环审核回路 | 一期 1B 可补 |
| ⭐P1 | **爆款拆解中心（产品化）** | 🟡 表建了没接线 | 第11环裂变的「前置入口」 | 一期可补 |
| P2 | **素材资产化 + 效果评级库** | 🔴 完全没有 | 第12环归档的「升级版」 | 留二期 |
| P3 | **提示词版本化中台 + 投放数据闭环** | 🔴 没有 | 超出13环范围 | 留二/三期 |

> ⚠️ 两个**伪增量**（看着像缺、其实不缺，别浪费工时）见 §五。

---

## 一、Clover 代码现状基线（落盘锚点，后续每条增量对照这个）

> 增量要挂在已有代码上，先把"已经有什么"钉死，避免重复造或挂错地方。

### 飞轮（已跑通，是 Clover 的魂）
- **信号枚举**：`backend/app/constants/enums.py` → `SignalType` 5个值（text_select/image_select/approve/reject_with_reason/regenerate）+ `SIGNAL_WEIGHTS` 权重表（选+3/审过+5/打回-3）。
- **信号写入**：`app/services/flywheel_service.py:record_signal()` — 业务接口内部调用，不暴露独立埋点端点（契约红线）。
- **信号采集入口**：`app/api/v1/task_actions.py`（选文案/选图）+ `app/api/v1/review.py`（审核 approve/reject）。
- **聚合注入**：`app/services/ai_engine/preference_aggregator.py:aggregate_preference_context()` — 取最近50条 → 最常选角度 + 打回原因近3条原文 → 拼 `prompt_fragment`。
- **prompt 组装**：`app/services/ai_engine/prompt_composer.py:compose_variants()` — 飞轮片段追加到 user_prompt 末尾（不污染 system 红线）。
- **数据表**：`app/models/flywheel.py` → `preference_events`（迁移004）+ `ai_call_logs`。
- **前端**：`frontend/src/components/FlywheelBanner.tsx`（"本次已注入"提示）+ `stores/preferenceStore.ts`。

### 爆款拆解（地基埋了，没接线）
- **表已建**：`app/models/fission.py` → `fission_tasks`（迁移010）+ `generation_tasks.source_fission_id`（迁移011）。
- **❌ 缺**：无 fission 的 service / api / worker / 前端（已 grep 确认 `app/api app/services app/workers` 零引用）。
- **关联**：13环里这是「第11环裂变」，总核销表 M7 状态 = ⏸️等北哥给档位定义。

### 标杆分析（第2环，等北哥给8维）
- `app/models/task.py:GenerationTask.benchmark_ids` + 迁移009 `features_json/analyze_status`；总核销表 M6 = ⏸️等北哥给8维。

### 生图（比俊达展示的深）
- `app/services/ai_engine/storyboard.py`（分镜+`overlay_text` 压字）+ `image_gen.py:146-153`（AI生图直接把字排图上）+ `image_postprocessor.py`（去C2PA水印+转JPG+削像素水印，对应俊达"消水印"）。
- **关键**：配图与压字**已合一**（生图即排字），不是两道工序。这点影响 §五 伪增量判断。

### 归档（第12环）
- `frontend/src/app/history/` + `delivery_packages` 表（交付包）。总核销表 M4 含日期/品类筛选+导出。

## 二、增量①：改稿 diff 飞轮信号 ⭐最该补

### 俊达怎么做的
俊达把三类反馈信号分了强弱：**「改稿 diff」标为「强」**，评级 A/B/C/D 和「采纳·重做」标为「中」。他原话："运营把 AI 写的改了 —— 直接看人怎么改，最值钱。" 因为选/审是**二选一的弱监督**，而人动手改稿是**带具体方向的强监督**——AI 能学到的不只是"这条不好"，而是"应该改成什么样"。

### Clover 缺口（对照代码）
- `SignalType` 只有 5 个值，**没有 `text_edit`**。
- `TextCandidate`（`app/models/task.py:73`）只有 `content`（AI原文）+ `is_selected`，**没有"运营改后内容"字段**，改稿这个动作根本没地方落。
- 现状：运营在审核台看到文案，只能"选/打回写原因"，不能直接改——改了也不入飞轮。

### 怎么落（概要，细化执行见配套文档）

> ⚠️ **完整可执行方案（含代码骨架+并发窗口避让）已拆到独立文档：`plans/俊达增量①-改稿diff-实施细案.md`**。
> 因为另一个窗口正在改 P0（第5/6/8环），改稿diff 恰好挂在审核回路+task_actions，是冲突高危区，细案里逐处标了避让策略。

五步骨架（详见细案）：
1. **加信号类型** `text_edit`（权重+4）——注意权重在**两处**定义，都要改。
2. **存改后内容**——`TextCandidate` 加 `edited_content`/`edited_at` 两字段，新迁移 012。
3. **采集端点**——`task_actions.py` 加 `POST .../text-candidates/{cid}/edit`。
4. **聚合注入**——`preference_aggregator.py` 加"改稿示范"片段，置于 prompt_fragment 最前。
5. **前端改稿框**——`TextCandidateCard.tsx` 只读 `<p>` 改可编辑。

### 验收（沿用架构方案"飞轮四点可测"）
events写入 `text_edit` ✓ / 聚合返回改稿片段 ✓ / 下次 prompt trace 含该片段 ✓ / UI 显示"已注入改稿示范" ✓。

### 风险与建议
- **工程量**：1迁移 + 1端点 + 聚合~15行 + 前端1框，**半天到一天**。
- **窗口冲突**：见细案§0，核心是"加字段/加端点用新增不改存量、enums两处权重等P0改完再合"。
- **窗口判断**：KR2（飞轮1B）截止6/27，这条不大且价值最高，**这次补**。

## 三、增量②：爆款拆解中心（产品化）⭐

### 俊达怎么做的
独立的「**拆解中心**」功能（PPT第14页）：粘一条小红书爆款链接 → AI 拆成「标题公式 / 句子类型 / 正文结构 / 卖点 / 配图节奏」可复用配方 → **一键存入素材库，变成 AI 下次生成时的样例**。口号"72小时：竞品爆款 → 你的可复用配方"。本质是把"人肉总结套路"自动化。

### Clover 缺口（对照代码）
- **地基已埋**：`fission_tasks` 表（迁移010）+ `generation_tasks.source_fission_id`（迁移011）都建好了。
- **但完全没接线**：无 service/api/worker/前端（已确认零引用），总核销表 M7 = ⏸️等北哥给档位。
- **现状**：Clover 已有 `benchmark_notes`（标杆笔记）+ 第2环标杆8特征分析（M6，等北哥给8维），但那是"录入参考"，**不是俊达式"粘链接→自动拆配方→反哺生成"的闭环**。

### 关键对齐：俊达"拆解" vs Clover"裂变"是两件事，别混
- **Clover 第11环裂变** = 1爆款 → **N 套完整笔记包**（输出成品）。
- **俊达拆解中心** = 1爆款 → **1 份可复用配方**（输出方法，存库当样例）。
- **俊达的拆解，正好是 Clover 裂变的「前置入口」**：先拆出配方，配方再喂给裂变/常规生成。两者串起来比单独做裂变更完整。

### 怎么落（复用现有 analyze 能力，不新造模型调用）

**核心思路**：Clover 第2环标杆分析（`benchmark` 8特征 analyze）和俊达"拆配方"是**同一个 AI 能力**，只是出口不同。不要新写一套 AI 调用，**复用 analyze，加一个"拆解→存配方→反哺"的产品壳**。

**S1｜配方落点**：拆出的配方存哪？两个选项——
- 选A（轻，推荐一期）：存进现成的 `benchmark_notes.features_json`（迁移009已有字段），拆解结果就是结构化特征，天然契合。前端加"拆解中心"入口，结果进标杆库。
- 选B（重）：新建 `recipe`/配方表。一期不必，留到素材资产库（§四）一起做。

**S2｜拆解 service**：新建 `app/services/ai_engine/note_decompose.py`，复用 `gemini_factory` + 标杆 analyze 的 prompt，输入笔记文本/截图，输出 `{标题公式, 正文结构, 卖点, 配图节奏}` JSON。

**S3｜采集入口**：链接读取受小红书风控限制——**对齐架构方案已拍板的洞1**：对外主通道 = **截图+手填**（零封号风险），登录态自动采集只作北哥内部插件。所以"拆解中心"输入框 = 粘文本/传截图，不做"系统自动抓链接"。

**S4｜反哺生成**：拆出的配方进 `benchmark_notes`，生成任务选标杆时即可引用 → 已有链路（`generation_tasks.benchmark_ids`）自动打通，无需改生成侧。

**S5｜前端**：新增"拆解中心"页（仿俊达PPT第14页左右分栏：左原笔记、右拆解结果+「一键存入标杆库」）。

### 风险与建议
- **依赖北哥**：和 M6（标杆8维）、M7（裂变档位）都等北哥定义。**建议把"拆解中心"和 M6 合并需求一起问北哥**——既然拆解配方=标杆特征，让北哥一次性给"要拆哪几个维度"即可。
- **工程量**：选A路径，service + api + 前端页，约 1-2 天，但**前置依赖北哥给维度**。
- **窗口**：一期能做，但**别和 P0 修bug 抢工**。建议 M6 标杆分析做完后，顺势加拆解中心入口（复用同一 analyze）。

## 四、增量③④：素材资产库 / 提示词中台 / 投放闭环（留二三期）

> 这三块价值大、但工程量也大，**明确不进一期**，避免冲乱 6/20-6/27 节奏。先记下口子，二期接。

### 增量③ 素材资产化 + 效果评级库（→ 二期，第12环升级版）
- **俊达**：图/视频/压字/评论/标题/文案结构/关键词**各成一库**，进库即 AI 打标 + 按真实互动评 **S/A/B/C/D 级**；素材积累 5/月 → 50+/月。
- **Clover 现状**：只有 `delivery_packages`（交付包）+ `history` 归档，**没有"按类型分库 + 效果评级 + 向量搜图"**。
- **落点**：二期在 `history`/归档之上建素材库；评级依赖**真实互动数据回填**（架构方案三期"发布效果回填 outcome_score"），所以**评级必须等投放闭环（增量④）先有数据**，顺序上③依赖④。
- **eval_score 已留 NULL 口子**（`TextCandidate.eval_score`/`ImageCandidate.eval_score`），架构方案明确"等真评分再装"——正好接俊达的评级，**别用 banana 假评分（88分）污染飞轮**，这条铁律不能破。

### 增量④ 投放数据闭环（→ 二/三期，超 13 环范围）
- **俊达**：打通聚光/千川/乘风/专业号 + 电商后台，单条笔记能看"卖多少货/点击率"，AI 出**动作卡**（评A/B/C+建议停/加投）。投手 6h → 自动。
- **Clover 现状**：13环里第10环复盘 = ❌不做(人工)。完全没有数据中心。
- **落点**：这是独立大模块（要对接小红书各后台API+企业资质），**架构方案三期才提**。俊达验证了 ROI 极高（他DNT ROI 1:4→1:8），值得做，但**是 Clover 二期对外 SaaS 之后的事**。
- **提示词版本化中台**（俊达：每提示词版本历史可回滚、标人工改/AI进化、记为什么改）：Clover 有 `loader.py PromptLoader 版本alias` 死代码可复活（架构方案§四🟡），但做成俊达那样的"UI可调中台"是二期。一期 prompt 改模板即可，不必上版本管理 UI。

---

## 五、两个伪增量（看着像缺、其实不缺，别做）

### 伪增量1：把"配图/压字"拆成两道独立工序 ❌
- 俊达PPT把"配图"和"压字"列成内容流水线里两个独立模块，看着像 Clover 少了一环。
- **但 Clover 已经合一实现**：`storyboard.py` 出分镜带 `overlay_text`，`image_gen.py:146-153` 生图时直接把文字排到图上出成品。这是**更先进的做法**（一次成图 vs 先出图再压字两步）。
- **结论**：不要为了"对齐俊达模块数"去把它拆开。俊达分两步可能正因为他没做到一次成图。**Clover 这里是优势，保持。**

### 伪增量2：爆款"逆向工程"当全新功能 ❌（部分）
- 看着 Clover 没有"爆款逆向"，其实第2环标杆8特征分析 = 同一个 AI 能力（拆爆款）。
- **结论**：增量②不是"新造逆向引擎"，而是"给已有 analyze 加产品化入口+反哺出口"。别重复造 AI 拆解逻辑。

---

## 六、俊达最该抄的 5 条认知（非功能，是方法论）

这 5 条比任何功能都值钱，且和 Clover 设计哲学高度一致，可直接写进北哥项目的产品理念：

1. **AI 当组织成员/员工管，不当工具** —— 拆成"选题员工/标题员工/配图员工"，每个都是 agent。对应 Clover 多步流水线。
2. **生成 → 流水线** —— 不让 AI 一口气写完，拆工序、每步 AI 出活、人审一眼。Clover 已是这套。
3. **定型 → 进化** —— AI 不该买来就定型，每天因真实反馈变聪明。= Clover 飞轮（魂）。
4. **任务包模式** —— 人只处理 AI 搞不定的疑难，顺手把解法训练回 AI；任务包越来越少。可作为 Clover 飞轮+审核的长期叙事。
5. **颗粒度无限细分 → 素材库索引 → 生成** —— 把经验拆到最细存库，生成时索引。对应增量③素材资产化。
6. **诚实克制**（俊达"冠军-挑战者+人审，绝不盲目自动上线"）—— 和 Clover"eval_score留NULL不用假分""飞轮四点可测"完全同源。**这是双方最该互相印证的设计底线。**

---

## 附：俊达全产品模块地图（视频左侧导航补全，供北哥扩展参考）

视频里俊达系统左侧菜单（手机拍投影，已尽力辨认）：
内容中台（选题/标题/正文/配图/评论/素材库/拆解中心）· 音乐创作 · 客户管理 · 岸署管理 · AI销售 · 机器人管理 · 微信Agent · Agent工具包 · 发布管理 · 全平台自动化 · 客户SOP · 群发SOP · SOP执行管理 · 数据复盘 · 乘风账户财务（投放数据）· 知识库。
> 这是"一个人开发的全链路"全貌。Clover 一期只对应其中"内容中台"一块，其余是北哥项目二期/三期或独立产品线的想象空间。
