baseline: Clover 独立仓库首次基线提交

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

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
yangqianqian
2026-06-16 11:30:22 +08:00
commit 6a2632da70
253 changed files with 27467 additions and 0 deletions

View File

@@ -0,0 +1,170 @@
# 俊达产品 → Clover 增量落地映射(对照代码版)
> 2026-06-15 落盘。来源俊达万牛会分享PPT 31页《电商XAI·一家小公司的探索》+ 现场演示视频2段 + 倩倩/俊达口述全文稿)。
> 目的把俊达那套小红书电商全链路AI系统里**值得借鉴的增量**,逐条对照 Clover 现有代码拆到「动哪个文件、加哪张表、改哪个函数」,开工直接照做。
> 对齐基准Clover 走 **13环目标导向**(见 `plans/13环目标导向-修改验收总纲.md`),当前 P0 修第5/6环、P2 等北哥给定义。本文增量**全部挂到 13 环语言下**,不另起炉灶。
> 代码事实底座:勘验于 2026-06-15backend 迁移已到 0116容器可跑通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 一期只对应其中"内容中台"一块,其余是北哥项目二期/三期或独立产品线的想象空间。