Files
cmshoppe/docs/reviews/2026-06-27-T401-T403-acceptance.md
chengma d0cd408126 docs: 延后Phase4真实冒烟到设置安全开关后
- 新增T-404真实单条更新冒烟任务,并依赖T-501c安全开关

- 新增T-501c Shopee更新安全开关任务,默认关闭真实提交和封面更新

- 补充Phase4验收复核、取消语义、真机冒烟范围和tab策略

- 纳入Phase3/Phase4验收报告并同步current-state与progress
2026-06-27 17:58:08 +08:00

6.0 KiB
Raw Permalink Blame History

验收报告 · T-401 ~ T-403 · Phase 4 更新 Shopee

  • 日期:2026-06-27
  • 范围:Codex 完成的 Phase 4——T-401 Tab③ 列表+批次/店铺/状态筛选+开始更新确认弹窗、T-402 确认后串行 apply、T-403 结果回写原 Excel + 结束弹窗汇总
  • 评审方式:编译检查 + 单元测试(本机实跑 excel)+ 逐模块源码阅读 + 对照 docs/06-tasks.md 验收要点
  • 结论:代码层面通过,质量偏上。但 Phase 4 直接提交线上商品,真机冒烟为 0,是上线前的硬门槛缺口(验收覆盖问题,非代码问题)。

一、验证方法与结果

python3 -m unittest discover -s tests -p "test_excel.py"   # Ran 8 tests, OK(含 write_back_results 实跑)
python3 -m unittest discover -s tests                       # Ran 54 tests, OK (skipped=2)
  • 本评审在 WSL 沙箱进行:临时安装 openpyxl + Pillow 后,excel 8/8 本机实跑通过(含新增结果回写测试)。
  • UpdateTab/ApplyWorker 的 9 个 GUI 用例(含确认门控、串行成功/失败/未匹配、自动结果回写、结束弹窗、锁文件提示、预检拦截、引导去④)读源码 + 测试清单核对;其“绿”以 Codex 在 Windows(python = PySide6 6.5.3)的运行为准。

二、逐任务核对

任务 结论 关键核对
T-401 Tab③ 列表+筛选+确认弹窗 ✅ 批次/店铺/状态三筛选;「开始更新」仅作用于当前筛选的 actionable 任务;确认弹窗显示 批次/店铺/状态/任务数 + 明确写“打开编辑页、替换标题封面、点更新提交线上”风险;取消即 已取消开始更新 不执行;状态=失败可被筛出重试;无常驻提交开关
T-402 确认后串行 apply ✅ QMessageBox.question 默认 No,仅 Yes 才建 worker(test_..._requires_confirmation 实测“未确认不调用 apply”);ApplyWorker 串行,逐条 mark_running→apply_task→set_applied(True/False);单条失败继续;别名未匹配→mark_skipped;异常→set_applied(False,error) 继续;预检(无账号/Chrome 未起/未登录)→blocked 弹窗引导去④;停止取消未开始项
T-403 回写结果+结束弹窗 ✅ apply 完成后自动 write_back_results 回写 新标题/新封面路径/更新状态 到原 Excel(锁处理同 T-204);_update_status 映射完整(成功/失败:原因/略过:原因/处理中/已取消/待更新);结束 QMessageBox 汇总 成功/失败/略过;手动「回写结果」按钮作为锁文件失败后的重试入口

三、做得好

  1. 失败状态可重试闭环:set_applied(False) 只置 status=failed、保留 stage=generated,故失败任务仍满足 _is_actionable_task,再点「开始更新」即重试。与“状态=失败可重试”吻合。
  2. committed 双重判定:bool(result.committed) and not result.error,避免 editor 返回里 clicked 但带错时误判成功。
  3. apply_task 不自动关页(承 e6d7de3 决策):③ 提交后保留商品页便于人工复核/排查,与采集自动关页区分清晰。

四、小问题(不影响验收)

  1. 批量更新会堆积商品页:③ 不自动关 tab,大批量后 Chrome 会累积多个编辑页。属已记录的有意决策,但 V2 可考虑成功提交后延时关页。
  2. 显示用 _is_update_task 比执行用 _is_actionable_task 宽(前者含 applied 及失败/略过带新数据的),两个谓词并存,逻辑正确但建议注释说明“显示集 ⊇ 可执行集”,防后续误改。

五、待办 / 边界(本阶段最关键)

  • ⚠️ T-402 是整条流水线唯一不可逆、真提交线上的步骤,却从未真机冒烟过。 apply_task → change_title/replace_cover/click_update 全程 mock,真实 Shopee 提交路径一次没跑;之前累计的 CDP 采集、AI 生成也都还没真连。

  • 强烈建议(建议作为 Phase 4 正式验收门槛,当前单测全是 mock,不能替代):在任何真实批量更新前,先做一次单条端到端真机冒烟——

    1. 账号④ 启动 + 人工登录;
    2. ① 真机采集 1 条出图;
    3. ② 真实模型生成 1 标题 + 1 封面;
    4. ③ 只选这 1 条、确认弹窗 → 看商品页标题/封面真被改且「更新」提交成功 → 看原 Excel 回写 更新状态=成功。

    确认无回归后再放量。

六、总评

代码层面合格偏上的工程交付:串行执行/确认门控/失败隔离/预检引导/结果回写都按文档落地,且 excel 侧本机实测通过。但 Phase 4 直接操作线上商品,真机冒烟是上线前的硬门槛,目前为 0——务必在真用之前补上单条端到端冒烟。可在补冒烟的同时推进 Phase 5(T-501 设置·AI 模型管理 UI)。

七、Codex 复核补充

  • 本报告总体结论有效:T-401/T-402/T-403 代码层面已满足当前文档验收,主要缺口是未对 Tab③ 真实线上提交做单条冒烟。
  • 测试数量需按环境区分:上文记录的是 Claude Code 在 WSL 沙箱的结果;Codex 完成 T-403 时本地验证为 test_excel.py 8 tests OK、test_gui.py 32 tests OK、compileall OK、全量 python -m unittest discover -s tests 88 tests OK。
  • “停止取消未开始项”应理解为协作式取消:不会中断正在执行中的当前商品更新,只阻止后续未开始任务继续执行。
  • “之前累计的 CDP 采集、AI 生成也都还没真连”表述需细化:Tab① 旧标题/旧封面采集此前已有真机冒烟记录;真实 AI 生成和 Tab③ 在线提交更新仍未完成端到端冒烟。
  • 当前决策:暂不立即真实更新 Shopee 商品。先推进设置模块,并新增 T-501c “Shopee 更新安全开关”;T-404 单条真实更新冒烟依赖 T-501c 完成后再执行。T-404 默认先只测标题更新,封面更新作为可选子项。
  • ③ 更新成功后不自动关闭商品编辑 tab 仍按当前保守策略处理;是否支持“成功后关闭本次新开 tab”放入 T-501c 设置项,不作为本次 Phase 4 验收阻塞。