docs: add T-554 generate status columns

This commit is contained in:
chengma
2026-07-08 11:31:04 +08:00
parent 46afae4b98
commit 773f528668
3 changed files with 64 additions and 6 deletions
+58
View File
@@ -0,0 +1,58 @@
---
id: T-554
title: ②AI生成表格拆分标题/图片状态列并调整列宽
phase: 7
deps: [T-533, T-519, T-552, T-523]
status: TODO
created: 2026-07-08
---
## 问题 / 背景
②「AI生成」现在是两步流程:先生成标题,再按本轮开关可选生成图片。但右侧任务表格只有一个「状态」列,显示的是整条任务的整体 `stage/status`,例如「待生成 / 已生成 / 生成失败」。
这会带来两个使用问题:
- 用户看不出当前任务到底是「标题没生成」「图片没生成」,还是「标题成功但图片失败」。
- 标题成功后当前逻辑会先写入 `new_title` 并把任务设为 `generated/success`;若本轮还在生成图片,表格整体状态可能先显示为「已生成」,需要去看底部进度条或运行日志才能知道图片仍在处理。
同时,②表格中商品 ID 通常较短,当前列宽偏大;拆分出两个状态列后,应把商品 ID 列宽缩小,把空间让给状态信息。
## 方案
1. **表格列拆分**
- 将②AI生成表格原列:`店铺 / 商品ID / 旧标题 / 新标题 / 状态`。
- 改为:`店铺 / 商品ID / 旧标题 / 新标题 / 标题状态 / 图片状态`。
- 第一版只改 GUI 展示层和单测,不改 SQLite schema,不新增 `title_status` / `cover_status` 字段。
2. **状态推导口径**
- `new_title` 有值:标题状态显示「已生成」。
- `new_cover_path` 有值:图片状态显示「已生成」。
- `last_error` 或失败步骤指向标题阶段(如 `title_*`、`请求生成标题`、`标题`):标题状态显示「失败」。
- `last_error` 或失败步骤指向封面/图片阶段(如 `cover_*`、`请求生成封面`、`封面`、`图片`、`下载`):图片状态显示「失败」。
- `stage=collected` 且无标题:标题状态显示「待生成」。
- 本轮未启用生成封面,或任务已生成标题但没有新封面且没有图片失败时,图片状态显示「未启用」;若需要生成封面但还没生成,则显示「待生成」。第一版可通过 ②当前「生成封面图片(成本较高)」开关参与推导,不写入 DB。
- `stage=imported`:两个状态均显示「未采集」。
- `stage=applied`:按已有结果显示,标题/图片已有值则显示「已生成」,没有图片则显示「未启用」。
3. **列宽调整**
- ②表格原本使用等宽 Stretch。拆分列后,需要自定义列宽。
- 商品ID列宽按“原等分状态下商品ID列宽”的 `50%` 计算,即从 `1.0` 权重降为 `0.5` 权重。
- 商品ID列缩出来的 `0.5` 权重,平均分给「标题状态」和「图片状态」两列,每个状态列额外 `0.25` 权重。
- 推荐权重:`店铺=1.0 / 商品ID=0.5 / 旧标题=1.0 / 新标题=1.0 / 标题状态=1.25 / 图片状态=1.25`。
- 在表格 resize、刷新后重新应用列宽;避免商品ID过宽,也避免状态文字显示不全。
## 验收要点
- ②AI生成表格列头显示为:`店铺 / 商品ID / 旧标题 / 新标题 / 标题状态 / 图片状态`。
- 标题成功但图片未生成时,能显示「标题状态=已生成」「图片状态=待生成/未启用」。
- 图片失败时,能显示「标题状态=已生成」「图片状态=失败」。
- 标题失败时,能显示「标题状态=失败」「图片状态=未开始/未启用」。
- tooltip 仍保留完整 `last_error`,不丢失 T-552 的失败步骤。
- 商品ID列宽约为原等分宽度的 50%;标题状态和图片状态平均接收缩出来的宽度。
- 单测覆盖表头、状态推导、列宽权重或 resize 后列宽关系。
## 边界(不改什么)
只改②AI生成表格展示、状态推导和列宽;不改 DB schema、`tasks.stage/status` 语义、AI 生成编排、cmhub HTTP、运行日志、底部进度条、Excel、Shopee/CDP。