2026-08-04 15:53:16 +08:00
|
|
|
|
---
|
|
|
|
|
|
id: T-111
|
|
|
|
|
|
title: 调整为开始采购授权的单趟流程
|
|
|
|
|
|
phase: 1
|
|
|
|
|
|
deps: [T-004, T-010, T-110]
|
2026-08-04 16:25:34 +08:00
|
|
|
|
status: DONE
|
2026-08-04 15:53:16 +08:00
|
|
|
|
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
|
2026-08-04 16:25:34 +08:00
|
|
|
|
- docs/README.md
|
2026-08-04 15:53:16 +08:00
|
|
|
|
- docs/routes.md
|
2026-08-04 16:25:34 +08:00
|
|
|
|
- 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
|
2026-08-04 15:53:16 +08:00
|
|
|
|
- docs/tasks/T-103.md
|
|
|
|
|
|
- docs/tasks/T-111.md
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-08-04 16:25:34 +08:00
|
|
|
|
<!-- BEGIN VIKUNJA EXPORT id=28 synced=2026-08-04T08:24:54Z sha256=46931a0016ef5adcd69e2115e5706465078dea91506cbe5a0055c287eb6a52d7 -->
|
2026-08-04 15:53:16 +08:00
|
|
|
|
## 问题 / 背景
|
|
|
|
|
|
|
|
|
|
|
|
项目原设计为两趟:先试选并等待管理员确认,再重新进入商品创建待付款订单。项目所有者为加快内部采购,决定取消试选后的人工确认;管理员在任务列表勾选并点击“开始采购”即明确授权采购工具创建一笔待付款订单。系统仍绝不自动付款。
|
|
|
|
|
|
|
|
|
|
|
|
## 关联需求与交互
|
|
|
|
|
|
|
|
|
|
|
|
- 重写 MVP 主流程、状态机、价格闸门、授权与提交围栏。
|
2026-08-04 16:25:34 +08:00
|
|
|
|
- 同步需求、用户故事、交互、路由、API、任务路线图、原型与当前状态。
|
|
|
|
|
|
- T-103 改为单趟流程的规格选择/读价前置;T-202 只建 DRAFT,不受影响;新增 T-209 先迁移旧 schema/状态机,T-203 起按新流程实现。
|
2026-08-04 15:53:16 +08:00
|
|
|
|
|
|
|
|
|
|
## 方案
|
|
|
|
|
|
|
|
|
|
|
|
1. DRAFT 任务只有管理员勾选并点击“开始采购(只创建待付款订单)”后才能进入设备队列;该动作在服务端事务中创建一次性授权,锁定任务版本、goods_id、颜色、尺码、数量和最高总价。
|
2026-08-04 16:25:34 +08:00
|
|
|
|
2. 采购工具领取后同一趟完成:打开商品、受控打开规格面板、精确选规格、闸门一读价并校验上限、设置及复核数量、闸门二重读同价与选中态、进入确认页、闸门三核对应付总额、服务端原子提交围栏、只点击一次“提交订单”。
|
2026-08-04 15:53:16 +08:00
|
|
|
|
3. 删除 WAITING_CONFIRMATION、人工“机器选对了吗”、授权锁定试选价和第二次重新打开商品;截图改为内部审计证据,不作为下单前人工审批。
|
|
|
|
|
|
4. 授权在围栏前失败/过期可回到 DRAFT 等管理员重新开始;围栏建立后只能调和同一提交,禁止重试、释放或签发第二笔。
|
|
|
|
|
|
5. 不付款、提交四条件、精确规格、数量复核、价格只读规格面板/订单确认页、外部支付/安全校验停止等红线不放宽。
|
|
|
|
|
|
6. 先提交文档契约,再恢复客户端或新增生产代码。
|
|
|
|
|
|
|
|
|
|
|
|
## 验收要点
|
|
|
|
|
|
|
|
|
|
|
|
- 所有活跃文档只描述单趟采购,不再把两趟或 WAITING_CONFIRMATION 当作 MVP 现实。
|
|
|
|
|
|
- “开始采购”与一次性授权、批量原子性、价格闸门、提交围栏和一次点击的关系明确。
|
2026-08-04 16:25:34 +08:00
|
|
|
|
- API/状态机/目标数据模型/任务路线图一致;当前旧 schema 的迁移由 T-209 显式前置。
|
|
|
|
|
|
- 截图为内部证据而非审批前置;T-103 新边界继续禁止数量、确认页和提交。
|
|
|
|
|
|
- Vikunja 导出、agent-context、HTML/JS 静态检查、diff-check 与完整双端门禁通过。
|
2026-08-04 15:53:16 +08:00
|
|
|
|
|
|
|
|
|
|
## 执行记录
|
|
|
|
|
|
|
2026-08-04 16:25:34 +08:00
|
|
|
|
### 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。
|
2026-08-04 15:53:16 +08:00
|
|
|
|
<!-- END VIKUNJA EXPORT -->
|
|
|
|
|
|
|
|
|
|
|
|
## 边界
|
|
|
|
|
|
|
|
|
|
|
|
- 管理员点击“开始采购(只创建待付款订单)”是进入设备队列前唯一的人类授权动作;创建 `DRAFT`
|
|
|
|
|
|
本身不得触发设备领取、创建授权、提交订单或付款。
|
|
|
|
|
|
- 单趟流程仍必须保留规格精确匹配、数量读回复核、规格面板两次同价校验、订单确认页金额上限、
|
|
|
|
|
|
服务端提交围栏、提交控件唯一和点击一次;不得以“提速”为由删除或弱化任一项。
|
|
|
|
|
|
- 系统只创建待付款订单,任何路径都不自动付款,不点击支付、免密支付、先用后付或扣款控件。
|
|
|
|
|
|
- 围栏前失败或授权过期可以回到 `DRAFT` 等管理员重新授权;围栏建立后只能调和同一提交记录,
|
|
|
|
|
|
不得释放、重领、重试点击或签发第二笔。
|
|
|
|
|
|
- 本任务只修改文档契约和任务依赖,不修改 `admin/`、`client/`、数据库 migration 或生产代码。
|