Files
junhong_cmp_fiber/.scratch/ur37-wecom-approval-foundation/issues/04-approval-creation-prerequisite-and-transaction-port.md
2026-07-22 16:58:26 +09:00

2.2 KiB
Raw Blame History

04 — 提供审批创建前置检查与事务接入契约

What to build: 退款和线下充值创建用例可以通过稳定公共接缝确认场景、当前模板和实际企微发起身份可用,并在自己的业务事务中原子创建唯一审批实例及提交 Outbox任一前置失败时不会留下业务单、审批实例或待补提事件。

Blocked by:

  • 02 — 完成平台账号本人扫码绑定闭环
  • 03 — 发布审批场景与首个模板版本
  • .scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md — 02 — 在业务事务中可靠写入公共 Outbox

Status: ready-for-agent

架构通道: 主通道为复杂写 Application + Domain辅助通道为 Application Port/Adapter。

完整业务边界: 本票收口审批创建前置判定、真实业务提交人和企微发起身份快照、唯一审批实例以及事务内提交事件。明确不创建退款单或充值单,不定义其金额和活跃业务规则,不调用远程企微。

  • 前置检查按稳定场景读取当前启用模板,并拒绝暂停中、已暂停、模板缺失或模板失效;失败发生在调用方写入任何业务事实前。
  • 平台和超级管理员使用本人启用且成员可用的绑定;代理仅可在允许代理发起的退款场景使用部署配置固定成员,线下充值不允许代理发起。
  • 审批实例冻结业务类型、业务 ID/编号、场景、模板版本与映射、业务快照、真实提交人账号/名称/角色/店铺快照、企微发起身份及 self_binding/agent_proxy 来源。
  • (biz_type,biz_id) 唯一,非空 sp_no 全局唯一;状态初始为 0=提交中,不使用审批轮次,不建立数据库外键或 GORM 关联标签。
  • 调用方可使用同一 GORM 事务创建业务事实、审批实例和结构化 WeComApprovalSubmissionRequested Outbox任一步失败整体回滚事务中不调用 Redis、Asynq、对象存储或企微。
  • 公共状态常量、中文状态名及公开 DTO 描述保持唯一来源;集成测试以代表性测试业务事实验证前置失败零落库、事务回滚、并发唯一性和成功只产生一组审批事实。