Files
beige/plans/北哥验收反馈与功能差距盘点.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

277 lines
20 KiB
Markdown
Raw Permalink 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.
# 北哥/倩倩姐验收反馈 + 功能差距盘点
> 记录时间2026-06-12
> 触发:倩倩姐用 qianqian 账号实跑前端,发现大量问题。要求:①先记录全部问题 ②原始需求 vs 现状做完整对比代码层验证交叉2-3轮列出未实现项。
---
## 一、倩倩姐本次实跑提出的问题(原话拆解,一条不漏)
### A. 产品管理
- A1. 选品/建任务时**不能填写其他产品**,库里只有一个"素颜霜预置样本"。
- A2. **没有产品上传入口**——产品参考图没地方上传。
### B. 文案选择文案页截图1
- B1. 前两个文案卡片83分、66分的**评分明细进度条全是0**标题0/情绪0/买点0/关键词0/合规0但总分却有83/66——评分明细丢失或没渲染。后三个75/59/76有明细。
- B2. **80分以下的文案为什么还放出来**了66/59/76 都<80——评分门槛/过滤逻辑存疑(需确认原始需求是过滤还是全展示)。
- B3. **文案到底用的什么文案方法论**——质疑文案套路(佛系人设 vs 源头小红书7步SOP此前 deferred 未决)。
### C. 图片选择图片页截图2/3/4
- C1. **产品不一致**——生成图里的产品包装和参考图对不上参考图是64字节占位图导致
- C2. **图片没办法自动缩放**——窗口变化时图片不自适应。
- C3. **第一张(hook)字体是错的**——大标题"5符种岜门/熿韵遾愳/扶妢/絹琝诙妢"全是乱码错字gpt-image-2 中文渲染翻车,连大标题都错)。
- C4. **只生成1套6张图应该最少3套不同的供选择**
- C5. **没有一张图能放大**——点击图片无法查看大图。
- C6. **窗口最小化后内容被截断**(响应式布局缺失)。
- C7. **生成的更像电商详情图,跟小红书压根不匹配**——风格定位错误。
### D. 路由/页面
- D1. **任务列表等页面 404**截图4/tasks/40/images 切到任务列表报 404 This page could not be found
### E. 功能缺失
- E1. **没有看到"爆款裂变"功能**——飞轮/裂变板块缺失或没入口。
### F. 流程/进度
- F1. 文案页"前面两个进度条没展示"(同 B1进度/评分条渲染问题)。
---
## 二、原始确认的功能板块(已从 PRD/验收清单/API契约/通关路线图/北哥回填提取)
> 来源PRD-0总纲 §5 全流程5环节 / PRD-前端 / PRD-后端 / 验收清单1A+1B / API契约 / 北哥回填解读
### 一期(1A 生产链)必做的5大环节PRD-0 §5
1. **产品配置**(管理员录):卖点/品牌词/违禁词三级/标签/风格调性/可调prompt/**参考图上传**
2. **生成文案(双轨)**轨A一次出N角度 / 轨B导入外部文案五维评分(标题25/情绪25/买点25/关键词20/合规5)**总分<90不进候选池**
3. **生成图(分镜)**gpt-image-2主+edits带产品参考图+禁纯文生图storyboard N张(1-8)各担角色6图对齐北哥标准序provider主备+重试退避
4. **爆款裂变1爆款→N笔记包**:每包完整(标题+正文+标签+分镜);卖点/标签/人群锁定参考度低30/中/高85可调 ← **一期范围**
5. **存档打包交付**:达人素材包(按笔记分文件夹+01/02命名+文案.txt+发布清单+合规说明);去水印(重编码去C2PA+削像素水印)
### 飞轮四点(1B基石E)
- events写入(选文案+3/选图+3/通过+5/打回-3/重生成-1) / aggregator返片段 / 下次prompt含片段 / UI显"本次已注入"
### 前端页面(PRD-前端)
- 登录 / 工作台 / 开新任务(选品+主题+数量+双轨入口+右侧配置预览3参考图+本次已注入横幅) / 选择文案(N卡+五维分条) / 选择图片(N批+SSE谁好谁先冒+套版预览) / 确认预览 / 组长审核台(/review) / 历史归档(任务列表+导出包) / 配置台(/config, 产品CRUD+参考图上传+标杆+成员+key只录不显余额+违禁词CRUD)
- 角色守卫:/review限组长+管理员, /config限管理员
- SSE先换60s短票再建连, 禁token直传; 5次重连退避; event_seq去重
### 关键细节点(逐条可核)
- D-1 产品参考图上传入口(配置台屏1明确要)
- D-2 文案五维评分展示+总分
- D-3 文案90分门槛后端过滤(<90不进池)
- D-4 图片放大: **PRD未明确要求**(但属基础体验)
- D-5 图片响应式缩放: **PRD未明确**(PC最小1280px)
- D-6 一次生成: 1套N张(N=image_count) ←PRD设计; **倩倩姐要3套选=超出原PRD,待确认**
- D-7 爆款裂变页: 一期范围, 当前**疑似缺失**
- D-8 任务列表页: /history 应有
- D-9 小红书风格(非电商): 无独立定义, 靠 style_tone 字段 + prompt
- D-10 SSE实时进度(谁好谁先冒/单批失败重试/能离开)
- D-11 第1张图中文乱码: gpt-image-2渲染硬伤(记忆已记, 未解)
### 【补全】上一轮盘点遗漏的原始需求(来自北哥回填/洞1-7/扒包萃取/豆包prompt
> 倩倩姐指出"讨论方案时远比这多"。重新通读 北哥回填解读 / test洞1-7 / 官网V1萃取 / 产品包扒包 / banana扒包 后补全,这些是之前漏掉的硬需求:
**北哥文案方法论豆包prompt原话最高优先级**
- N-文1 佛系反推销人设"东西放这了买不买跟我没关系"
- N-文2 随机变量池ABC身份场景5×起因情绪3×小缺点3每条随机抽不撞反同质化命脉
- N-文3 5步框架Hook暴击低价→痛点共鸣→救星登场→卖点罗列(带✅小标题)→逼单(**不是旧7步SOP**
- N-文4 正文四段痛点→实测→种草→引导350-400字3-5段空行
- N-文5 70%场景 30%产品 比例
- N-文6 标题5公式肤质/价格/功效/夸张/标题党,每条不同类型
- N-文7 反AI味负向词禁入正文神器/福音/遮羞布/日常维稳/精简底妆/不仅而且/焕发/守护——是prompt负向约束**不是事后auto_fix替换**
- N-文8 品牌词必植入文案正文(北哥"种品牌词引导天猫搜"核心诉求)
**北哥生图规则豆包prompt+回填原话)**
- N-图1 6张固定套路序①封面痛点大字②单品特写+品牌词③成分④质地⑤上脸对比⑥促单
- N-图2 品牌词出现在第2/6张转化句在第6张对比在第5张
- N-图3 好图标准:高清+构图居中+字粗大+图文匹配
- N-图4 效果对比图AI优先(实拍备),静物图实拍优先(AI备)
- N-图5 排版并入生图(AI直接把字排图上出成品),不做独立排版环
- N-图6 成组视觉统一(buildVisualSystem)一套N张共享主色/字体/贴纸
- N-图7 素材路由:产品图=商品锚点不可改 / 实拍图=肤感场景 / 爆款图=只学版式不用内容
**标杆/爆款分析北哥13环+扒包split.js**
- N-标1 标杆分析出**8特征**(SSE analyze_done带features:[8特征])——提取标题句式/开篇痛点/评论刚需
- N-标2 爆款参考度三档低30(只学结构)/中(学节奏局部替换)/高85(学标题节奏换表达防抄袭)
- N-标3 裂变维度标注:换了哪个维度/目标人群/场景/痛点点位
- N-标4 裂变必须改全文+重拍图,不变卖点/标签/人群N-19北哥死命令
- N-标5 裂变笔记综合评分(scoreCompleteNote=文案五维+图文完整度15分)
**违禁词三级洞5拍板**
- N-违1 三级🟢auto_fix视觉类自动改(前后对比→质地说明) /🟡soft_warn功效词标黄给建议(美白→提亮?) /🔴hard_block高危词必改(医用/药妆)
- N-违2 词库可配置+可批量导入(北哥词远超预置5条)+北哥可调分级
- N-违3 "遮羞布"等AI味词要单独分类入库(北哥最大痛点)
- N-违4 双保险生成时prompt规避 + 发布前检查两道关
**去水印洞3拍板**
- N-水1 出图后**必经工序**重编码去C2PA元数据 + 转JPG/轻重采样削SynthID像素水印 + 压缩
- N-水2 诚实边界C2PA 100%可去,像素水印只能削弱
- N-水3 去水印严守3:4比例不变形
**交付/数据归属洞6+洞7拍板**
- N-交1 素材包结构:发布清单.txt(自解释发几条/配图序/文案/标签) + 笔记N_角色/文件夹(01/02/03命名) + 文案.txt(标题+正文+标签) + 合规说明.txt
- N-交2 数据归属分层:客户输入物+产出物归客户可导出 / 飞轮偏好归平台不随客户走
- N-交3 **数据可导出一期就做**(洞7)全表加workspace_id隔离
- N-交4 下载必须fetch+blob(window.open无法带token会401)
**标杆采集洞1拍板**
- N-采1 一期对外标配=截图上传+手填亮点(零平台风险),系统不碰小红书服务器
- N-采2 登录态采集插件=二期北哥内部自用opt-in不进对外标配
**工程底座(架构方案+banana扒包**
- N-工1 ai_call_logs每次AI调用记谁/用多少token失败归因到个人key**一期必做**
- N-工2 健康检查 GET /health
- N-工3 同用户并发生成任务上限2(可配)
- N-工4 上传安全magic number校验+扩展名白名单+路径穿越防护
- N-工5 三层兜底文案Claude→Gemini→本地模板(buildLocalDrafts永不空手)
- N-工6 去重系统标题相似度≥0.82判重 / 正文开头签名去重
- N-工7 角度槽位机制(每条强制不同角度)做成可迁移数据
- N-工8 product.js产品图视觉分析→visualIdentity(主色/字体/包装风格)供生图用
**前端工程PRD-前端)**
- N-前1 errorCodeMap错误码映射表(9类错误码→文案+处理动作)
- N-前2 骨架屏(文案卡/图卡/审核队列loading)
- N-前3 无key时按钮置灰+首登强制引导配key页
- N-前4 4个Store(authStore/taskStore/generationStore/preferenceStore)
- N-前5 token刷新(JWT失效自动刷新,失败跳登录)
- N-前6 套版预览(选中图+文案→拼成笔记长相)
---
## 三、现状 vs 需求 差距清单(代码层 3 轮交叉验证)
> 验证方式4 个 Explore agent 并行扫码(前端/后端接口/生图文案/DB飞轮关键质疑项倩倩姐亲自复核读码 2 轮。每条附 `文件:行号` 证据。
> 图例:✅已实现 / 🟡半实现 / ❌未实现 / 🐛有bug
### 3.1 倩倩姐质疑项 — 逐条结论
| 编号 | 问题 | 结论 | 代码证据 | 根因 |
|---|---|---|---|---|
| A1 | 不能填别的产品 | 🟡 能建产品但入口只在配置台 | products CRUD全在 `api/v1/products.py:64-131`;新建表单只挂 `/config``NewTaskForm.tsx:47` 任务页只能选不能建 | 任务页缺"快捷新建产品"按钮设计取舍非bug |
| A2 | 没有产品上传入口 | ✅ 入口存在 | 后端 `products.py:150` `POST /products/{id}/upload-image` 写 image_path前端 `ProductSubComponents.tsx:73` file input | 入口在配置台产品卡内,倩倩姐没找到≈可见性问题 |
| B1 | 评分明细进度条全是0 | 🐛 SSE推送时五维占位0靠异步补 | `useSse.ts:83` 推送时填 `{title:0,emotion:0...total:X}`88-93行再异步GET补全 | SSE只推总分(`useSse.ts:77` score是number),五维详情靠后续接口补,慢/缺字段就长期显示0 |
| B2 | 80分以下文案为何放出来 | 🐛 **90分门槛形同虚设** | `text_variants.py:136` 返回含passed=False全部候选`pipeline_io.py:96-106` 无差别写库无`if not passed:continue` | 门槛只算分标记`passed`,存库时根本不按它过滤。低分全进池 |
| B3 | 文案用什么方法论 | ✅ 佛系人设+5步+变量池ABC+反AI味 | `_text_prompt.py:12`(佛系人设)/`:66`(5步框架)/`:19`(变量池ABC)/`:94`(反AI味) | 方法论已落地,是否对北哥胃口=产品决策 |
| C1 | 产品不一致 | 🟡 测试时参考图是64字节占位 | `pipeline_io.py:150` 无参考图硬失败逻辑正确;本次是测试数据问题 | 上真实产品图即可解,非代码缺陷 |
| C2/C6 | 图片不缩放/窗口截断 | ✅ 响应式CSS已有 | `images/page.tsx:55` `grid-cols-3 xl:grid-cols-5``:65` `w-full aspect-square object-cover` | agent判定不会截断需倩倩姐复现确认是否别处 |
| C3 | 第一张字体乱码错字 | 🐛 **纯靠模型画中文字,无叠字兜底** | `image_gen.py:145` prompt只描述文字让模型自画`ai_engine/`无PIL叠字 | gpt-image-2中文渲染弱是已知模型局限缺服务端Pillow叠字方案 |
| C4 | 只1套6张要≥3套 | 🐛 **架构只产1套N张** | `image_gen.py:121-173` 单个storyboard逐张生成返回扁平list调用链只跑一次 | 无"套"概念需加外层循环生N套 |
| C5 | 图片不能放大 | ❌ 无lightbox | 全局搜lightbox/放大/zoom = 0结果`images/page.tsx:60` onClick只做选中 | 功能未做 |
| C7 | 像电商图不像小红书 | 🟡 风格词有但防御弱 | `constants.py:58` 有"小红书种草风"但仅closer角色禁电商风(`storyboard_templates.py:53`),其他角色无负向词 | 缺强负向约束"禁白底产品图/禁电商详情图" |
| D1 | 任务列表404 | 🐛 **导航指向不存在的路由** | `Sidebar.tsx:22-26` `/images``/tasks/build``/tasks/list` 三个href均无对应page.tsx | 导航错配 |
| E | 没看到爆款裂变 | ❌ **全栈零实现** | 前后端+DB+worker全局搜裂变/split/fission = 0业务代码 | PRD一期范围完全没建 |
### 3.2 原始需求模块 — 整体实现度
**后端接口API契约**:核心链路基本齐
- ✅ 认证/工作区切换、API Key(只显后4位)、产品CRUD+图上传、违禁词三级、SSE一次性ticket、审核台approve/reject、打包下载、飞轮三信号+context — 全部有码
- 🐛 90分过滤失效见B2
- 🟡 轨B导入文案`task_actions.py:76` 只存库**不评分不查违禁词**worker版`text_variants.py:139`才完整)
- ❌ 标杆"出8特征"分析:`BenchmarkNote`只存手填highlights无AI结构化分析
- ❌ 爆款裂变接口
**生图/文案核心**
- ✅ 6图角色对齐北哥序(`storyboard.py:75`)、provider主备+退避(`image_gen.py:34-117`)、禁纯文生图硬拦(`pipeline_io.py:150`)、去水印(`image_postprocessor.py`)、文案双轨+方法论、五维评分逻辑(`_scoring_dims.py`)
- 🐛 生图只1套(C4)、中文叠字乱码(C3)、90分不硬拦(B2)
- 🟡 品牌词:注入逻辑在(`storyboard.py:133`)但**products表无brand_keyword列**(`models/product.py:20-54`确认无)运行时永远空第2/6张品牌词静默失效
- 🟡 电商风负向约束弱(C7)
**数据库**15张表齐全有迁移(001-007)。唯一缺口products表缺`brand_keyword`列。eval_score正确留NULL未接假评分。多租户`workspace_id`双层过滤到位。
**飞轮四点**:✅ 全通——写入(`task_actions.py:49`选文案/`review.py:113`通过/`:139`打回)、聚合(`flywheel_service.py:71`)、注入(`pipeline_steps.py:71`+`pipeline_io.py:69`)、UI已注入事件(`tasks.py:94`)、前端横幅(`FlywheelBanner.tsx`挂3页)。
**前端页面**9个核心页在(login/dashboard/tasks.new/text/images/confirm/review/history/config)。缺:`/tasks/list``/tasks/build``/images`、爆款裂变页。
### 3.3 必须修的清单(按优先级)
**P0 阻断验收**
1. 🐛 90分门槛过滤 — `pipeline_io.py:96``if not c.get("passed"): continue`B2
2. 🐛 导航404 — `Sidebar.tsx:22-26` 删/改三个坏链接D1
3. 🐛 生图≥3套 — `image_gen.py` 加外层循环 / 新增 image_sets_countC4
4. 🐛 中文乱码 — `image_postprocessor` 后加 Pillow 中文字体叠标题C3
**P1 核心缺口**
5. 🟡 brand_keyword字段 — ORM加列+迁移008+`build_product_dict`映射+DTO品牌词
6. ❌ 图片放大 lightboxC5
7. 🟡 电商风负向prompt强化C7
8. 🐛 五维分条全0 — SSE直接推score对象 / 前端补全兜底B1
**P2 功能立项**
9. ❌ 爆款裂变1爆款→N笔记— PRD一期范围需从0设计表+worker+前端页E
10. ❌ 标杆8特征分析
11. 🟡 轨B导入补评分+违禁词检测
**产品决策待倩倩姐/北哥拍板**
- 文案方法论代码已落地北哥5步框架(非旧7步)是否对北哥胃口需北哥真看B3
- 3套的"套间差异"策略(不同角度/不同风格/不同封面?)
- brand_keyword 录入在产品级还是任务级
---
## 四、补全需求的代码层验证(本轮新增,对应第二章【补全】项)
> 倩倩姐指出上一轮漏了大量讨论过的需求。这一节对补全项逐条给代码结论。**重大发现:北哥文案方法论此前项目文档标记"只落地25-30%"(BUG-14),本轮亲自读 `_text_prompt.py` 全文确认——已全部落地,那条诊断是过时记录。**
### 4.1 北哥文案方法论 — ✅ 已全部落地(推翻旧诊断)
亲自读 `_text_prompt.py` 逐行确认:
| 需求 | 结论 | 证据 |
|---|---|---|
| N-文1 佛系人设 | ✅ | `_text_prompt.py:12-15` `_PERSONA`原话"东西放这了…" |
| N-文2 变量池ABC | ✅ | `:19-46` 三池+`_pick_combo`每条随机抽;`:140` 按count抽N组 |
| N-文3 5步框架 | ✅ | `:67-73` Hook→痛点→救星→卖点✅→逼单**确是5步非7步** |
| N-文4 四段350-400字 | ✅ | `:75-82` 四段结构+`:81`字数+空行 |
| N-文5 70/30比例 | ✅ | `:15` "70%场景30%产品绝不颠倒" |
| N-文6 标题5公式 | ✅ | `:85-92` 肤质/价格/功效/夸张/标题党各带词例 |
| N-文7 反AI味负向词 | ✅ | `:50-54`+`:94-101` 负向词prompt约束(非事后替换,机制正确) |
| N-文8 品牌词植入文案 | 🟡 | `:147` 注入逻辑在,但读`product.get("brand_keyword")`**products表无此列→永远空→静默失效**(同生图品牌词根因) |
### 4.2 其余补全项 — 代码结论
| 需求 | 结论 | 证据/缺口 |
|---|---|---|
| N-标1 标杆出8特征 | ❌ | `BenchmarkNote`只存手填highlights无AI分析SSE虽定义analyze_done但无8特征产出 |
| N-标2~5 爆款裂变全套 | ❌ | 全栈零实现(参考度/维度/裂变评分都没有) |
| N-违1 违禁词三级 | ✅ | `banned_word_checker.py:71-112` 三级auto_fix/soft_warn/hard_block |
| N-违2 词库可配置 | ✅ | banned_words表+CRUD接口批量导入未见独立接口(可逐条POST) |
| N-违3 遮羞布入库 | ✅ | `_text_prompt.py:51` 负向词含"遮羞布/日常维稳/精简底妆" |
| N-水1 去水印必经工序 | ✅ | `image_postprocessor.py` 重编码去C2PA+转JPG+重采样;`pipeline_io.py:174`已集成 |
| N-水3 严守3:4比例 | 🟡 | 后处理按原尺寸重采样未见强制3:4校验(生图prompt要1080×1440) |
| N-交1 素材包结构 | ✅ | `package_exporter.py` 笔记夹+01/02命名+文案.txt+发布清单+合规说明 |
| N-交3 数据可导出 | 🟡 | 打包下载=产出物导出有;**输入物(产品/标杆)整体导出未见**专门接口 |
| N-交4 下载fetch+blob | ❓ | 需查前端下载实现是否用window.open(待验证) |
| N-采1 截图手填标杆 | ✅ | `benchmarks.py` 截图url+highlights手填 |
| N-工1 ai_call_logs | ✅ | `models/flywheel.py:63` 表在;`pipeline_io.py:80` 有写入 |
| N-工2 GET /health | ❓ | 待确认路由是否注册 |
| N-工3 并发上限2 | ❓ | 环境变量IMAGE_CONCURRENCY=2是生图并发任务级并发限制待确认 |
| N-工4 上传安全 | ❓ | products上传是否做magic number校验待查 |
| N-工5 三层兜底文案 | 🟡 | 本地兜底`build_local_drafts`Claude→Gemini双层兜底待确认是否接 |
| N-工6 去重系统 | ✅ | `dedupe_copies`(text_variants.py:136调用) |
| N-工7 角度槽位 | ✅ | text_angles产品档案字段+`build_prompt:146`注入 |
| N-工8 产品图视觉分析 | ❌ | 无product.js等价的visualIdentity分析(主色/字体提取) |
| N-前1 errorCodeMap | ❓ | 前端错误码映射表待查 |
| N-前2 骨架屏 | ❓ | 待查 |
| N-前3 无key置灰引导 | ❓ | 待查 |
| N-前6 套版预览 | 🟡 | confirm页有预览"封面+内页拼笔记长相"完整度待查 |
### 4.3 本轮新增的"未实现/待查"清单补进第三章P级
**新确认 ❌ 未实现(之前漏列)**
- 标杆8特征分析N-标1
- 爆款裂变全套N-标2~5与E同
- 产品图视觉分析visualIdentityN-工8
- 输入物整体导出N-交3部分
**🟡 半实现/隐患(之前漏列)**
- 文案品牌词植入静默失效N-文8与生图品牌词同根因products表缺brand_keyword列
- 去水印3:4比例无强制校验N-水3
**❓ 需补一轮验证(本轮时间未及,诚实标注未确认)**
- 下载是否fetch+blob还是window.openN-交4影响401
- GET /health、任务并发上限2、上传magic number校验、Claude→Gemini文案兜底
- 前端errorCodeMap、骨架屏、无key置灰引导、套版预览完整度
> ❓项我没有当场全部读码确认,不糊弄、如实标注。倩倩姐若要,我下一轮把❓全部读码坐实。