--- id: T-002 title: 初始化采购工具 client Python 骨架 phase: 0 deps: [] status: DONE created: 2026-08-03 vikunja_task_id: 17 context_ref: a63bdb8 work_branch: task/t-002-client-skeleton needs_device: false needs_human_review: false write_paths: - docs/tasks/T-002.md - client/** - docs/03-tech-stack.md - docs/00-ai-start-here.md - docs/current-state.md --- ## 问题 / 背景 仓库尚无 client/requirements.txt 和可运行的采购工具代码,init.ps1 因此按预期以退出码 3 停止。没有稳定的 Python 包、测试入口、日志与产物策略,后续 ADB/uiautomator2 真机取证无法开始。 ## 关联需求与交互 - 功能:Phase 0 工程地基,不实现采购执行流程。 - 用户故事 / 交互:不适用,本任务只建立应用骨架,不实现已确认原型的生产界面。 - 架构 / API:遵循 docs/03-tech-stack.md 与 TaskSource / ResultSink 边界;不新增跨端接口。 ## 方案 1. 在 client/ 建立 Python 3.11+ 包、requirements.txt、应用入口和最小测试结构。 2. 声明既定 PySide6 / uiautomator2 依赖,但基础单元测试不得要求连接真机。 3. 建立日志和运行产物目录策略;本地虚拟环境与运行产物必须被 client 范围内的忽略规则排除,日志不得记录 token、地址、手机号或支付信息。 4. 保证 python -m unittest discover -s tests -t . 与 python -m compileall -q src tests 可运行。 5. T-001 关闭前不修改共享文档。先在 Vikunja 评论记录已验证的 client 命令;T-001 完成后由任务所有者先提交 write_paths 扩展,再更新共享文档并关闭 T-002。 ## 验收要点 - client/requirements.txt、src 包、应用入口和 tests 存在。 - unittest 与 compileall 在 client/ 通过,且不需要真机。 - 日志 / 产物路径和脱敏边界有测试或可验证配置。 - 不包含拼多多页面判据、真机自动化实现、下单或付款代码。 - 关闭 T-002 前,共享文档中的 client 占位命令已由扩展后的独占 write_paths 更新为实际命令。 ## 执行记录 ### 2026-08-03T10:30:56Z · ila 主 agent 终审通过:采购工具 Python 3.11+ 骨架、PySide6 最小入口、运行目录和敏感日志脱敏策略均已落成;无真机、页面判据、下单或付款逻辑。 独立验证:6 项 unittest 通过;compileall 通过;wheel 构建及 requirements.txt→Requires-Dist 元数据核对通过;Python 3.12 editable install 通过;离屏窗口构造通过;采购服务 race/vet/build 回归及 agent-context 门禁通过。 共享文档已更新为 T-002 完成快照,并如实保留 init.ps1 默认 Python 3.10 风险给 T-003。 ## 边界 - 不实现拼多多页面判据、ADB/uiautomator2 真机流程、采购执行 UI 或任何 Phase 1+ 功能。 - 不编写任何进入订单确认、提交订单、付款或支付相关代码。 - 不修改 `admin/`、`docs/api.md`、`docs/04-architecture.md`、需求或交互原型。 - T-001 为 `DOING` 时不修改共享文档;先在 Vikunja 记录验证命令。T-001 关闭后,必须先提交 `write_paths` 扩展,再更新 `docs/03-tech-stack.md`、`docs/00-ai-start-here.md`、 `docs/current-state.md`,不得绕过路径门禁。 - 本地虚拟环境、缓存、日志和运行产物不得提交 Git;凭据和敏感信息不得进入日志。