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

60 lines
3.7 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-08 拍板:①上传产品图按钮做必填项(需产品图场景)②建任务时用户选"本次要不要产品入镜"③这轮一起做产品库(内置+上传)
## 一、现状(已查清)
**已存在、能用的**
- 产品图上传接口 `POST /products/{id}/upload-image`
- 前端上传组件 `ProductImageUpload`(在配置页产品管理里)✅
- worker 读参考图 → 传 generate_storyboard_images 的链路 ✅
- 产品表已有 `source enum('preset','custom')` 字段(产品库内置/自建早有预留)✅
- 主备生图通道本轮已修apiports 503 自动切 codeproxy
**缺口/坑**
1. 无图时 worker 默默降级纯文生图,无任何阻断(核心要堵)
2. 产品图存/读用**相对路径**api 容器 cwd 与 worker cwd=`/` 不一致 → worker 可能读不到(隐患,需改绝对路径)
3. 建任务时用户看不到"产品有没有图"、也没有"要不要产品入镜"的选择
4. 产品库目前只有 1 个 preset 产品、无图;没有产品库浏览/选择 UI
5. `ProductCreate` DTO 无 image_path建产品时无法带图
## 二、产品决策落地(按倩倩姐拍板)
- 建任务页加开关 **「本次产品是否入镜」**need_product_image默认"是"
- 选"是" → 该产品**必须有参考图**才能点"生成",否则按钮置灰提示"请先上传产品图"
- 选"否" → 允许纯文生图(氛围/科普/话题类内容)
- 产品来源:**内置产品库 + 上传**,靠 `source` 字段区分
## 三、改动清单(分纵切片,逐块可验收)
### 切片 A路径修稳最高优先不修后面全是空中楼阁
- `products.py` upload-image存**绝对路径**`/app/uploads/...`)进 image_path不存相对路径
- `pipeline_io.py` 读参考图:用绝对路径校验 + 读取
- 验收:上传一张图 → worker 日志出现"产品参考图已加载 N bytes"
### 切片 B后端禁降级 + 建任务字段
- `task.py` 模型 + migrationGenerationTask 加 `need_product_image: bool default True`
- `CreateTaskRequest` DTO 加 `need_product_image: bool = True`
- `task_service` 建任务时:若 need_product_image=True 且产品无 image_path → 直接拒绝422"该产品未上传参考图"
- `image_gen.py``ALLOW_TEXT_ONLY_IMAGE` 改由任务的 need_product_image 驱动need=True 时无参考图**硬报错**不降级
- 验收:无图产品 + 需入镜 → 建任务被拒;有图 → 生图带参考图
### 切片 C前端建任务页
- NewTaskForm 加「产品是否入镜」开关 + 展示当前产品图缩略图/未上传状态
- 需入镜且无图 → "生成"按钮置灰 + 提示"请先到产品库上传参考图"
- 验收:浏览器走一遍,无图拦住、有图放行
### 切片 D产品库内置+上传)
- 后端:`GET /products` 支持按 source 筛选;预置 2-3 个常用内置产品(带图)入库 seed
- 前端:配置页产品管理区分"内置库/我的产品",支持从内置库选用、上传自己的
- `ProductCreate` DTO 加 image_path建产品即可带图
- 验收:产品库能看到内置产品、能上传新产品、建任务能选到
## 四、风险/待北哥确认
- **内置产品库放哪些产品+图**:需北哥给真实产品图素材,否则内置库是空壳。先搭框架+占位,图等北哥给。
- 合规产品图入镜后gpt-image-2 仍可能把功效词画进图([[clover-image-gen-compliance-risk]]),需北哥合规 prompt 方案。
## 五、建议执行顺序
A路径→ B后端禁降级→ C前端建任务→ D产品库
每切片做完即验收A+B+C 通了"禁降级"主线就闭环D 是产品库增强。