docs: T-001~T-103 验收报告
- 新增 docs/reviews/2026-06-27-T001-T103-acceptance.md(逐任务核对、已验证事实保留、真机冒烟待办) - progress.md 追加审查指针 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
deb12cb76c
commit
6d821f89e2
@@ -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` 中 `<span>更新</span>`,禁用态识别 ✅ |
|
||||
| 登录检测 | 登录页 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 主窗口骨架)。
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user