From 851838e92a6dfba3ecf125313164a46c64220028 Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Mon, 3 Aug 2026 12:15:16 +0800 Subject: [PATCH] docs(tasks): define web and desktop MVP prototypes --- docs/tasks/T-005.md | 92 ++++++++++++++++++++++++++++++++++++++++ docs/tasks/T-006.md | 101 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 193 insertions(+) create mode 100644 docs/tasks/T-005.md create mode 100644 docs/tasks/T-006.md diff --git a/docs/tasks/T-005.md b/docs/tasks/T-005.md new file mode 100644 index 0000000..cdd5387 --- /dev/null +++ b/docs/tasks/T-005.md @@ -0,0 +1,92 @@ +--- +id: T-005 +title: 网页端 MVP 交互原型 +phase: 0 +deps: [] +status: TODO +created: 2026-08-03 +context_ref: dfe3d56 +work_branch: task/t-005-web-prototype +needs_device: false +needs_human_review: true +write_paths: + - docs/tasks/T-005.md + - docs/design/web-login.html + - docs/design/web-task-create.html + - docs/design/web-task-workbench.html + - docs/design/web-task-detail.html +--- + +## 问题 / 背景 + +web 端尚无生产代码。若直接实现 SSR 页面,登录、建单、三泳道工作台、试选确认、授权围栏、 +结果调和与待付款收口容易在代码阶段反复改布局,也可能把高风险状态遗漏。先用一页一文件的 +自包含 HTML 假数据原型确认信息架构、主动作与异常恢复,再开始 T-201 及后续生产页面。 + +本任务是第一阶段原型:确认流程和信息架构,不证明拼多多 App 里能读取哪些字段。T-103 +真机取证若改变字段,生产页面开工前必须先同步 IX 与原型。 + +## 关联需求与交互 + +- 功能:F-001、F-004、F-007、F-008、F-009、F-010、F-011、F-013、F-017 +- 用户故事:US-001、US-002、US-004、US-005、US-006、US-007、US-008 +- 交互:IX-001~IX-006、IX-010、IX-011 +- 路由:`/login`、`/tasks/new`、`/tasks`、`/tasks/{id}` +- 架构 / API:`04-architecture.md` 第四、五节;`api.md` 第一、二节 +- 原型约定:`docs/design/README.md` + +## 方案 + +### 文件与页面 + +1. `web-login.html`:登录、站内返回提示、默认 / 校验错误 / 提交中状态。 +2. `web-task-create.html`:任务名称、商品链接、颜色分类、尺码、数量、价格上限;逐字段错误、 + 保留输入、成功反馈。只模拟,不发送表单。 +3. `web-task-workbench.html`:按「等你决定 / 机器在跑 / 已结束」分泳道;第一条待决策任务 + 展开;关键词、泳道、时间范围、加载 / 空 / 错误状态可切换。 +4. `web-task-detail.html`:以原型状态切换器演示 `WAITING_CONFIRMATION`、围栏前 + `AUTHORIZED/ORDERING`、围栏后 `ORDERING`、`RECONCILIATION_REQUIRED`、 + `WAITING_PAYMENT`、`NEEDS_MANUAL` 与终态。每种业务状态只有一个主动作。 + +### 视觉与交互基线 + +- 冷静、紧凑的运营工作台;系统无衬线字体,优先 `Segoe UI`。主操作用蓝色,红色仅用于 + 危险 / 错误,黄色用于结果不明;不使用装饰性渐变、外部字体或 emoji 图标。 +- 每个文件 CSS / JS 全内联、零构建、双击可打开;可用相对链接在四页间导航。 +- 顶部固定显示 `PROTOTYPE - 仅供枚举交互,非实现依据`。 +- 全部为可复位假数据;不得调用 API、加载 CDN / 外链图片、保存凭据或触发真实业务动作。 +- 使用语义化 `header/nav/main/form/button/table/dialog`;Tab 顺序符合视觉顺序,焦点清晰; + 错误靠近字段并用 `role="alert"` / `aria-live` 宣告;不只靠颜色表达状态。 +- 适配 375 / 768 / 1024 / 1440 px;窄屏不出现页面级水平滚动;遵守 + `prefers-reduced-motion`。 + +### 资金安全表达 + +- 授权主动作统一写「确认下单(不付款)」,同时展示授权上限与「系统不会付款」。 +- 围栏前可以放弃,但文案明确「将重新试选取价」,不是回到旧确认卡。 +- 围栏成功后不出现重试、再次提交或放弃按钮;只显示唯一 `submission_id` 和人工核查入口。 +- `RECONCILIATION_REQUIRED` 明确提示「订单可能已创建、请勿再次提交」,并展示证据与下一步。 +- 待付款不是成功;截图缺失或核对不一致时不能标记完成。 + +## 验收要点 + +- 四个 HTML 均可从本地直接打开,控制台无 error,除本地文档导航外无网络请求。 +- 四页之间的主要入口可通过相对链接到达;所有演示按钮均为原型状态切换,不发送真实请求。 +- 建单字段、三泳道、试选确认、围栏前放弃、围栏后调和、待付款核对全部有可观察页面状态。 +- 加载、空、错误、禁用与成功反馈均可演示;禁用动作旁有原因,失败旁有恢复路径。 +- 键盘可完成全部演示;375 / 768 / 1024 / 1440 px 无内容截断或页面级水平滚动。 +- 运行:`python scripts/validate_agent_context.py`、`git diff --check`,并用浏览器逐页检查 + accessibility snapshot、控制台与网络请求。 +- 完成自动验证后任务保持 `DOING`,等待人确认布局、信息层级、主动作和安全文案。 + +## 边界 + +- 只修改 frontmatter `write_paths` 所列文件,不改共享路线图、需求、IX、API 或生产目录。 +- 不实现 Go、SSR、数据库、真实鉴权、CSRF 或 HTTP 调用。 +- 不发明拼多多页面字段、选择器、App 版本或真机结论;截图区域只用明显的假数据占位。 +- 不实现 Excel、ERP、图搜、多候选对照台、自动订单回读或自动付款。 +- 原型代码不得复制到生产实现。 + +## 执行记录 + +开工后记录修改文件、浏览器检查尺寸、控制台 / 网络 / 可访问性结果、未验证范围和人工确认项。 diff --git a/docs/tasks/T-006.md b/docs/tasks/T-006.md new file mode 100644 index 0000000..44f7e0b --- /dev/null +++ b/docs/tasks/T-006.md @@ -0,0 +1,101 @@ +--- +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 映射、 +未验证范围和人工确认项。