23 lines
2.2 KiB
Markdown
23 lines
2.2 KiB
Markdown
# 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 描述保持唯一来源;集成测试以代表性测试业务事实验证前置失败零落库、事务回滚、并发唯一性和成功只产生一组审批事实。
|