Files
junhong_cmp_fiber/.scratch/tech-inapp-notifications/issues/06-notification-retention-observability.md
2026-07-22 16:14:59 +09:00

2.4 KiB
Raw Blame History

06 — 交付通知保留清理与失败可观测闭环

What to build: 系统可以按通知场景计算展示期限和数据保留期限,并在低峰按稳定主键和时间分批删除已超过保留期的通知。无接收人、模板错误、系统告警生成和投递失败具有可追踪、有限重试和安全摘要,既不会无限重试,也不会影响已经提交的资金、审批、套餐或其他业务事实。

Blocked by:

  • 01 — 向明确后台账号可靠投递首条站内通知
  • .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

架构通道: 主通道为 Infrastructure辅助通道为简单写 Application。

完整业务边界: 本票收口通知展示期限、数据保留、分批清理、失败分类和统一审计/外部集成可观测接缝。明确不删除 Audit Event、Integration Log、领域流水或 Outbox不提供用户删除接口不建设管理员查看他人消息入口也不改变公共 Relay 的租约算法。

  • 套餐临期、审批结果、同步异常和系统告警按约定计算展示与保留期限,审批结果不自动过期,系统告警展示期限不超过允许上限。
  • 清理任务按时间和稳定主键小批量删除超过数据保留期限的通知,可中断重跑且只清理通知事实,不级联业务资源或审计记录。
  • 暂无接收人记录 no_recipient 后成功结束;数据库、队列等瞬时错误按有限策略重试;模板永久缺失达到最大重试后进入失败监控且不写残缺正文。
  • 系统告警直接入队时必须携带预先生成的稳定事件 ID重复执行仍由通知唯一键防重。
  • 模板或接收人解析失败、系统告警生成和管理性排查写入统一 Audit/Integration 接缝;普通通知读取和已读只进入 Access Log。
  • 日志、监控和审计只记录事件 ID、通知类型、失败类别、计数及安全资源标识不记录敏感模板数据、完整回调、Token、Secret 或任意长期 URL。
  • 测试覆盖各类期限边界、分批清理可重入、无接收人、瞬时失败、永久模板失败、最大重试、系统告警重复入队和业务事实不回滚。