Files
cmautobuy/docs/task/112-采购任务固定真实下单.md
T

3.6 KiB

112 Admin:采购任务固定真实下单并简化创建弹窗

  • 类型:需求变更
  • 父级大工单:#96
  • 所属 MVP / 版本:#97
  • 状态:已完成,用户验收通过
  • 日期:2026-08-10
  • Gitea 工单:#112

背景与目标

Admin 新建采购任务已经固定为真实下单,但首次实现仍重复要求风险复选框和确认短语,并只显示在线 live Client,导致操作过重且离线 Client 无法提前接收任务。复验后确认:Admin 提交创建表单即表示创建真实采购任务;Client 一次性 live 授权和设备、价格、不可逆安全门禁继续保留。

最终方案

  • 根规则和 Admin 基线改为:Admin 不再额外要求风险复选框、确认短语或浏览器二次确认,Web 创建入口仍固定 execution_mode=live。
  • 删除弹窗安全确认区和相应 JavaScript;保留明确的“创建真实采购任务”按钮以及提交禁用、“创建中…”反馈。
  • 弹窗展示当前用户可见的全部 Client:live Client 可选,暂时离线也可提前指派;非 live Client 显示“未启用真实采购”并禁用;只有一个 live Client 时自动选中。
  • 服务端不再按瞬时在线状态拒绝指派,也不再读取 Admin 确认字段;事务仍复核用户可见范围和 Client live 能力。
  • 数据库历史字段名保持兼容;live 任务继续记录创建操作用户和时间。
  • Client 本地 live 授权、设备绑定、最终规格/数量/价格复核、不可逆标记、单次提交和禁止付款均未改变。

改了哪些

  • AGENTS.md:同步 Admin 创建真实采购任务的最新红线。
  • admin/templates/syb/list.html、admin/static/js/app.js:删除重复安全确认,完善候选禁用原因、唯一候选默认选择和提交反馈。
  • admin/handler/web/others.go:固定 live,不再读取确认字段或在线截止时间。
  • admin/service/service.go:返回全部可见候选和 live 可选数量。
  • admin/service/purchase_workflow.go、admin/repository/client.go:移除 Admin 确认及在线门禁,保留 Client live 能力复核和审计。
  • Admin 测试:覆盖表单篡改、候选状态、离线 live 指派、非 live 拒绝及模板文案。
  • docs/admin/:同步需求、数据字段语义和界面规范。

验收结果

验收标准 结果
弹窗没有模式选择、风险复选框、确认短语和重复浏览器确认 通过
Web 服务端固定创建 live,篡改模式不能创建 dry_run 通过
当前用户可见的 live Client 在线或离线均可指派 通过
非 live Client 显示禁用原因,唯一 live 候选自动选中 通过
创建事务仍复核可见范围和 Client live 能力 通过
创建用户、时间、Client 和模式审计完整 通过
Client 设备、价格、不可逆、单次提交和禁止付款门禁未改变 通过
Go 1.23.0 全量验证 通过

测试

  • 执行的命令:
    • GOTOOLCHAIN=go1.23.0 go test ./service ./handler/web ./repository -count=1
    • GOTOOLCHAIN=go1.23.0 go test . -count=1
    • GOTOOLCHAIN=go1.23.0 go vet ./...
    • GOTOOLCHAIN=go1.23.0 go build ./...
    • GOTOOLCHAIN=go1.23.0 go test ./... -count=1
    • git diff --check
  • 结果:Admin 全部包测试、构建、vet 和格式检查通过。
  • 没验证到的部分:未在浏览器人工点击客户端下拉和提交;未连接 Android 真机,未创建真实未付款订单。模板候选、禁用和默认选择由 Go 路由测试覆盖。

相关提交

  • a262190 fix: 简化真实采购创建并恢复客户端选择 (#112)