Files
cmshoppe/docs/reviews/2026-06-29-T501-T504-acceptance.md
T

74 lines
6.1 KiB
Markdown
Raw 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.
# 验收报告 · T-501 ~ T-504 · Phase 5 设置与收尾
- 日期:2026-06-29
- 范围:Codex 完成的 Phase 5——T-501 设置·AI 模型管理 UI、T-501b 角色与生成参数、T-501c Shopee 更新安全开关、T-502 满 9 张封面替换、T-503 敏感信息提示与脱敏、T-504 多账号并行/dry-run/运行日志
- 评审方式:编译检查 + 单元测试(本机实跑逻辑层)+ 逐模块源码阅读 + 对照 `docs/06-tasks.md` 验收要点 + 对照 `AGENTS.md` 安全红线
- 复核更新:2026-06-29 用户确认 T-504 已进入当前范围;Codex 已在 commit `c9455c7` 同步 `AGENTS.md`。
- 结论:**代码质量扎实,安全红线守住;原报告提出的范围拍板与 `AGENTS.md` 文档漂移已处理。当前剩余边界是 T-404 真实 Shopee 单条冒烟仍未执行。**
## 一、验证方法与结果
Claude Code 初评环境执行:
```bash
python3 -m compileall -q app main.py tests # exit 0
python3 -m unittest discover -s tests # Ran 55 tests, OK (skipped=3)
```
- 跑到的 55 项覆盖 db / appconfig / editor / prompts / ai / accounts 逻辑层,全绿。
- ⚠️ Claude Code 评审环境 **PySide6 / openpyxl 未安装**,导致 `test_gui`、`test_workers`、`test_excel` 三个模块被整体 **skip**。这说明 Claude Code 环境未独立覆盖 GUI/Worker/Excel 测试。
Codex 复核环境补跑:
```bash
python -m compileall app main.py tests # exit 0
python -m unittest discover -s tests # Ran 112 tests, OK
```
- GUI / Worker / Excel 用例在当前环境未 skip。
- 本次复核不包含 T-404 真机 Shopee 提交;T-404 仍需单独执行。
## 二、逐任务核对
| 任务 | 结论 | 关键核对 |
| --- | --- | --- |
| T-501 设置·AI 模型管理 UI | ✅ | master-detail:模型下拉 + 新增/删除 + 详情(服务商/类别/api_type/模型ID/网址/密钥打码/连接超时)+ 测试连接;复用 T-005 后端;name 唯一;密钥本地明文存、UI 打码 |
| T-501b 角色与生成参数 | ✅ | 标题/图片大模型下拉按类别过滤;分辨率 512/1k/2k/4k;返回超时随 `resolution_timeouts` 自动;并发/重试/jpg 质量/路径/端口持久化 `config.json` |
| T-501c Shopee 更新安全开关 | ✅ | 测试商品 ID、`allow_real_submit`、`allow_cover_update`、`max_items_per_run`、`close_success_tab`;真实提交与封面更新**默认关**;Tab③ 执行前 `_update_safety_error` 读取并拦截 |
| T-502 满 9 张封面替换 | ✅ | 满 9 张时强制校验 `old_cover_path` 本地备份存在,缺失返回 `OLD_COVER_BACKUP_MISSING` **不删除线上图**;删第一张 + 处理 Shopee 确认框 + 上传 + 拖首位;`apply_task` 已把 `old_cover_path` 传入 `replace_cover` |
| T-503 敏感信息提示与脱敏 | ✅ | 首次保存提示本地明文;UI 打码;`sanitize_for_log` 按字段名打码密钥;`run_logs.options_json/summary_json` 入库前均过 `sanitize_for_log` |
| T-504 多账号并行/dry-run/运行日志 | ✅ 已确认 | 功能实现正确;用户已确认 T-504 进入当前范围,`AGENTS.md` 已同步。其他 V2 / V3 功能仍只记录不实现 |
## 三、做得好(安全关键点)
1. **③ 更新前双重闸门**:`start_update` 先 `_update_safety_error` 拦截(真实提交未开、超 `max_items`、未配/非测试商品、封面未开但任务含新封面),再 `QMessageBox.question` 确认且默认 No。
2. **dry-run 真的不提交**:走 `_preview_task`,只写运行日志,不开 CDP、不点「更新」、不改任务状态;`_update_safety_error(dry_run=True)` 早返回 None,因为 dry-run 不触线上。
3. **apply 不误提交**:`apply_task` 标题或封面任一失败即 `return committed=False`,**不调用 `click_update`**;Shopee 编辑器改动只在点「更新」时才提交线上,部分失败不会污染线上。
4. **删满 9 张备份硬门槛**:`_validated_old_cover_backup` 校验 `os.path.exists`,缺备份拒删,符合安全红线。
5. **并行线程安全**:计数器经 `_record_outcome` + `_progress_lock` 串行化;按 alias 分组并行。注意:并行能力是真实存在的,只要设置允许、`max_items_per_run` 调高且筛选结果包含多个 alias,就会按账号并行执行。
## 四、已处理的范围问题
原报告发现:**T-504 把 V2 功能真做了,与 `AGENTS.md` 旧规则冲突。**
- 发现时,`AGENTS.md` 仍写着「V2(多账号并行、dry-run、运行日志)只记录不实现」。
- 同时,`docs/04-architecture.md`、`docs/05-coding-rules.md`、`docs/06-tasks.md` 和 `docs/current-state.md` 已经承认 T-504 的实现;实际问题是 `AGENTS.md` 落后于任务看板和架构文档。
- 用户已确认:**承认 T-504 已进入当前范围**。
- Codex 已提交 `c9455c7 docs: align T-504 scope in AGENTS`,将 `AGENTS.md` 同步为:T-504 已接入的多账号并行、dry-run、运行日志属于当前范围,其他 V2 / V3 功能只记录不实现。
结论:T-504 范围决策已完成,不再需要回退。
## 五、文档漂移(已修复)
`AGENTS.md` L29 与 `docs/05-coding-rules.md` 的冲突已通过 commit `c9455c7` 修复。后续 agent 应按更新后的 `AGENTS.md` 执行:T-504 是当前范围内的已接入功能,其他 V2 / V3 不顺手实现。
## 六、待办 / 边界
- ✅ T-404(真实 Shopee 单条冒烟)仍为 TODO,正确——安全开关刚落地,未上真机,不应扩大真实更新。
- ⚠️ 真机冒烟前,整条线上提交路径仍未完成 T-404 真实验证。建议补验证时:先跑全量 `unittest`;T-404 严格走 Tab③ 二次确认 + ⑤ 安全开关,仅测试商品,默认先只测标题。
- ⚠️ 多账号并行已进入当前范围,但真实提交前仍应保持默认串行,只有明确测试目标和账号准备充分时再开启并行。
## 七、总评
Phase 5 是合格交付:设置三件套、安全闸门、删满 9 张备份校验、脱敏、dry-run 不提交、apply 不误提交都按文档落地。原报告提出的两个必须处理项已经完成:T-504 范围已由用户确认,`AGENTS.md` 文档漂移已修复。当前下一步仍是 T-404,只在测试商品上做单条真实 Shopee 更新冒烟。