diff --git a/docs/03-tech-stack.md b/docs/03-tech-stack.md index dbf0eaa..bfce14a 100644 --- a/docs/03-tech-stack.md +++ b/docs/03-tech-stack.md @@ -72,7 +72,7 @@ | 测试 | `go test ./...` | `.\.venv\Scripts\python.exe -m unittest discover -s tests -t .` | | 静态检查 | `go vet ./...` | `.\.venv\Scripts\python.exe -m compileall -q src tests scripts` | -### T-101 设备基线取证(代码已完成,等待人工真机验收) +### T-101 设备基线取证(2026-08-04 已完成人工双通道验收) `client/scripts/capture_device_baseline.py` 只允许对**手工明确填写**的 ADB serial 做连接前核验、 设备型号 / Android / 拼多多版本读取、截图和 `dump_hierarchy(compressed=False)`。它不打开商品、 @@ -100,8 +100,8 @@ D:\Portable\adb\adb.exe devices -l `dumpWindowHierarchy(compressed=False, max_depth=50)` 的公开 JSON-RPC 调用;uiautomator2 初始化仍有 上游固定启动上限。截图 Base64 仅兼容 RPC 返回值中的空格、TAB、CR、LF,其余字符 仍严格拒绝。XML 仅留在本机明确指定的证据目录;人工必须先在本地检查截图/XML,再只记录路径 -和哈希,不得把原始证据提交 Git;之后把设备型号、Android、拼多多版本及 USB/WiFi 结论记录到 T-101, -才能完成该任务。 +和哈希,不得把原始证据提交 Git。USB 与 WiFi 已分别由人完成取证和隐私检查,设备型号、Android、 +拼多多版本、产物路径及 SHA-256 已记录到 T-101;上述命令保留用于可审计的复现与排障。 Windows 的标准入口是仓库根 `./init.ps1`。它要求 Go、两端目录及其哨兵文件存在;已有合规 `client/.venv` 时,所有采购工具检查与 validator 都使用该解释器。只有 venv 不存在时,才从 `py -0p` diff --git a/docs/current-state.md b/docs/current-state.md index 3f48c1d..14bcbf5 100644 --- a/docs/current-state.md +++ b/docs/current-state.md @@ -28,15 +28,15 @@ 并且不覆盖低版本环境;成功后打印真实启动命令。 - 标准验证路径:`./init.ps1` 已实际跑通 admin 的 mod download / test / vet / build、client 的 editable install / 包导入 / unittest / compileall,以及仓库上下文校验。可单独运行两端命令诊断。 -- 当前 blocker:T-101 等待人工分别完成 USB 与 WiFi 真机验收;这是 Phase 1 后续任务的门禁。 - T-002、T-003、T-004 已完成,桌面 GUI 与真机流程尚未验收。 +- 当前 blocker:无外部 blocker。T-101 已完成人工 USB/WiFi 双通道验收;下一步落成并领取 T-102, + 验证按链接打开商品详情页。桌面 GUI 与后续真机采购流程尚未验收。 ## 当前目录要点 | 路径 | 状态 | 说明 | | --- | --- | --- | | `docs/` | 已有 | 项目规范化文档,本次已完整生成 | -| `docs/tasks/` | 已有(T-001~T-004、T-005~T-009、T-101) | T-001~T-004 已完成;T-101 已就绪、待真机验收 | +| `docs/tasks/` | 已有(T-001~T-004、T-005~T-009、T-101) | T-001~T-004、T-101 已完成;下一任务为 T-102 | | `docs/design/` | 已有(6 个原型) | web 登录 / 建单 / 工作台 / 详情,desk 采购执行 / 配置;均已人工确认 | | `scripts/` | 已有 | 上下文门禁、Vikunja 单向导出与 MCP 启动包装 | | `admin/` | 已初始化 | Go 1.23+ / gin / SQLite,含核心模型、迁移与状态机;无真机采购执行 | @@ -51,8 +51,8 @@ 源码目录契约)、T-008(Vikunja 任务权威与单向导出)、T-009(MVP 关键路径与并行波次), 以及 T-001(采购服务 Go 骨架)。 - 已完成:T-002(采购工具 Python 骨架)、T-003(双端统一初始化与验证入口)、 - T-004(核心数据模型)。T-101(真机环境盘点)已完成离线实现和 mock 测试,仍为 `DOING`, - 必须等待人工 USB、WiFi 两通道真机验收后才能完成;接续推进 T-101 → T-102 → T-103。 + T-004(核心数据模型)、T-101(真机环境盘点与 USB/WiFi 双通道人工验收)。下一步推进 + T-102 → T-103。 - T-103 是当前最高优先级和 MVP 生死线。通过前不开发依赖真机可读字段的 Phase 2 生产页面。 - 已确认原型继续只作信息架构依据;原型假数据不调用真实接口、不驱动真机。真机结论改变 可读字段时必须先回修原型与交互清单。 @@ -112,10 +112,10 @@ D:\Portable\adb\adb.exe devices -l 脚本只读取非敏感设备元数据、拼多多版本、截图和完整 XML;不会打开商品或写页面判据。它对同机双 通道、身份读取失败、offline、unauthorized、超时或 serial 不存在均 fail closed。成功目录的 -`manifest.json` 只记录元数据、产物路径和 SHA-256,不记录 XML 页面正文或原始 serial。人工记录 -两次验收结果前,T-101 必须保持 `DOING`。`--timeout` 约束 ADB 命令、ADB socket 以及截图/节点树的 -公开 JSON-RPC 调用;uiautomator2 初始化仍有上游固定启动上限。截图/XML 只在本地人工检查,执行记录 -只写路径和 SHA-256,原始证据不得提交 Git。 +`manifest.json` 只记录元数据、产物路径和 SHA-256,不记录 XML 页面正文或原始 serial。T-101 已由人 +完成两次验收并确认原始证据不含敏感信息;`--timeout` 约束 ADB 命令、ADB socket 以及截图/节点树的 +公开 JSON-RPC 调用,uiautomator2 初始化仍有上游固定启动上限。截图/XML 只保留在本地,执行记录只写 +路径和 SHA-256,原始证据不得提交 Git。 ## 关键背景 diff --git a/docs/tasks/T-101.md b/docs/tasks/T-101.md index 5692b87..a10274d 100644 --- a/docs/tasks/T-101.md +++ b/docs/tasks/T-101.md @@ -3,7 +3,7 @@ id: T-101 title: 验证 ADB 与 uiautomator2 双通道连接 phase: 1 deps: [T-002] -status: DOING +status: DONE created: 2026-08-03 vikunja_task_id: 21 context_ref: 87591e8 @@ -23,7 +23,7 @@ write_paths: - docs/current-state.md --- - + ## 问题 / 背景 T-002 已建立采购工具骨架,但本项目还没有对实际 Android 手机、ADB 通道或 uiautomator2 做过取证。后续所有拼多多页面判据都依赖稳定、显式且可审计的设备连接;若复用前序项目结论或自动猜设备,会把错误设备和旧页面事实带入生产流程。 @@ -75,6 +75,10 @@ T-101 已领取,Git 状态将提交为 DOING。只读环境盘点:adb 位于 ### 2026-08-04T00:55:14Z · ila 2026-08-04 WiFi 人工取证技术验收通过:用户报告基线命令成功,manifest 位于 `%LOCALAPPDATA%\cmbuyer\artifacts\T-101\wifi-baseline\manifest.json`。主 agent 仅读取 manifest 元数据并计算文件哈希,未打开或展示截图/XML 内容。manifest schema=1、channel=wifi、设备型号 PKG110、Android 16、拼多多包 com.xunmeng.pinduoduo、版本 8.17.0;serial 仅保存 64 位 SHA-256。`screenshot.png` 存在,SHA-256=`8f86c94700d93380805b275469123a31749d592d99c0c4d2bcfd540784d1620b`;`hierarchy.xml` 存在,SHA-256=`708182200e25085c07cbb546c9b0adbc7310022bb75a7285c5581bd262661573`;两者均与 manifest 一致。仍等待人工确认原始截图/XML 不含敏感信息,并完成仅 USB 通道的同等取证;T-101 保持 DOING。 + +### 2026-08-04T01:02:03Z · ila + +2026-08-04 USB 人工取证与隐私验收通过:用户报告仅 USB 通道基线命令成功,manifest 位于 `%LOCALAPPDATA%\cmbuyer\artifacts\T-101\usb-baseline\manifest.json`。主 agent 仅读取 manifest 元数据并计算哈希,未打开或展示截图/XML:schema=1、channel=usb、设备 PKG110、Android 16、拼多多 8.17.0;`screenshot.png` SHA-256=`da66e27ef6df1d4b99a64590e9aa383069c8c3995eb9b3695e5daec3a0e7bcf6`,`hierarchy.xml` SHA-256=`e0817f26c07e6861f2ab80052995aff2622ce7cdb61f18689d55c5591bb2045a`,均与 manifest 一致。用户随后明确确认 USB 与 WiFi 两组截图/XML 均不含地址、手机号、支付信息或其他无关隐私。至此 USB/WiFi 显式 serial、截图、compressed=false XML、设备/Android/拼多多版本、路径和 SHA-256 的人工验收全部满足;T-101 可关闭,后续进入 T-102。 ## 边界