2.8 KiB
2.8 KiB
06 — 幂等创建批量订购任务
What to build: 通过现有后台认证的操作员可以提交唯一 request_id、单个套餐、统一支付方式、CSV Key 和凭证 Key 创建批量订购任务。接口在返回已接收任务前验证对象归属和真实元数据,并在同一事务保存套餐与操作者快照、上传绑定、请求指纹、任务事实、创建审计和可靠投递事件。
Blocked by:
.scratch/ur36-bulk-package-purchase/issues/02-controlled-upload-object-ownership.md— 02 — 交付受控直传与对象归属证明.scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md— 02 — 在业务事务中可靠写入公共 Outbox.scratch/tech-public-foundation/issues/03-outbox-at-least-once-delivery.md— 03 — 完成 Outbox 到 Asynq 的至少一次投递闭环.scratch/tech-public-foundation/issues/05-command-idempotency-contract.md— 05 — 提供创建命令幂等与并发职责契约.scratch/tech-public-foundation/issues/06-unified-async-task-contract.md— 06 — 冻结统一异步任务五态和查询契约.scratch/tech-global-audit/issues/01-audit-event-write-loop.md— 01 — 交付不可变 Audit Event 写入闭环
Status: ready-for-agent
架构通道: 复杂写 Application + Port/Adapter。
完整业务边界: 本票收口批量订购任务的可靠接收、幂等、上传绑定和投递事实。明确不下载或解析 CSV、不创建逐行明细、不执行订单、不增加批量权限码或任务创建人隔离。
- 请求只接受
request_id、package_id、payment_method、file_key和voucher_keys;显式提交shop_id返回统一参数错误,其他未知字段不参与业务决策。 wallet要求凭证为空;offline要求 1 至 5 个有效附件;套餐存在性和 ID、编码、名称快照在创建时确定。- CSV 与凭证必须由当前账号按正确用途申请、真实存在且元数据合法;CSV 实际大小不超过 10MB,所有 Key 在任务事务内完成绑定。
- 相同
request_id、操作者和规范化请求指纹返回原任务;改变套餐、支付方式、文件、凭证或操作者时返回冲突。 - 并发首写最终只产生一个任务、一次上传绑定和一个可靠事件;Asynq 暂不可用不丢失已提交任务。
- 任务使用全局五态并返回中文状态名;队列载荷只包含结构化
task_id,不传[]byte、文件内容、临时路径或认证上下文。 - 创建成功写公共审计,记录任务号、支付方式、文件安全摘要和凭证数量,不记录预签名 URL、Token 或环境密钥。
- 新 Handler 同步注册后台路由并更新两个 OpenAPI 文档生成入口,所有响应使用统一包装和中文错误码语义。