2.2 KiB
2.2 KiB
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 事务创建业务事实、审批实例和结构化
WeComApprovalSubmissionRequestedOutbox;任一步失败整体回滚,事务中不调用 Redis、Asynq、对象存储或企微。 - 公共状态常量、中文状态名及公开 DTO 描述保持唯一来源;集成测试以代表性测试业务事实验证前置失败零落库、事务回滚、并发唯一性和成功只产生一组审批事实。