- 商品详情页核心卖点:编辑态原是纯静态文本、且 save 不提交 selling_points, 既改不了也存不了;改为可改/删/回车增,save 带 selling_points 一起 PATCH。 - 去掉详情页 name/cat/target/卖点 的「设计稿假数据」fallback —— 商品没卖点 时不再凭空显示护肤品卖点,空值显示「未填写」。 - 出图成功后 submitAndPollAsset 不再整页全量 loadData(十几个 setState 触发 全页大重渲染),只刷当前项目详情 + 轻量刷余额。 - TOS 上传对象加 Cache-Control: immutable 长效强缓存,重渲染不再重拉图。 - products 序列化器内嵌商品图/封面 preview_url(并修回错位的 read_only_fields)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
53 lines
3.2 KiB
Markdown
53 lines
3.2 KiB
Markdown
# 输出前自检清单
|
||
|
||
> 输出 JSON 之前必读。**逐条内部过一遍,命中问题先改再输出。** 自检过程不展示给用户。
|
||
> 任一"硬校验"不通过 = 不合格,必须修。
|
||
|
||
---
|
||
|
||
## A. 输出契约校验(硬,必须全过)
|
||
|
||
- [ ] 最终只输出**一个** JSON 对象,无 schema 外的多余文字/注释。
|
||
- [ ] `tone` ∈ `{种草, 测评, 剧情, 痛点}`。
|
||
- [ ] `aspect_ratio` 存在;输入指定了就用输入值,未指定为 `"9:16"`。
|
||
- [ ] `total_duration` ∈ `{15, 30, 60, 90}`。
|
||
- [ ] `segment_count == total_duration / 15`,且 `segments` 数组长度等于它。
|
||
- [ ] 每个 `segment.duration == 15`;`index` 从 0 连续递增无跳号。
|
||
- [ ] 每个 `segment.role` ∈ `{钩子, 痛点, 卖点, CTA}`。
|
||
- [ ] 首镜 `role == 钩子`;末镜收 CTA(独立 CTA 镜,或末镜旁白末尾含明确行动指令)。
|
||
- [ ] `entities` 每项 `type` ∈ `{character, scene, product}`,`id` 全局唯一。
|
||
- [ ] `entity_refs` 与 `speaker` 引用的 id **都已在 entities 中声明**(无悬空引用)。
|
||
- [ ] **每个声明的 entity 至少被一个 segment 引用**(无孤儿 entity)。
|
||
- [ ] **至少声明 1 个 `type==scene` 实体;每个 segment 的 `entity_refs` 恰好引用一个 scene**(同环境复用同一 scene id,换环境才新建;产品特写镜也要绑所处环境的 scene)。
|
||
- [ ] `speaker` 要么为 `null`,要么指向一个 `type==character` 的 id。
|
||
- [ ] 必填字段无缺失:顶层 `hook/tone/aspect_ratio/total_duration/segment_count/entities/segments`;
|
||
每 entity 有 `id/type/name/visual_prompt/ref_index`;
|
||
每 segment 有 `index/duration/role/narration/visual/product_exposure/entity_refs`。
|
||
|
||
## B. 内容质检(钩子 / 结构 / 一致性)
|
||
|
||
- [ ] 钩子镜第一句在前 3 秒抛出钩子,套用了 `hook-library.md` 的某个公式。
|
||
- [ ] 顶层 `hook` 与钩子镜口径一致。
|
||
- [ ] 卖点镜的卖点**挂在前面铺的痛点上**,不是干罗列参数。
|
||
- [ ] CTA 给了明确动作(点小黄车/领券/主页链接)。
|
||
- [ ] 档位映射正确:role 序列符合 `methodology.md`「档位 × 黄金结构映射」表。
|
||
- [ ] 90s 的多个卖点镜**各有侧重不重复**。
|
||
- [ ] 同一角色/场景/商品全程复用同一 entity(没有给同一对象写出两份 visual_prompt)。
|
||
- [ ] 每个 `visual_prompt` 信息足够喂图模型(角色/场景/商品的外观特征写清)。
|
||
- [ ] 每镜 `product_exposure` 自然、与 role 匹配(参考方法论露出表)。
|
||
|
||
## C. 旁白红线扫描(逐镜)
|
||
|
||
- [ ] 每镜 `narration` ≤ 55 字(硬上限;目标 ≤50 留缓冲,逐字数一遍,别凭感觉)。
|
||
- [ ] 口语化,无书面腔/AI 腔("综上""不仅…而且""值得一提"等已清除)。
|
||
- [ ] **违规词扫描**:无医疗功效词(治疗/根治/抗癌/消炎/排毒/速效…)。
|
||
- [ ] **绝对化用语扫描**:无 最/第一/唯一/100%/国家级/永久/绝对/史上 等。
|
||
- [ ] 无虚假承诺(三天见效/永不反弹/包治…)。
|
||
|
||
---
|
||
|
||
## 通过标准
|
||
|
||
A 区**全部**通过 + B/C 区无红线命中 → 可输出。
|
||
任何一条不过:先改,再重跑本清单,直到全过,才输出最终 JSON。
|