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

102 lines
5.6 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-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 映射、
未验证范围和人工确认项。