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

55
PRD/PRD-0-总纲.md Normal file
View File

@@ -0,0 +1,55 @@
# Clover PRD-0 总纲
> 3份PRD的"对齐层":前后端共享的目标/范围/流程/验收/里程碑,避免两份重复。
> **承接层**:决策见 `../Clover架构方案.md`(v0.3) + `../CLAUDE.md`;前端见 `PRD-前端.md`;后端见 `PRD-后端.md`。
> 读PRD顺序先读本总纲对齐全局 → 按角色分工读前端/后端 → 冲突以架构方案v0.3+CLAUDE.md为准。
## 1. 产品定位
- 一句话:北哥团队的小红书达人素材"中央厨房"多租户SaaS
- 界面名:龙石小红书内容生产平台 ; 项目代号Clover🍀
- 核心差异化 = **偏好飞轮**(越用越懂你的"老师傅")
## 2. 目标用户与三角色
- 内容生产方(北哥团队):熟手(运营·每天产内容) + 组长(审核) + 管理员(北哥/老板·配业务)
- 发布方(达人):只收素材包,不进系统
- 平台方(我们)收口token,持有飞轮偏好资产
## 3. 范围边界(做/不做)
- ✅做:①产品配置 ②生成文案(双轨) ③生成图 ④裂变 ⑤存档打包交付 + 飞轮(开放测试即启动)
- ❌不做:软件收费/达人进系统/自动发布小红书/原始链接裸抓/移动端
## 4. 核心用户旅程5屏·前后端共识
```
管理员配置台(偶尔) → 熟手:开任务→挑文案(出N选若干)→挑图(出N选若干,N用户设定,图≤8)→确认预览→提审
→ 组长:审核台 通过/打回 → 熟手导出打包 → 人工发/给达人
```
- 飞轮全程隐形记录(挑文案+3/挑图+3/通过+5/打回-3/重生成-1)
## 5. 全流程5环节定义
①产品配置(管理员录) ②生成文案(轨A一次5角度/轨B导入外部) ③生成图(gpt-image-2主+edits+分镜) ④裂变(1爆款→N笔记包) ⑤存档打包(达人素材交付包) ; 飞轮贯穿②③④
## 6. 关键产品决策(引用,不展开)
- 见架构方案§二决策表 + CLAUDE.mdgpt-image-2主/token-url收口/MVP免费/飞轮即用即启/违禁词三级/数据归属分层/质量过关才验收
## 7. 验收线(总·分三道)
1. **内部验收**(我们)一期1A生产链跑通(熟手独立从配置→生成→选择→组长审→下载能发的素材包) + 1B飞轮四点验收(events写入/聚合返片段/下次prompt含片段/UI显示已注入)
2. **北哥验收**:质量过关(不是能下载就算完,北哥认可内容质量)
3. **上线**:北哥验收通过 → 上线
- 🔴 质量标准/优化prompt 由北哥方案注入,架构留可调位
## 8. 名词表
- 达人素材交付包:按笔记分文件夹+图01/02命名+文案.txt+发布清单+合规说明,人工发
- 偏好飞轮:隐形记录用户选择,越用越懂,三层继承(L1品牌>L2人设二期>L3个人)
- storyboard分镜一套图N张各担叙事角色(钩子/痛点/证明/质感/背书/转化)
- 爆款参考度:裂变时学爆款的强弱(低30/中/高85防抄袭)
- 双轨轨A自家AI生成/轨B导入豆包等外部文案
## 9. 里程碑MVP切片·引用架构方案§五
| 期 | 范围 | 验收 |
|----|------|------|
| 一期1A | 生产链闭环(配置/文案双轨/生图去水印/选择/审核/打包) | 熟手独立跑通下载能发素材包 |
| 一期1B | 飞轮闭环(三信号入口/实时聚合/注入prompt) | 飞轮四点全过 |
| 二期 | 多团队对外(手机注册/矩阵号L2/偏好物化/管理后台) | 留口子已在地基 |
| 三期 | 效果回流+AI审核员(蒸馏组长标准接班) | 看业务 |
- 🔴 切法:先证明能产出(1A)→再证明会学习(1B)→再对外(二期)→再智能(三期)
- 一期不做但建表matrix_accounts/preference_profile

106
PRD/PRD-前端.md Normal file
View File

@@ -0,0 +1,106 @@
# Clover PRD-前端(界面名:龙石小红书内容生产平台)
> 前端技术框架。**承接层**5屏画面金标准见 `../../前端交互设计.md`(经倩倩姐确认),视觉见 `../../前端设计参考图.png`。本文①承接5屏②补工程细节③对接后端契约——**唯一冻结源 = `../启动包/API契约.md`**(端点§1 / SSE事件§2 / 错误码§0),不看 PRD-后端。
> 技术栈Next.js+React+TS+Tailwind+Zustand(范式扒banana/frontend,全新重建)。PC优先,最小宽度1280px,不做移动端。
> 🔴 红线(CLAUDE.md)不展示Token余额/不做积分页/key只录不显余额。
## 0. 一句话定位
前端就是"挑挑挑":挑文案(出N条选若干)→挑图(出N张选若干N=用户设定图最多8)→组长挑过不过。飞轮全程隐形记录。
## 1. 三角色 + 路由表
| 角色 | 默认首页 | 能进的页 |
|------|---------|---------|
| 熟手(运营) | /tasks/new | 开任务/挑文案/挑图/确认预览/历史 |
| 组长 | /review | 审核台/历史 |
| 管理员(北哥/老板) | /config | 配置台(产品/标杆/成员/违禁词)+全部 |
路由表:
- /login(登录+首登key引导) / /dashboard(工作台) / /tasks/new(开任务)
- /tasks/[id]/text(挑文案) / /images(挑图) / /confirm(确认预览·熟手提审前)
- /review(组长审核台) / /history(历史归档) / /config(配置台·管理员)
- 🔴 角色路由守卫:/review只组长+管理员;/config只管理员;越权重定向工作台
## 2. 全局布局(对齐设计图)
- 顶部:标题"龙石小红书内容生产平台"+右上角当前用户(运营-小李)
- 5步流程条(1开新任务/2选择文案/3选择图片/4确认文案/5成片发布)——熟手常驻;组长/管理员登录后不走此条(各进自己首页)
- 左侧8项导航(工作台/开新任务/选择文案/选择图片/建立任务/任务列表/历史归档/配置中心)
- 主区 + 右侧配置预览面板
- 🔴 底部原Token余额位置(设计图568320)→**移除**,替换为版本号/留白小草装饰
- 视觉:暖橙/奶油色+绿色小草
## 3. 五屏详述(承接前端交互设计.md
### 屏1 配置台(管理员·/config
- 产品库:素颜霜/面膜/精华卡片+[加产品](品类不写死,客户自助加)
- 每产品配:卖点/品牌词/违禁词(三级可调)/固定标签/风格调性/可调prompt/参考图
- **标杆笔记管理**(一期主通道=截图上传+手填亮点;列表展示;关联产品)
- 成员管理(workspace邀请/角色分配) ; key录入(各人自录,只录不显余额)
- → 飞轮的"出厂设置",配一次天天用
### 屏2 开新任务(熟手·/tasks/new·设计图主表单
- 选产品[素颜霜▾] + **今天主题输入框**(如"黄皮提亮·早八伪素颜",驱动当次方向,关键字段勿漏)
- 单条数量/生成数量(可+/-,数量不写死) + 生成方向
- 双轨入口轨A[开始批量生成文案] / 轨B[导入外部文案](粘贴豆包等)
- 右侧配置预览面板:产品名称/卖点/成分/质地/标签/参考图3张 + [编辑配置](点击→侧滑面板原地编辑,改完实时刷新预览)
- **生成前显示"本次已注入最近偏好X/打回原因Y"**(调GET /preference/context,基石E④)
- 底部"最近任务"横向卡(4个,任务名+状态+进度条)
### 屏3 挑文案(熟手·/tasks/[id]/text·飞轮第1次学
- 生成N条文案卡(可多选),每卡:标题+正文+标签+**五维分数**(标题/情绪/买点/关键词/合规,展示分数条+总分,数据来自后端scoreCopy)
- 轨B导入的文案标注来源区分(source=import角标)
- 选中触发飞轮+3(隐形,无"训练AI"按钮) ; [用这N条去生图→]
### 屏4 挑图+出成品(熟手·/tasks/[id]/images·飞轮第2次学
- N批图缩略图(可多选) ; 选中触发飞轮+3
- 选中图+文案→自动套版预览(封面+内页拼成笔记长相)
- [满意,交组长审→]
### 屏4.5 确认预览(熟手提审前·/tasks/[id]/confirm
- 熟手提审前最后预览整套笔记 ; [提交审核] ; [重新生成](飞轮-1)
- ⚠️ 注意:通过/打回是组长动作,不在此页(修正骨架视角错位)
### 屏5 组长审核台(组长·/review·飞轮最强信号
- 待审笔记列表(N):每条[预览]+[✓通过]+[✗打回+原因]
- 通过+5(权重最高,飞轮最强对信号) ; 打回必填原因(下次自动注入prompt提醒AI别再犯,-3)
- 打回原因输入:模态框,必填校验
- 通过→进成品库(熟手可去屏导出打包) ; 打回→任务回pending_selection
- 导出后人工去小红书/给达人发(工具到此为止,诚实边界:小红书无接口不自动发)
## 4. 异步生图电影 + 飞轮隐形 + 错误态
### 4.1 异步生图进度(承接交互设计.md §2·体验核心
对接后端SSE事件(契约§2)
- 点生图→不空白干等:显"正在生成N批…0/N [进度条] 预计30-60秒,可先去忙别的好了提醒"
- 并发跑,**谁好谁先冒**(好一批亮一批,对接 image_candidate 事件,每个带 event_seq) ; "3/N"实时计数
- 单批失败标红+[⟳重试](不拖垮其他批) ; "完成9/10,这9批够挑了[继续→]"(不强求全齐)
- 🔴 铁律:老demo"点完干等18分钟转圈到崩"绝不能再有
### 4.2 飞轮隐形运转(交互设计.md §3
- 前端**无任何"训练AI/打分"按钮**(会吓到运营),只如实把动作记给后端(带谁+哪账号)
- 三动作埋点:屏3勾文案+3 / 屏4勾图+3 / 屏5通过+5打回-3 / 屏4.5重生成-1
- "变聪明"在后端,前端只管操作顺滑+显示"本次已注入"
### 4.3 错误态UI对接契约§0 数字错误码,前端按 code 映射语义,**不硬编码字符串码**
| code | 语义 | 前端响应(非统一toast) |
|------|------|----------------------|
| 42201 | 业务校验失败(未配key/违禁词硬拦截) | 未配key→引导配key页/banner按钮置灰(首登强制引导);违禁词→显示触发词+级别,提交前后立即提示 |
| 50002 | AI/token站调用失败 | "生图通道繁忙"特殊提示(区别普通错误)+[重试] |
| 50001 | 服务端错误 | "生成失败"+[重试]按钮 |
| 40901 | 状态机非法流转 | 提示当前状态不可操作,刷新看最新态 |
| 40301 | 越权访问 workspace | "无权访问"提示,跳回工作区列表 |
| 40101 | 未认证/JWT失效 | 自动触发token刷新(扒banana已实现),失败则跳登录 |
| 40001 | 参数校验失败 | 表单字段级红字提示 |
> 前端维护一份 `errorCodeMap`(code→{文案,处理动作})常量,所有错误统一查表,违禁词/限速等细分信息从 `message` 字段读。
- 真实状况兜底(交互设计.md §4):关页面回来任务还在(后端有状态不靠前端内存)/多人各看各的
## 5. 工程细节
- 状态管理4Store(参banana)authStore(user/workspace_id/role/token) / taskStore(任务id/状态/已选文案图id) / generationStore(SSE进度/各图状态/已完成N) / preferenceStore(本次注入偏好摘要)
- SSE客户端(扒banana sse.ts,5次重连退避)+断线重连UI("连接断开重连中1/5…"+"重连失败任务后台仍在,可刷新")
- 组件库:流程条/文案卡(带五维分)/分镜图卡/配置预览面板/交付包预览/飞轮注入提示横幅/打回原因模态框/单图进度卡/审核操作栏。🔴 删除"Token余额组件"
- 骨架屏:文案卡/图卡/审核队列loading ; 表单校验:产品必选/主题字数限/数量范围
- API客户端(扒banana api.ts含token刷新) ; AuthGuard+角色守卫(扒banana)
- 可扒banana前端零件authStore范式/api.ts/sse.ts/AuthGuard/NextUI组件;表单字段全重建(Clover字段不同)
## 6. ❌不做CLAUDE.md红线
- Token余额/用量展示(去中转站后台看) / 积分中心billing页 / 移动端适配

114
PRD/PRD-后端.md Normal file
View File

@@ -0,0 +1,114 @@
# Clover PRD-后端
> 后端技术框架。**本文是"承接层"**:架构决策见 `../Clover架构方案.md`(v0.3,金标准)本文只做①引用架构决策②补PRD独有工程细节③承接扒包上线版新事实。
> 技术栈FastAPI + Celery + MySQL + MongoDB + Redis栈范式扒自banana全新重建
> 🔴 源码只读复制:扒**上线版** `万牛会L1准备/worker/src`(非旧版产品包) + banana。
## 0. 怎么读这份PRD
- 数据模型16表/基石ABCDEF/三期构建顺序/复用复活新造清单 → **见架构方案 §三/§〇.5/§五/§四**,本文不复制。
- 本文重点第3章API契约细节、第9章环境变量、第10章工程规范这些架构方案没细化
- 与架构方案冲突时:**以架构方案v0.3 + CLAUDE.md为准**。
## 1. 后端架构总览
- 分层API层 / Service层(AI引擎) / Model层(双库) / 队列层(Celery+SSE) —— 详见架构方案§一
- AIProvider抽象层(扒banana)**gpt-image-2主/Gemini备**,由环境变量 IMAGE_PROVIDER_PRIMARY 配置(不写死)
- 🔴 三条铁律入口(详见架构方案§〇.5)A业务参数不写死 / B key不进Celery+Fernet加密 / C workspace逻辑隔离
## 2. 数据模型
- **完整16表清单+字段+Alembic001-004分批 → 见架构方案§三**,本文不重抄。
- 🔴 PRD骨架旧表名修正(以架构方案为准)
- api_keys→**user_api_keys**(UNIQUE user_id+workspace_id+provider)
- tasks→**generation_tasks**(审核字段平铺:review_status/reviewer_id/reviewed_at/reject_reason/approved_at/archived_at)
- 无assets表→实为 **text_candidates + image_candidates**(text_candidates有source=ai/import区分双轨)
-**login_records**(扒banana) / 补 **ai_call_logs**(usage记录,按key计费排障基础,一期必做)
- data_ownership是**preference_events的字段**(client_data/platform_asset),不是独立表
- 任务状态机7态pending→generating→pending_selection→pending_review→approved/rejected→archived(打回回pending_selection)
- MongoDB**只存AI debug trace**(业务不依赖)可调prompt在 products 表字段,**不在Mongo**
- 关键索引(架构没列,PRD补)generation_tasks(workspace_id,status) / preference_events(workspace_id,product_id,created_at)
## 3. API 契约 → 唯一冻结源:`启动包/API契约.md`
> ⚠️ 契约统一:本 PRD **不再另写一套契约**。端点/响应包络/错误码/SSE事件/分页,
> 全部以 `Clover/启动包/API契约.md` 为唯一冻结源避免前后端分叉外部AI审核P0-1/2/8
> 开工首步Lead 据 API契约.md 生成并冻结 `Clover/contracts/openapi.yaml`"契约优先"落地,非口号)。
本 PRD 第3章只补**契约文档未覆盖的后端实现约定**(不重复端点定义):
- 任务软删用标记位不物理删DELETE /tasks/{id} 走 archived 态。
- 限流同用户并发生成任务数上限建议2可配生图每张~4min 异步不占连接。
- SSE token 走 headerAuthorization不走 query对齐契约纠 banana 旧法)。
- preference 写入**不暴露独立埋点端点**:选择/审核业务接口内部写 events前端只调业务动作外部AI审核P1-14
- preference 读GET /preference/context 已列入 API契约端点清单外部AI审核P2-13
## 4. AI 引擎(扒上线版 worker/src 重写Python·核心
> 算法逻辑整体扒上线版copy.js/image.js/split.js重写为Python逻辑照搬防走样(TDD对照)。
### 4.1 文案引擎扒copy.js上线版
- **轨A**:一次调强模型返**N角度JSON**(N=用户设定text_count不串行不并发新造generate_text_variants)——这是去同质化关键,勿照抄旧版单条循环。数量不写死(基石A)。
- **轨B**:导入外部文案(豆包等)直接进候选池跳过AI(text_import_handler,text_candidates.source=import,洞2)
- 保留(扒上线版重写Python集成进轨A)三层兜底Claude→Gemini→本地 / 五维打分90过线 / 自动优化循环 / **正文+开头去重(splitPublishableContent/contentSignature)** / **角度槽位(angleSlotsForCategory,作可迁移数据非代码常量)** / 内部提示剥离(content只放可发布正文)
- 可调promptproducts表字段北哥可配(等北哥优质样本+判断标准注入,质量责任在北哥侧)
### 4.2 生图引擎扒image.js上线版+改造)
- 扒保留storyboard 10角色分镜 / getNarrativeRoles(3/6/8张链路) / 6品类proofStrategy / 素材路由 / buildVisualSystem成组视觉
- 🔴 生图通道(扒上线版已成熟,直接用)
- 主备由 IMAGE_PROVIDER_PRIMARY=gpt/FALLBACK=gemini 配置(imageProviderOrder)
- GPT走 **edits带产品参考图**(requestGptImageWithReferences)**禁纯文生图防跑偏**(无产品图报错)
- 产品图=**不可修改商品锚点**,禁改包装/换产品/混历史产品(防串货)
- 🔴 补(上线版仍缺)**生图通道加重试退避**(gpt-image-2实测502,baseline验证必要)
- 🔴 一期执行模型(纠正混淆,外部AI审核P0-3/4)
- **一期只做 storyboard 分镜图**:一篇笔记出 N 张叙事图(N=用户设定image_count默认3**合法1-8**对齐worker getNarrativeRoles 3/6/8档链路**不是固定10选3**)
- 每张 storyboard 图走 provider 主备(gpt edits→gemini fallback) + 重试退避
- **A/B/C 三策略不在一期主链路**A/B/C 是"同一目标图的三种改图策略",留给二期的"单图重生成/改图"功能,不与 storyboard 分镜混跑(否则任务数×UI 爆)
- getNarrativeRoles 角色框架(hook/pain_scene/applied_proof/texture/scenario/tutorial/social_proof/closer)是可迁移数据,按 image_count 取前 N 个角色
### 4.3 裂变引擎扒split.js上线版
- 1爆款→N完整笔记包(标题+正文+标签+imagePlan分镜+维度+人群+场景+痛点)
- 爆款参考度调节(低30/中/高85防抄袭) ; generateImages=true串生图
- _combine_benchmarks1-5篇标杆合并成综合reference(新造)
### 4.4 去水印image_postprocessor·新造·洞3
- 🔴 主方案=**重编码去C2PA元数据+转JPG+轻重采样削像素水印+压缩**(Pillow,对客户透明);保留可视质量,**C2PA元数据可去除私有像素水印只能削弱不保证100%清除**(诚实表述,外部AI审核P1-9)
- 备选=banana remove_watermark(Gemini重绘)——⚠️对海报中文大字有改字风险,仅特殊场景用,非主通道
- eval_score**一期留NULL**,不接banana假评分(88分污染飞轮),等组长标准蒸馏真评分(三期)
## 5. 异步队列扒banana骨架
- Celery任务生图异步(每张~4min) / **只传task_id绝不传key(基石B)** / worker内查库取encrypted_key→FERNET_KEY解密→局部变量,不落盘不打日志
- gemini_factory每任务用自己key构建实例(新造,解决全局单例)
- 失败处理Celery task失败→更新任务状态→SSE推task_failed(带code) ; 生图502重试退避
- SSERedis Pub/Sub推进度(扒banana event_bus)
## 6. 多租户与安全基石BC,扒banana JWT
- JWT HS256每请求验签,放user_id/workspace_id/role加速字段
- 🔴 读写分层(基石C外部AI审核P1-7细化)
- **写操作+切workspace**:必须查 workspace_members 校验权限
- **列表读**:用 JWT 的 current_workspace_id 过滤即可(加速)
- **单资源读**(任务详情/候选详情/下载包):仍须校验 resource.workspace_id == current_workspace_id不能笼统信JWT(防越权读他人资源)
- base_workspace_repo所有workspace相关Repo继承,强制带workspace_id过滤(新造,防串数据)
- workspace_guard中间件FastAPI依赖注入,所有业务接口强制注入workspace_id
- token-url收口统一自家中转站endpoint**账号表只存encrypted_key不存url字段**(旧"兼容任意url"已废止)
- 上传安全(扒banana)magic number校验+扩展名白名单+路径穿越防护
## 7. 存档打包package_exporter·新造·洞6
- 达人素材交付包:按笔记分文件夹+图(01/02/03命名防错序)+文案.txt(标题+正文+标签)+📋发布清单.txt+✅合规说明.txt(违禁词已过/已去水印)
- delivery_packages表:status(pending/ready/downloaded)/package_path
- 数据可导出(归客户,client_data) ; 飞轮偏好归平台(platform_asset)
## 8. 偏好飞轮(新造·灵魂·开放测试即启动)
- 三信号入口(preference_collector写events):选文案+3/选图+3/通过+5/打回-3/重生成-1(初始默认权重,北哥可校准)
- 实时聚合(preference_aggregator)查最近50条→最常选角度+打回原因近3条原文拼进prompt;不足5条用产品档案冷启动
- 三层继承L1品牌基线>L2人设(二期)>L3个人手感;⚠️按产品维度分开学(素颜霜不串精华)
- 🔴 飞轮MVP验收四点(基石E,全过才达标)events正确写入✓ / aggregator返回明确prompt片段✓ / 下次prompt trace含该片段✓ / UI显示"本次已注入:最近偏好/打回原因"✓
## 9. 配置与环境(架构没列,PRD补
- 环境变量完整清单(必填项启动时校验,缺失则启动失败报错不静默)
- FERNET_KEY(必填,key解密,绝不进代码库) / JWT_SECRET(必填≥32字符) / DATABASE_URL / MONGO_URI / REDIS_URL
- IMAGE_PROVIDER_PRIMARY=gpt / IMAGE_PROVIDER_FALLBACK=gemini / IMAGE_API_BASE(自家中转站url) / IMAGE_MODEL=gpt-image-2
- CLAUDE_API_URL / GEMINI_API_URL(都收口自家站)
- 6容器Docker Compose(扒banana,调环境变量名) ; 文件存储:交付包路径规则uploads/packages/{workspace}/{task}/
## 10. 工程规范与可观测
- 健康检查 GET /health(Docker健康检查用)
- Alembic迁移001-004按序;回滚策略;FERNET_KEY缺失启动保护
- 可观测每次AI调用记ai_call_logs(谁/多少token,失败归因到个人key) ; MongoDB存调用trace排障
- 错误处理:统一错误码(§3.2) ; Celery失败SSE推送

View File

@@ -0,0 +1,34 @@
# 前端PRD交叉审核报告2026-06-05
> 审核方式agent对照 设计图 + 前端交互设计.md(5屏金标准) + 架构方案三角色旅程 + 后端PRD契约 + banana前端范式逐条核对前端PRD骨架。
> 重大发现:**已有 `前端交互设计.md` 是经倩倩姐确认的5屏金标准**(配置台/开任务/挑文案/挑图/组长审核+异步生图电影+飞轮隐形+6真实状况)前端PRD骨架没承接它→这是骨架"看不懂"的根因。铁律:好的保留,这份5屏设计原样吃进PRD。
## 审出问题11遗漏+4不一致+工程空白)
### 🔴 重大遗漏
1. **组长审核台**整体缺失(屏5):审核队列/预览/通过+5/打回写原因(飞轮最强信号)/审后跳转。三角色只画了熟手
2. **"今天主题"输入框**漏了(设计图屏2关键字段):驱动当次文案方向,缺了=无方向生成
3. **文案双轨轨B**前端入口缺(导入豆包等外部文案/source=import的UI区分)
4. **飞轮"本次已注入偏好"提示UI**缺(基石E验收点④,后端专开GET /preference/context供它调)
5. **SSE逐图进度电影**只一行(交互设计.md §2:N/10计数+好一批亮一批+单批失败标红重试+能离开降焦虑)
6. **配置预览面板"编辑配置"入口**交互未描述(跳转/侧滑/模态?)
7. **错误态UI**只"toast"一笔带过(后端7错误码各不同:KEY_NOT_CONFIGURED=引导配key页/BANNED_WORD=显违禁词级别/502重试等)
8. **管理员配置台**缺(屏1:产品档案/标杆/成员/违禁词CRUD)
9. **标杆笔记管理界面**缺(一期主通道=截图上传+手填亮点)
10. **"最近任务"底部区**缺(设计图底部4个进度条卡)
11. **五维评分**没说哪五维/怎么展示(数字/雷达/进度条)/数据来自哪字段
### 🟡 不一致
- C1:设计图有Token余额568320,PRD已正确标"不展示",但没说底部位置替换成什么
- C2:第6章组件库还残留"Token余额组件"(与3bis矛盾,删)
- C3:3.6"确认文案"混淆熟手/组长视角(通过打回是组长在独立审核台做,不是熟手确认页)
- C4:5步流程条对组长/管理员是否隐藏未说(组长主界面是审核队列不走1→5)
### 🟢 工程空白(建议补)
状态管理4Store(auth/task/generation/preference)/路由表/SSE断线重连UI/骨架屏/表单校验/响应式断点(建议最小1280px PC优先)/角色路由守卫(/review只组长管理员)/首登key引导流
## 🟦 CC处理判断
- 铁律好的保留:**前端交互设计.md的5屏设计原样吃进PRD**,不重新发明
- 设计图(5步流程条)与交互设计.md(5屏)合并:开新任务/选文案/选图/确认预览(熟手提审前)/组长审核台;配置台进左侧导航
- 前端PRD同样做承接层:引用交互设计.md的5屏画面+设计图视觉,补工程细节(路由/Store/错误态/角色守卫)+对接后端契约(SSE事件/错误码)
- 优先级:组长审核台/错误态UI/飞轮注入提示 三项直接卡飞轮和生产链验收

View File

@@ -0,0 +1,42 @@
# 后端PRD交叉审核报告2026-06-05
> 审核方式agent对照架构方案v0.3 + CLAUDE.md + 7洞落盘 + 扒包(上线版) 逐条核对后端PRD骨架完整性。
> 结论后端PRD骨架"只提到名词,没承接细节"架构方案v0.3里拍过板的细节几乎都没落进PRD——这是倩倩姐"看不懂"的根因。
## 审出的问题18遗漏+5不一致+10工程空白
### 🔴 重大遗漏架构v0.3拍了板但PRD没承接
1. 基石A 业务参数不写死(品类/数量/角度) 无落点
2. 基石B key机制不完整(缺FERNET_KEY环境变量/gemini_factory每任务建实例/解密不落盘)
3. 基石C 读写权限分层(写操作查workspace_members)+base_workspace_repo中间件 缺失
4. 基石D 采集↔生产接缝(人工判断标准落点) 完全没有
5. 基石E 飞轮四点验收 没列
6. 16表精确清单+Alembic001-004分批 缺(且PRD表名错:api_keys应为user_api_keys/tasks应为generation_tasks/无assets表应为text+image_candidates/无login_records/无ai_call_logs)
7. 任务状态机7态(pending→generating→pending_selection→pending_review→approved/rejected→archived) 缺
8. generation_tasks审核字段平铺(6字段,不建独立notes表) 缺
9. preference_events字段(signal_type5枚举/weight/angle_label/reason/data_ownership/workspace_id+product_id) 缺
10. 文案轨A"一次出5角度JSON"规格 缺(易被agent照抄产品包单条串行)
11. 文案轨B(导入外部文案text_import_handler+source字段) 完全缺
12. storyboard分镜与A/B/C并发两套生图逻辑如何整合 没说清
13. IMAGE_PROVIDER_PRIMARY环境变量配主备+禁纯文生图+产品锚点防串货 缺
14. 三期构建顺序1A/1B/二期/三期+一期不做项 缺
15. eval_score留NULL不接banana假评分 缺
16. 标杆采集通道分层(截图手填主/登录态插件内部) 缺
17. ai_call_logs(usage记录,按key计费排障基础) 缺
18. MongoDB只存debug trace(业务不依赖)边界 缺(PRD误把prompt_template放Mongo,实际可调prompt在products表)
### 🟡 不一致
- C1: PRD把data_ownership列成独立表,实际是preference_events的字段
- C2: 生图把产品包10角色/6品类 和 edits新接口 混在一起没说整合
- C3: 去水印主次反了(主=re-encode/Pillow,banana重绘是可选且海报有改字风险)
- C4: 三层兜底/五维打分要标明"扒产品包重写Python集成进轨A"
- C5: token-url收口缺反面约束(账号表不存url字段/旧兼容废止)
### 🟢 所有来源都没细化、PRD该补的工程细节
错误码规范/SSE事件类型清单/分页规范/限流(生图4min)/文件存储路径/DB索引/Alembic回滚+FERNET_KEY缺失启动保护/健康检查/环境变量完整清单/workspace_guard注入时机
## 🟦 CC的处理判断不照搬agent建议
- agent建议把后端PRD扩成14章、把架构方案§四§五原文照搬进PRD → **不采纳全照搬**
- 理由架构方案v0.3已是金标准,PRD原文复制=两份打架+维护噩梦
- **正确做法后端PRD做成"承接层"——①引用架构方案(不复制)②重点补PRD独有的工程细节(§四绿色那10项:错误码/SSE/分页/限流/索引/环境变量等)③把扒包上线版的生图新事实写进去**
- 数据模型这种基础:PRD用"引用架构方案§三 + 标注扒包修正点"方式,不重抄16表