All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m52s
24 lines
2.5 KiB
Markdown
24 lines
2.5 KiB
Markdown
# 02 — 交付实名观测的公共写入闭环
|
||
|
||
**What to build:** 轮询、手动同步和运营商回调可以提交类型明确的实名观测,由唯一公共用例锁定卡、应用首次实名与周期逆转规则,并在同一事务中保存卡状态、Audit Event 和 Outbox。有效但无变化的观测仍更新时间和 Integration Log,重复观测不会重复激活套餐或执行业务副作用。
|
||
|
||
**Blocked by:**
|
||
|
||
- `.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-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
|
||
- `.scratch/tech-global-audit/issues/02-integration-log-attempt-loop.md` — 02 — 交付可恢复的 Integration Log 尝试闭环
|
||
|
||
**Status:** ready-for-agent
|
||
|
||
**架构通道:** 复杂写;主链路为 Handler/Worker → Application → Domain → Repository/Infrastructure。
|
||
|
||
**完整业务边界:** 本票建立公共卡观测契约及实名观测的完整业务边界,包括首次实名、周期逆转确认、可靠事件和提交后缓存处理。明确不迁移流量、网络、套餐轮询、保护期轮询或未触碰的旧实名查询;运营商解除实名回调不进入逆转计数。
|
||
|
||
- [ ] 公共观测元数据和实名观测均使用类型明确的领域输入,包含来源、场景、观测时间、请求/关联标识及脱敏上游摘要,领域层不依赖 Gateway、Fiber、GORM、Redis 或 Asynq 类型。
|
||
- [ ] 应用用例在事务中锁定卡,首次从未实名变为已实名时只写一次首次实名时间,并可靠发布卡/设备套餐首次激活、设备实名投影和停复机评估所需事件。
|
||
- [ ] 周期查询的未实名观测保留连续三次确认和 10 分钟窗口,未达阈值不把已实名卡改为未实名;回调来源的解除实名观测不能增加该计数。
|
||
- [ ] 有效无变化观测更新时间并写 Integration Log,但不重复发布首次实名或状态变化事件;缺少关键字段的观测不以零值覆盖本地状态。
|
||
- [ ] 卡状态、Audit Event 和 Outbox 任一步失败均整体回滚;缓存失效或回填只在提交后执行,失败可观察且不伪造事务成功。
|
||
- [ ] 单元及 PostgreSQL 并发测试覆盖首次成功、重复成功、逆转阈值、窗口过期、无变化、无效载荷、同一卡串行、事务回滚和事件幂等。
|