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

86 lines
5.4 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-111
title: 调整为开始采购授权的单趟流程
phase: 1
deps: [T-004, T-010, T-110]
status: DONE
created: 2026-08-04
vikunja_task_id: 28
context_ref: efeb2d9
work_branch: task/t-111-single-pass
needs_device: false
needs_human_review: false
write_paths:
- AGENTS.md
- README.md
- docs/00-ai-start-here.md
- docs/01-vision.md
- docs/02-requirements.md
- docs/03-tech-stack.md
- docs/04-architecture.md
- docs/05-coding-rules.md
- docs/06-tasks.md
- docs/07-user-stories.md
- docs/08-interaction-checklist.md
- docs/api.md
- docs/current-state.md
- docs/README.md
- docs/routes.md
- docs/design/README.md
- docs/design/desk-execution.html
- docs/design/web-task-create.html
- docs/design/web-task-detail.html
- docs/design/web-task-workbench.html
- docs/tasks/README.md
- docs/tasks/T-103.md
- docs/tasks/T-111.md
---
<!-- BEGIN VIKUNJA EXPORT id=28 synced=2026-08-04T08:24:54Z sha256=46931a0016ef5adcd69e2115e5706465078dea91506cbe5a0055c287eb6a52d7 -->
## 问题 / 背景
项目原设计为两趟:先试选并等待管理员确认,再重新进入商品创建待付款订单。项目所有者为加快内部采购,决定取消试选后的人工确认;管理员在任务列表勾选并点击“开始采购”即明确授权采购工具创建一笔待付款订单。系统仍绝不自动付款。
## 关联需求与交互
- 重写 MVP 主流程、状态机、价格闸门、授权与提交围栏。
- 同步需求、用户故事、交互、路由、API、任务路线图、原型与当前状态。
- T-103 改为单趟流程的规格选择/读价前置;T-202 只建 DRAFT,不受影响;新增 T-209 先迁移旧 schema/状态机,T-203 起按新流程实现。
## 方案
1. DRAFT 任务只有管理员勾选并点击“开始采购(只创建待付款订单)”后才能进入设备队列;该动作在服务端事务中创建一次性授权,锁定任务版本、goods_id、颜色、尺码、数量和最高总价。
2. 采购工具领取后同一趟完成:打开商品、受控打开规格面板、精确选规格、闸门一读价并校验上限、设置及复核数量、闸门二重读同价与选中态、进入确认页、闸门三核对应付总额、服务端原子提交围栏、只点击一次“提交订单”。
3. 删除 WAITING_CONFIRMATION、人工“机器选对了吗”、授权锁定试选价和第二次重新打开商品;截图改为内部审计证据,不作为下单前人工审批。
4. 授权在围栏前失败/过期可回到 DRAFT 等管理员重新开始;围栏建立后只能调和同一提交,禁止重试、释放或签发第二笔。
5. 不付款、提交四条件、精确规格、数量复核、价格只读规格面板/订单确认页、外部支付/安全校验停止等红线不放宽。
6. 先提交文档契约,再恢复客户端或新增生产代码。
## 验收要点
- 所有活跃文档只描述单趟采购,不再把两趟或 WAITING_CONFIRMATION 当作 MVP 现实。
- “开始采购”与一次性授权、批量原子性、价格闸门、提交围栏和一次点击的关系明确。
- API/状态机/目标数据模型/任务路线图一致;当前旧 schema 的迁移由 T-209 显式前置。
- 截图为内部证据而非审批前置;T-103 新边界继续禁止数量、确认页和提交。
- Vikunja 导出、agent-context、HTML/JS 静态检查、diff-check 与完整双端门禁通过。
## 执行记录
### 2026-08-04T08:24:12Z · ila
2026-08-04 T-111 主审完成:已把 AGENTS、入口、愿景、需求、架构、编码规则、API、路线图、用户故事、交互、路由、当前状态及四个两端 HTML 原型统一为“管理员点击开始采购即授权创建待付款订单”的单趟流程。保留三道价格闸门、提交四条件、服务端原子围栏、首次许可后只点一次和绝不付款;删除 WAITING_CONFIRMATION / PENDING_RETRIAL / AUTHORIZED 等旧 MVP 状态。审计发现生产 v1 schema 仍为旧 spec_trials/锁定试选价模型,因此路线图新增 T-209,先迁移 schema/领域状态机,再允许 T-203 实现新授权事务。
独立验证通过:四个 HTML 由 Python HTMLParser 解析;四个 JavaScript 由 Node new Function 解析;桌面 18 个 scenario/options/sessionControls 一致;web 关键旧状态不存在;Vikunja T-103/T-111 export check;validate_agent_context;git diff --check;完整 init.ps1(admin test/vet/build,client 80 tests/compileall,包安装与上下文门禁)。未连接真机、未触发采购/提交/付款;未触碰用户 docs/ppt。
<!-- END VIKUNJA EXPORT -->
## 边界
- 管理员点击“开始采购(只创建待付款订单)”是进入设备队列前唯一的人类授权动作;创建 `DRAFT`
本身不得触发设备领取、创建授权、提交订单或付款。
- 单趟流程仍必须保留规格精确匹配、数量读回复核、规格面板两次同价校验、订单确认页金额上限、
服务端提交围栏、提交控件唯一和点击一次;不得以“提速”为由删除或弱化任一项。
- 系统只创建待付款订单,任何路径都不自动付款,不点击支付、免密支付、先用后付或扣款控件。
- 围栏前失败或授权过期可以回到 `DRAFT` 等管理员重新授权;围栏建立后只能调和同一提交记录,
不得释放、重领、重试点击或签发第二笔。
- 本任务只修改文档契约和任务依赖,不修改 `admin/`、`client/`、数据库 migration 或生产代码。