From 6d821f89e26956d5f1f8e163b219881a8c9abd3a Mon Sep 17 00:00:00 2001 From: chengma Date: Sat, 27 Jun 2026 09:53:05 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20T-001~T-103=20=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 docs/reviews/2026-06-27-T001-T103-acceptance.md(逐任务核对、已验证事实保留、真机冒烟待办) - progress.md 追加审查指针 Co-Authored-By: Claude Opus 4.8 --- .../2026-06-27-T001-T103-acceptance.md | 67 +++++++++++++++++++ progress.md | 7 ++ 2 files changed, 74 insertions(+) create mode 100644 docs/reviews/2026-06-27-T001-T103-acceptance.md diff --git a/docs/reviews/2026-06-27-T001-T103-acceptance.md b/docs/reviews/2026-06-27-T001-T103-acceptance.md new file mode 100644 index 0000000..96f9b46 --- /dev/null +++ b/docs/reviews/2026-06-27-T001-T103-acceptance.md @@ -0,0 +1,67 @@ +# 验收报告 · T-001 ~ T-103(含 T-000/T-004/T-005/T-006) + +- 日期:2026-06-27 +- 范围:Codex 完成的 Phase 0 地基(T-000~T-006)+ Phase 1 账号与启动(T-101~T-103) +- 评审方式:编译检查 + 单元测试 + 逐模块源码阅读 + 对照 `docs/api.md`/`docs/04-architecture.md`/`docs/06-tasks.md` 契约 +- 结论:**通过。按文档完成,忠实于已验证事实,质量偏上。** + +## 一、验证方法与结果 + +``` +python3 -m compileall app main.py # OK +python3 -m unittest discover -s tests # Ran 22 tests, OK (skipped=2) +``` + +2 个 skip 为 `app.excel` / `app.prompts` 的**契约测试**(模块尚未实现则自动跳过,实现后即校验),属预期。 + +## 二、逐任务核对 + +| 任务 | 结论 | 关键核对 | +| --- | --- | --- | +| T-000 包结构 | ✅ | `app/` 包 + `main.py` + `__main__.py`;prototypes 导入已修正 | +| T-001 `editor.py` | ✅ | 已验证 CDP 事实全部对上(见第三节);满 9 张不臆造删除,返回 `FULL_IMAGE_SLOTS` 留 T-502 | +| T-002 `appconfig.py`+`config.json` | ✅ | 默认值齐;`response_timeout` 按分辨率派生;`_assert_no_secrets` 强制 config.json 不含密钥 | +| T-003 `db.py`+SQLite | ✅ | WAL/busy_timeout/foreign_keys;建表幂等;`set_collected/generated/applied` 等齐;schema 与架构 5.2 双向同步 | +| T-004 `.gitignore` | ✅ | 配置/密钥/DB/凭证/图片全部排除 | +| T-005 ai_models 后端 | ✅ | category 过滤、唯一名校验、至少各一个 text/image、`_mask_api_key` 打码、`get_model` | +| T-006 测试基座 | ✅ | 22 测试通过;excel/prompts 用契约测试自动 skip | +| T-101 slug+目录 | ✅ | 规范化 + sha1 后缀保证唯一;路径绝对化;按需建目录 | +| T-102 `chrome.py` 启动器 | ✅ | 正好三参数;`/json/version` 探测用空 ProxyHandler 绕过系统代理 | +| T-103 登录保活+检测 | ✅ | 登录页重定向 / 缺 `SPC_ST·SPC_U` 判未登录;5 个登录单测覆盖 | + +## 三、已验证 CDP 事实保留情况(最关键) + +`app/cdp.py` 完整保留三处防护:清除 `*_proxy` 环境变量、`requests.trust_env=False`、`websocket` 连接 `suppress_origin=True`。 + +`app/editor.py` 与原型逐项一致: + +| 事实 | 实现 | +| --- | --- | +| 标题输入框 XPath | `//input[@class='eds-input__input' and string-length(@modelvalue)>24]` ✅ | +| SPA 就绪判断 | 标题框 + itembox + 上传 input 三者皆存在 ✅ | +| 写标题让 Vue 感知 | 原生 setter + 派发 input/change,校验 `value==modelvalue==新值` ✅ | +| 上传输入框 | `.shopee-image-manager__upload input[type=file]` + `DOM.setFileInputFiles` ✅ | +| 上传成功判断 | 轮询张数 +1 且新图 src 含 `susercontent`、非 `blob:` ✅ | +| 封面=第一位 | 拖拽落点 `first.left - 0.30*w` ✅ | +| 更新按钮 | `button.eds-button` 中 `更新`,禁用态识别 ✅ | +| 登录检测 | 登录页 URL 或缺 `SPC_ST`/`SPC_U` → 未登录 ✅ | + +## 四、值得肯定 + +1. **不臆造未验证内容**:满 9 张删除封面未硬写,明确注释"确认框选择器未验证,留 T-502"。 +2. **文档↔代码一致**:db schema 比原 5.2 丰富(batches 表、stage/status 分离、`*_attempts` 重试、行级定位 `source_file_abs/sheet/row/row_key`),但架构 5.2 已同步更新。 +3. **工程加分项**:SQLite 多线程连接纪律、密钥脱敏与 `_assert_no_secrets` 守卫、契约式 pending 测试。 + +## 五、小问题(不影响验收,可不改) + +- `editor.replace_cover` 在 `setFileInputFiles` 后又手动派发一次 input/change(原型无,冗余但无害)。 +- `collect()` 旧封面写死 `.jpg` 扩展名(Shopee 封面基本为 jpg,影响极小)。 + +## 六、待办 / 边界 + +- ⚠️ T-001 验收原文为"在测试商品跑通",但本轮测试均为 **mock CDP**,未连真实 Shopee。`editor.py` 是对此前已在线验证过的原型的忠实移植,可信度高,但**这份新代码尚未在真实 Shopee 上重新冒烟**。 +- **建议**:接 GUI(T-104+)前,用 prototypes 同款环境对 `editor.py` 做一次真机冒烟(打开测试商品 → 采集 → 改标题 → 换封面,不提交),确认移植无回归。 + +## 七、总评 + +合格偏上的工程交付:按文档、守纪律、有测试、不臆造。可放心推进 T-104(PySide6 主窗口骨架)。 diff --git a/progress.md b/progress.md index 5fb390e..4190b69 100644 --- a/progress.md +++ b/progress.md @@ -320,3 +320,10 @@ - 规则:不自动登录、不填密码;登录态依赖 T-101/T-102 的稳定 user-data-dir 保留;URL 命中登录页返回 `LOGIN_PAGE`,缺 `SPC_ST/SPC_U` 返回 `NO_SESSION_COOKIE`。 - 验证:`py -3 -m compileall app main.py tests` 通过;`py -3 -m unittest discover -s tests` 通过(22 tests,skipped=2);`python -m unittest discover -s tests` 通过(22 tests,skipped=2)。 - 下一步:按任务看板领取 T-104。 + +## 【2026-06-27】审查 · T-001~T-103(含 T-000/T-004/T-005/T-006) + +- 状态:DONE(审查通过) +- 结论:按文档完成、忠实于已验证 CDP 事实、文档↔代码一致、22 测试通过;未臆造未验证内容(满 9 张删除留 T-502)。 +- 待办:`app/editor.py` 接 GUI(T-104+)前,建议用 prototypes 同款环境做一次真机冒烟(本轮测试均为 mock CDP,未连真实 Shopee)。 +- 完整报告:[`docs/reviews/2026-06-27-T001-T103-acceptance.md`](docs/reviews/2026-06-27-T001-T103-acceptance.md)