Files
cmbuyer/docs/tasks/T-101.md
T

73 lines
4.3 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.
---
id: T-101
title: 验证 ADB 与 uiautomator2 双通道连接
phase: 1
deps: [T-002]
status: DOING
created: 2026-08-03
vikunja_task_id: 21
context_ref: 87591e8
work_branch: task/t-101-device-connectivity
needs_device: true
needs_human_review: true
write_paths:
- docs/tasks/T-101.md
- client/.gitignore
- client/src/cmbuyer_client/device/**
- client/tests/device/**
- client/scripts/capture_device_baseline.py
- docs/evidence/T-101/**
- docs/04-architecture.md
- docs/03-tech-stack.md
- docs/current-state.md
---
<!-- BEGIN VIKUNJA EXPORT id=21 synced=2026-08-03T10:56:38Z sha256=b9e15dc40c426b90f0a1d4b9c5dc2809d246105cad609343c10f471b44f1e491 -->
## 问题 / 背景
T-002 已建立采购工具骨架,但本项目还没有对实际 Android 手机、ADB 通道或 uiautomator2 做过取证。后续所有拼多多页面判据都依赖稳定、显式且可审计的设备连接;若复用前序项目结论或自动猜设备,会把错误设备和旧页面事实带入生产流程。
## 关联需求与交互
- 功能:Phase 1 真机环境盘点,是 T-102/T-103 的前置。
- 用户故事 / 交互:采购工具配置页的显式设备 serial、连接检查与错误反馈。
- 架构 / API:只验证 ADB/uiautomator2 基础能力,不编写拼多多页面判据,不调用采购服务业务接口。
## 方案
1. 实现显式 serial 的设备连接边界与可替换命令执行器;禁止留空自动选择,离线测试覆盖无设备、多设备、unauthorized/offline 和同一手机 USB+WiFi 双通道冲突。
2. 提供只读取证命令:对指定通道连接 uiautomator2,获取设备型号/Android 版本/拼多多 App 版本,执行截图与 dump_hierarchy(compressed=False),所有超时可配置。
3. 产物按稳定目录保存并记录 SHA-256;日志只记录设备标识与元数据,不记录 token、地址、手机号或页面全文。
4. 先完成 mock/fixture 离线测试;随后由人分别用 USB 与 WiFi 真机执行并把设备、Android、拼多多版本、截图/XML 路径和结论写入任务执行记录。
5. 同一手机两个通道同时在线必须明确拒绝,不能随机选一个继续。
## 验收要点
- USB 和 WiFi 均能显式指定并完成截图、compressed=False XML dump。
- 设备未授权、离线、超时、serial 不存在和双通道冲突有可区分错误。
- 取证记录含设备型号、Android 版本、拼多多 App 版本、通道、时间、截图/XML 路径及 SHA-256。
- 离线单测与 compileall 通过,不要求真机。
- needs_device=true:agent 完成代码后保持 DOING,只有人完成两通道真机验收后才能 DONE。
## 执行记录
### 2026-08-03T10:56:19Z · ila
T-101 已领取,Git 状态将提交为 DOING。只读环境盘点:adb 位于 D:\Portable\adb\adb.exe;当前同时列出 WiFi serial 192.168.0.173:5555 与 USB serial 3B65BD02H7F00000,二者 product/model/device 均为 PKG110/PKG110/OP5D2BL1。该现场必须由实现识别为同机双通道并 fail closed。尚未截图、dump 或操作手机,本记录不是人工真机验收;needs_device 规则继续生效。
<!-- END VIKUNJA EXPORT -->
## 边界
- 本任务只建立并验证设备连接、元数据读取、截图和 `dump_hierarchy(compressed=False)`;不打开
拼多多商品、不编写任何页面判据,不选择规格,不进入购买或订单页面。
- 设备 serial 必须显式提供;无设备、多设备、未授权、离线或同一手机 USB + WiFi 双通道并存时
必须明确失败,不得随机选择或静默降级。
- 不使用 `/mnt/d/chengma/cmroubao`、`/mnt/d/chengma/cmpdd` 的设备常量、页面 XML 或结论作为
本项目事实;所有真机结论都必须在本项目重新取证。
- 产物与执行记录不得包含 token、地址、手机号、支付信息或无关页面全文;页面 XML 原始文件只
保存于明确的 T-101 取证目录,日志只记录路径、哈希与非敏感元数据。
- 不修改 `admin/`、业务 API、数据模型或产品 UI,不实现任务领取、采购执行、下单、提交订单、
付款或支付逻辑。
- `needs_device: true`:agent 完成代码和离线门禁后仍必须保持 `DOING`;只有人完成 USB、WiFi
两通道真机验收并记录设备型号、Android 版本、拼多多 App 版本、截图/XML 路径后才能标 `DONE`。