2.2 KiB
2.2 KiB
05 — 完成附件上传与企微异步提交闭环
What to build: 审批提交 Worker 可以从公共 Outbox 可靠领取审批实例,使用冻结的模板、业务快照和企微发起身份上传附件副本并调用企微发起审批;成功后绑定唯一 sp_no,明确失败可安全重试,已发送但响应未知时停止自动重发并等待人工恢复。
Blocked by:
- 04 — 提供审批创建前置检查与事务接入契约
.scratch/tech-public-foundation/issues/03-outbox-at-least-once-delivery.md— 03 — 完成 Outbox 到 Asynq 的至少一次投递闭环.scratch/tech-global-audit/issues/02-integration-log-attempt-loop.md— 02 — 交付可恢复的 Integration Log 尝试闭环
Status: ready-for-agent
架构通道: 复杂写 Application + Domain,外部调用位于 Infrastructure WeCom Adapter。
完整业务边界: 本票收口技术提交尝试、提交租约、附件副本上传、企微表单构造和提交结果分类。明确不处理企微审批终态,不执行退款或充值资金动作,不把临时企微资料变成永久业务事实。
- Worker 通过审批状态和
submit_lease_until条件领取、续租并在所有退出路径释放租约;并发 Worker 同一时刻只有租约所有者可以提交。 - 本地私有对象 Key 是申请附件权威引用;Worker 使用受控临时文件上传企微,临时
media_id、预签名 URL 和文件内容不进入永久业务快照、普通日志或响应。 - 企微表单严格使用实例冻结的模板映射、真实业务提交人和实际企微发起身份,审批人配置完全使用企微模板,不由系统计算或提交。
- 成功响应原子绑定唯一
sp_no并进入审批中;企微明确未创建时进入提交失败,可在同一实例上技术重试且保留尝试历史。 - 可证明未发送的建连失败允许自动重试;请求已发送后超时或连接中断进入提交结果未知,持久化未知事实后禁止自动再次调用
applyevent。 - 测试覆盖 Outbox 重投、并发领取、租约过期恢复、部分附件失败、明确失败、未发送失败、响应未知、成功绑定和结构化 Asynq 载荷,且不依赖真实企微网络。