Files
junhong_cmp_fiber/.scratch/ur40-off-shelf-package-renewal/issues/07-renew-only-audit-events.md
2026-07-22 17:49:25 +09:00

23 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 07 — 接入下架续费成功与拒绝审计
**What to build:** 下架续费订单成功创建后,审计人员可以通过统一 Audit Event 追踪购买模式、资产、世代、套餐、渠道和历史资格摘要;构造请求因资格、归属或渠道事实被拒绝时,也能看到稳定失败原因,且审计中不包含客户敏感明细。
**Blocked by:**
- 05 — C 端创建订单按写时事实完成下架续费
- 06 — 封堵后台代购与自动购包的下架绕过
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
**Status:** ready-for-agent
**架构通道:** Application + Audit Port/Adapter。
**完整业务边界:** 本票只把 UR#40 的成功 `renew_only` 决策和被拒绝的构造购买请求接入公共 Audit Event不创建独立续费日志表不迁移套餐上下架、普通订单或其他旧审计日志不用审计替代订单和套餐使用业务事实。
- [ ] 成功创建下架续费订单时写统一成功事件,至少记录 `purchase_mode=renew_only`、资产类型与 ID、当前 generation、套餐 ID、平台或代理销售渠道、订单引用及命中历史资格的脱敏摘要。
- [ ] 成功事件与订单事实遵循公共 Audit Writer 的事务契约;审计失败时不得留下缺失必需审计的错误成功事实。
- [ ] 归属伪造、跨资产/跨世代历史、下架非个人购买、套餐禁用、渠道未授权、退款失效及价格异常等拒绝结果,按公共失败审计规则使用独立短事务保存稳定动作、结果和业务失败分类。
- [ ] 审计资源能够串联客户购买动作、资产、套餐、订单及销售渠道但不记录手机号、OpenID、完整请求体、历史订单金额、底层错误或其他客户敏感明细。
- [ ] 普通 `normal` 购买沿用现有审计语义,不因本票被重复记录为下架续费;后台与自动购包拒绝事件能够明确表明其 operation context 不具备历史续费例外。
- [ ] PostgreSQL 集成测试覆盖成功事务一致性、业务回滚、拒绝事件独立落库、重复请求、脱敏与资源关联,并验证审计失败策略符合公共契约。