Files
cmshoppe/docs/tasks/T-555.md
T

4.9 KiB
Raw Blame History

id, title, phase, deps, status, created
id title phase deps status created
T-555 ②AI生成列宽再分配与标题/生图用时计时 7
T-554
T-519
T-523
TODO 2026-07-08

问题 / 背景

T-554 已把②「AI生成」任务表格从一个「状态」列拆成「标题状态 / 图片状态」。实际使用时,两个状态列只展示短文本(如「已生成」「失败」「未启用」),当前列宽偏宽;旧标题和新标题才是运营需要对比阅读的主要内容,应把更多横向空间给标题文本。

②底部已有两条进度条(标题、图片),但右侧原本显示「失败 X」和「cmhub余额:X」。用户在生成标题、生成图片等待时间较长时,更需要看到两个阶段的实时用时变化,尤其生图等待 cmhub 返回可能持续数分钟。失败数量和余额仍可通过表格状态、运行日志、结束汇总、计费日志和设置页查询,不应占用进度条右侧最关键位置。

全栈工程分析

  • 列宽调整风险低:当前②表格列宽已经由 GUI 权重控制,不涉及 DB schema、任务状态、AI 生成编排或 Excel/Shopee。只需调整 GenerateTab.TABLE_COLUMN_WEIGHTS 和列宽测试。
  • 实时用时应在 GUI 层实现:用 PySide6 QTimer 在主线程每秒刷新标签即可;不应让 AI worker 频繁发“秒数”信号,避免后台线程和 UI 过度耦合。
  • 用时口径要分阶段:
    • 生标题用时:从本轮开始生成标题阶段开始计时;标题阶段结束后冻结。
    • 生图用时:从本轮开始生成图片阶段开始计时;图片阶段结束后冻结。
    • 如果本轮没有对应阶段任务,显示 生标题用时 0 秒 或 生图用时 0 秒,不额外引入空状态文案。
  • 不丢失败和余额信息:底部进度条右侧不再显示失败数和 cmhub 余额;失败仍通过表格「标题状态 / 图片状态」、运行日志、结束弹窗和任务 last_error 可见;cmhub 余额仍由计费日志、余额刷新/设置页连接测试等既有入口体现。本任务不改计费 metadata 记录。

方案

  1. ②表格列宽再分配

    • T-554 当前权重为:店铺=1.0 / 商品ID=0.5 / 旧标题=1.0 / 新标题=1.0 / 标题状态=1.25 / 图片状态=1.25。
    • 将「标题状态」和「图片状态」列宽缩小到当前宽度的约 33%:1.25 * 0.33 ≈ 0.4125。
    • 两个状态列共释放约 1.675 权重,平均分给「旧标题」和「新标题」,每列增加约 0.8375。
    • 推荐新权重:店铺=1.0 / 商品ID=0.5 / 旧标题=1.8375 / 新标题=1.8375 / 标题状态=0.4125 / 图片状态=0.4125。
    • 商品ID列继续保持 T-554 的 0.5 权重,不再变宽。
  2. 进度条右侧改为阶段用时

    • 底部标题进度条右侧新增固定宽度标签:生标题用时 0 秒。
    • 底部图片进度条右侧显示固定宽度标签:生图用时 0 秒。
    • 去掉图片进度条右侧原来的 失败 X 和 cmhub余额:X 展示位置;该位置改为生图用时。
    • 两个用时标签宽度保持一致,避免标题/图片两行进度条长度不齐。
    • 本轮运行中每秒自动刷新秒数;本轮完成、停止或失败汇总后冻结最终秒数;下一次点击「开始生成」时重置为 0。
  3. 计时触发口径

    • 点击「开始生成」后,如果 title_total > 0,立即启动标题计时;如果 title_total == 0,标题用时保持 0。
    • 当标题阶段完成,冻结标题用时。
    • 当图片阶段实际开始(可通过首个 cover 事件或进度中 cover_total > 0 且标题阶段已结束推导),启动生图计时。
    • 当图片阶段完成、停止或失败汇总后,冻结生图用时。
    • 计时只用于 GUI 显示,不写入 SQLite、Excel 或运行日志;运行日志已有分阶段耗时明细。

验收要点

  • ②AI生成表格中「标题状态 / 图片状态」两列宽约为 T-554 当前宽度的 33%。
  • 「旧标题 / 新标题」两列平均获得状态列缩出来的宽度,标题文本区域明显变宽。
  • 商品ID列仍保持 T-554 的缩窄宽度,不因为本任务变宽。
  • 标题进度条右侧显示 生标题用时 N 秒,运行中每秒递增。
  • 图片进度条右侧显示 生图用时 N 秒,运行中每秒递增。
  • 图片进度条右侧不再显示 失败 X 和 cmhub余额:X。
  • 生成完成、停止或失败后,两个用时标签冻结最终秒数;再次开始生成时归零。
  • 单测覆盖列宽权重变化、两个用时标签初始显示、开始/进度/结束后的计时启停,以及失败数/余额标签不再占用进度条右侧布局。

边界(不改什么)

只改②AI生成 GUI 展示和测试;不改 AI 生成流程、cmhub HTTP、并发策略、DB schema、运行日志持久化、计费 metadata、Excel、Shopee/CDP。失败数量和 cmhub 余额不从系统中删除,只是不再显示在两条进度条右侧。