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,143 @@
# Clover 真实能力盘点 + 对照修正读完6365行后端后的诚实版
> ⚠️ 重要:本文档**修正**我之前《俊达vsClover-逐界面对照缺陷清单》里的多处错判。
> 之前只读了前端8页+零星后端就下结论冤枉了好几处。这次读完后端全部API+核心services+workers后重写。
> 倩倩姐在另一窗口"看到功能挺多"是对的——很多能力**在后端实现了,只是前端没接/没可视化**。
---
## 一、先认错:我之前判错的地方
| 我之前的判断 | 真实情况(代码为证) | 性质 |
|---|---|---|
| "改稿环节缺失" | ✅确实没有改稿。但我没说清:选优/重生成/导入轨都有(`task_actions.py`) | 判断对,但描述把整体说薄了 |
| "图片卡信息薄=只有url+role" | 后端 `ImageCandidate` 确实只存role/url/strategy/seq**但生图引擎极丰富**(见下) | 🔴**冤枉**:薄的是展示,不是能力 |
| "拆解中心只能录入不能拆配方" | `fission.py`是**第11环裂变引擎**(1爆款→N套笔记包),不是"只录入" | 🔴**判错**裂变能力建了表是没接UI |
| "平台对抗待确认Clover做到哪" | `image_postprocessor.py`**已实现**:去元数据+削像素水印+SynthID破除+Gemini重绘兜底 | 🔴**漏看**:对抗层早做了 |
| "双通道生图待确认" | `image_gen.py`**已实现**主备通道(gpt-image-2主/Gemini备)+多中转站(apiports/codeproxy)切换+重试退避 | 🔴**漏看**:双通道在 |
| "模板库藏代码里" | storyboard有完整分镜模板体系(`storyboard_templates.py`174行) | 部分对,但低估了成熟度 |
> 教训:我拿"前端没显示"当"功能不存在",这是硬伤。**Clover后端比前端展示出来的强得多。**
<!-- 后续Edit补充二、后端真实能力全景 / 三、真正的缺口(修正版) / 四、前后端能力落差 / 五、对照俊达的真实差距 -->
---
## 二、后端真实能力全景(读完代码确证·这些都已实现)
**文案生成链(强):**
- `_text_prompt.py`:人设/随机变量池ABC/5步框架/四段结构/5类标题公式/反AI味/emoji规则方法层vs数据层分离
- `text_variants.py`:双轨(AI生成+导入)、分批生成(避60s网关超时)、三层兜底、可选优化轮、本地草稿兜底
- `llm_scorer.py`**AI评委打分**——模型真读文案给6维分+理由+verdict+summary合规第7维机械硬拦失败回退机械打分
- `replenish_task.py`:合格数不足时**后台异步补充**到目标条数(先展示后台补铁律)
**生图链(很强,我之前严重低估):**
- `storyboard.py`**分镜引擎**——按图数排叙事角色(3/6/8张不同链路)、品牌词第2/6张植入、逐图差异化9字段prompt、成组视觉统一
- `image_gen.py`**主备双通道**(gpt-image-2带产品图edits / Gemini备)、多中转站切换、限并发、指数退避重试
- `image_postprocessor.py`**去AI化对抗**——去C2PA元数据+轻/重采样削像素水印+SynthID破除(可选)+Gemini重绘兜底
**飞轮链(已转):**
- `preference_aggregator.py`聚合最近50条信号→偏好角度+打回原因→注入prompt冷启动用产品档案按product_id隔离防串货三层继承(L1品牌>L2矩阵>L3个人)
- `task_actions.py`:选文案+3/选图+3/重生成-1 信号都记录
- `flywheel_service.py`record_signal + get_preference_context
**裂变链(建了表+引擎待接UI**
- `fission.py`第11环裂变引擎1爆款→N套完整笔记包带reference_level/fanout_count/status状态机
**交付链(完整):**
- `delivery.py`:打包→一次性下载令牌(60s)→FileResponse下载双认证(token/JWT)
---
## 三、真正的缺口(修正版·只留确证的)
读完后端后,真正站得住的缺口收敛到这几条:
| 缺口 | 性质 | 确证依据 |
|---|---|---|
| **1. 改稿→飞轮信号** | 真缺 | `SignalType`(enums.py:57)无text_edit`TextCandidate`无edited字段。这条仍成立 |
| **2. 裂变引擎没接前端UI** | 真缺UI | `fission.py`引擎在,但前端无裂变页、无入口 |
| **3. 数据复盘(发布后回收)** | 真缺 | 全后端无"发布后赞藏评回收"模块,链路止于交付包 |
| **4. dashboard门面空** | 真缺 | `dashboard/page.tsx`只有3按钮后端那么多能力一个没露 |
| **5. Sidebar死链404** | 真bug | `Sidebar.tsx:22-25`指向不存在路由 |
| **6. 图片候选展示薄** | 展示缺,非能力缺 | 后端storyboard算了role/goal/卖点/视觉策略,但`_fmt_image`只返role/url/strategy/seq前端只显示url+role |
| **7. AI评委理由没充分展示** | 展示缺 | 后端有verdict/summary/6维note前端TextCandidateCard展示了但confirm页等只显示总分 |
> **关键转变**:之前我列的"素材库缺失/拆解缺失/对抗缺失/双通道缺失"大半是错的——**对抗、双通道、分镜、裂变引擎后端都有**。真缺口收敛到:①改稿信号 ②裂变没接UI ③数据复盘 ④门面空 ⑤死链 + 两处展示薄。
---
## 四、前后端能力落差(这才是"空"的真因)
**这是核心洞察**Clover 的问题不是"功能少",是**后端能力没在前端露出来**。
| 后端有的能力 | 前端露出了吗 |
|---|---|
| 分镜引擎(每张图有role/goal/卖点/视觉策略/依据) | 🔴只显示url+role两字段 |
| 主备双通道+对抗去AI化 | 🔴用户完全无感(后台默默跑) |
| AI评委6维分+理由+verdict | 🟡文案卡露了,其他页只剩总分 |
| 后台补充合格文案 | 🔴用户不知道在补 |
| 裂变引擎 | 🔴无入口 |
| 飞轮偏好注入 | 🟡只一条banner |
> 俊达"界面饱满"的感觉,本质是**他把后台算的每一步都可视化了**。Clover后台算得不比他少但**前端只露了冰山一角**,所以显得"空"。这跟"功能缺失"是两个完全不同的问题——**前者是接线/可视化工作量后者是从0造功能。Clover大多属前者。**
---
## 五、对照俊达的真实差距(收敛后)
| 维度 | 真实结论 |
|---|---|
| 文案生成 | **不弱于俊达**AI评委+飞轮+反AI味都有 |
| 生图质量工程 | **可能不弱**,双通道+分镜+对抗去AI化都有 |
| 飞轮 | 骨架在,**缺最强信号(改稿diff)**,且可视化弱 |
| 资产化/裂变 | **引擎在缺UI接线** |
| 数据复盘 | **真缺**俊达有发布后回收Clover止于交付 |
| SCRM销售线 | 整块没做(商业决策,待倩倩姐判) |
| **呈现/可视化** | **这是最大差距**——后端能力强,前端露太少,所以"显空" |
> 一句话修正:**不是Clover功能比俊达少很多是Clover把做好的能力藏在后端没给用户看。** 你那个窗口看到"功能挺多",看到的就是这些后端实现。我之前只扫前端,所以误判成"空、缺失"。
---
## 六、仍未读、不装看到的
- `products.py`(308行,最大文件) — 产品档案完整能力未读
- `pipeline_io.py`(298行) — 文案/图片生成存储编排未读
- `gemini_factory.py`(225行) — AI客户端构造未读
- `storyboard_templates.py`/`_score_prompt.py`/`_scoring_dims.py` — 模板和评分维度细节未读
- 前端:`ImageProgressCard`/`ReviewCard`/`ConfigPreviewPanel`等组件本体未读
- 数据库迁移到011011/010之后有无新增未确认
> 要补到100%确证,这几个还得读。但**主干结论后端强、前端露得少、真缺口5条已经站得住**。
---
## 七、补读完成(已清零未读区)— 又发现3处关键事实
读完 `products.py`/`pipeline_io.py`/`review.py` + 前端剩余组件后,新增确证:
### 新发现1生图实际跑「3套正交策略 × N张」前端拍平丢了策略维度 🔴
- `pipeline_io.py:201` 明写 `for strategy in ("A","B","C")`,每套各生 image_count 张。**用户要6张→后端实际生18张候选**。
- `ImageProgressCard.tsx` 本是为"批次/策略"设计的(有BatchState)**但 images 页(line55-68)是平铺所有图、没按A/B/C分组**`_fmt_image` 返回了strategy字段但前端没用来分组。
- 结论:**后端做了"3种叙事方向给你挑",前端拍平成一堆散图**。这是俊达"双通道选优"思路Clover其实有雏形(3策略),但展示层没体现。
### 新发现2产品图 vision 智能分析已实现 🟢(我完全没提过)
- `products.py:254` `analyze-image` 接口上传产品图→GPT vision 读图→自动产出卖点/人群/场景/关键词/违禁词/拍摄方向 JSON。
- 这等于俊达"拆解"能力的一种——**只是用在产品建档,不是用在爆款逆向**。Clover有读图理解能力我之前一字未提。
### 新发现3爆款8特征分析字段已建 🟡
- `BenchmarkNote.features_json` + `analyze_status`(pending/analyzing/done/failed):标杆笔记预留了"AI解析8特征"的字段和状态机。
- 说明"爆款拆解"在数据层已开口子差AI解析逻辑+UI。比我之前说的"只能录入"更进一步。
### 复核确认的展示薄(确证):
- `ReviewCard`:审核卡只显示 product/operator/theme/正文2行+图,**不显示七维分**——审核员看不到AI评委打分就要拍板通过/打回。这是确证的展示缺失。
- `ConfigPreviewPanel`:注释说"显示成分/质地/参考图3张"**实际代码没渲染参考图、没成分**,只有名称/品类/卖点/风格/角度。注释与实现不符。
- `ScoreDimBars`✅做得好数据驱动渲染AI评委dims+note有hover理由。
- `FlywheelBanner`:✅但确实只是一条横幅,飞轮存在感弱。
### 最终未读(已很次要,不影响结论):
- `gemini_factory.py`/`storyboard_templates.py`/`_score_prompt.py`/`_scoring_dims.py`:都是"已确证存在能力"的实现细节,读不读不改变结论。
- `pipeline_io` 已读到生图主循环,确认无遗漏大功能。
> **补读后主干结论不变,反而更强**Clover后端能力比前端展示的多得多生图3策略18张→前端拍平、vision分析→没UI入口体现、爆款8特征→留了字段。**"空"的根因100%确证是"前后端能力落差",不是功能缺失。** 真缺口仍是那几条:①改稿信号 ②裂变/爆款拆解的AI逻辑+UI ③数据复盘 ④门面空 ⑤死链,外加多处"后端算了前端没露"。