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

102 lines
5.6 KiB
Markdown
Raw Normal View History

---
id: T-006
title: 桌面端 MVP 交互原型
phase: 0
deps: []
status: TODO
created: 2026-08-03
context_ref: dfe3d56
work_branch: task/t-006-desk-prototype
needs_device: false
needs_human_review: true
write_paths:
- docs/tasks/T-006.md
- docs/design/desk-execution.html
- docs/design/desk-device-settings.html
---
## 问题 / 背景
desk 端将使用 PySide6 / Qt Widgets,但当前没有可确认的桌面应用信息架构。采购执行页同时
承载连接状态、轮询会话、真机步骤、dry-run、真实下单围栏与人工接管,若不先区分状态,
极易把「重新执行」错误地暴露在可能已创建订单的场景。先用 HTML 模拟 Windows 桌面壳,
确认页签、密度、主动作、键盘操作与安全反馈,再转换为 PySide6 控件。
本任务不连接 ADB、web 服务或拼多多,不构成真机验收,也不证明 Qt 原生焦点、主题、
无障碍和性能;这些必须在生产实现中重新验证。
## 关联需求与交互
- 功能:F-005、F-006、F-009、F-010、F-011、F-013、F-017
- 用户故事:US-003、US-005、US-008
- 交互:IX-007、IX-008、IX-011
- 界面:采购执行、设备与参数两个固定页签
- 架构 / API:`04-architecture.md` 第四、五、六节;`api.md` 第二、三节
- 原型约定:`docs/design/README.md`
## 方案
### 文件与页面
1. `desk-execution.html`:Windows 桌面壳、两个页签、web / ADB / 拼多多版本状态、轮询主动作、
当前任务与步骤、租约、倒计时、失败计数、事件日志。原型状态切换器覆盖:未就绪、空闲、
轮询、第一趟试选、dry-run、真实第二趟围栏前、申请围栏中、围栏后核对、结果不明、待人工、
连续失败停止。
2. `desk-device-settings.html`:显式 serial、连接方式、ADB 路径、web 地址、假设备凭据占位、
轮询间隔、超时与连续失败阈值;校验错误、连接检查中、版本失配、保存成功、运行中冻结。
### Windows / Fluent 交互基线
- 使用 `Segoe UI` 和语义 token,适合 Windows 生产力工具的中等偏紧密度;蓝色主操作、红色
危险、黄色不确定、绿色就绪。图标使用内联 SVG 或文字,不用 emoji。
- 导航只保留两个固定页签;同一任务区只有一个主动作。开始 / 停止轮询的位置稳定,
禁用时在控件附近说明原因。
- 适配 compact / medium / wide:窄宽度改为单列,宽屏把当前任务与事件日志并排;不依赖
hover 才能看到关键信息。
- 支持键盘遍历、可见焦点、`aria-live`、高对比媒体查询、深浅色 token 与
`prefers-reduced-motion`。原型可以提供主题 / 状态切换,但必须标注为演示工具。
- 每个文件 CSS / JS 全内联、可复位假数据、零网络请求;不得调用 ADB、shell、API 或打开 App。
### 状态与安全表达
- web、设备、App 版本三项都就绪才允许开始轮询;App 实际版本与已取证版本不一致时
fail closed,并给出「停止轮询、重新取证」的下一步。
- 当前任务始终显示 `TRIAL` / `DRY-RUN` / `ORDER` 的中文含义;dry-run 固定显示
「只读演练,不会提交订单」。
- 申请围栏失败或响应不明时显示「未获点击许可」,不得出现继续 / 提交动作。
- 围栏成功后只恢复同一 `submission_id`;点击结果不明时显示「订单可能已创建」,只提供
导出证据 / 打开人工核查说明,不提供重试、重新领取或放弃授权。
- 外部支付、安全校验和真机断连立即停止;不提供绕过、继续付款或任何扣款操作。
- 运行中冻结设备切换与参数保存;关闭窗口受控并说明将停止轮询,围栏后不得让用户误以为
关闭即可重来。
### HTML 到 PySide6 映射
执行记录必须补一张映射表,至少覆盖:应用壳 / 页签、状态徽标、主动作、表单、进度、日志、
确认对话框、通知 / 错误、焦点与快捷键;说明推荐的 Qt Widgets 控件、信号和状态来源。
## 验收要点
- 两个 HTML 均可本地直接打开,页签入口互通,控制台无 error,除本地导航外无网络请求。
- 所列运行状态均可通过显式原型控制区切换;切换后主动作、说明和可用控件与 IX 一致。
- 版本失配、服务端不可达、围栏响应不明、点击后结果不明、外部支付、安全校验均有明确
停止状态和下一步,且绝无重试提交或付款控件。
- compact / medium / wide 无内容覆盖;键盘可操作、焦点可见、状态不只靠颜色。
- 任务执行记录包含 HTML → PySide6 映射与人工评审清单。
- 运行:`python scripts/validate_agent_context.py`、`git diff --check`,并用浏览器逐页检查
accessibility snapshot、控制台与网络请求。
- 完成自动验证后任务保持 `DOING`,等待人确认页签、信息密度、主动作和安全状态表达。
## 边界
- 只修改 frontmatter `write_paths` 所列文件,不改共享路线图、需求、IX、API 或生产目录。
- 不实现 Python、PySide6、uiautomator2、ADB、HTTP、系统托盘、后台进程或安装包。
- 不从前序项目复制页面判据、选择器、常量或真机结论。
- 不提供任何点击支付、免密支付、先用后付或扣款相关控件;也不提供真实提交按钮。
- 原型 HTML 不能作为 Qt 原生行为、无障碍、主题或性能的验收证据。
## 执行记录
开工后记录修改文件、浏览器检查尺寸、控制台 / 网络 / 可访问性结果、HTML → PySide6 映射、
未验证范围和人工确认项。