Files
junhong_cmp_fiber/.scratch/tech-inapp-notifications/issues/03-personal-customer-notification-loop.md
2026-07-22 16:14:59 +09:00

1.9 KiB
Raw Blame History

03 — 向个人客户投递并提供简化通知中心

What to build: 业务事件携带稳定个人客户 ID 后,可以为该客户幂等生成与其订单、套餐或资产有关的站内通知;当前登录个人客户可以查询自己的未读数和分页列表,并执行单条或全部已读。个人客户永远看不到同步、系统等平台运维消息,也不能通过请求参数读取或修改其他客户通知。

Blocked by: 01 — 向明确后台账号可靠投递首条站内通知

Status: ready-for-agent

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

完整业务边界: 本票收口个人客户通知的投递、读取和已读闭环,复用既有通知表、注册表和 Worker。明确不实现 C 端分类汇总、后台动态接收人、平台运维消息展示、C 端受控目标接口或前端组件。

  • Worker 能以 personal_customer 接收人类型和稳定客户 ID 幂等生成通知,同一事件的后台账号与个人客户通知相互独立。
  • 个人客户通知类型注册明确允许的业务类别和资源引用;syncsystem 及未对 C 端开放的类型不会出现在个人客户查询中。
  • C 端未读数遵循 0、199、100 以上的显示规则,列表固定倒序、默认每页 20、最大 50并排除过期通知。
  • 单条已读、全部已读只作用于当前认证客户;不存在、已删除、属于别人或已读的通知使用相同幂等安全语义。
  • 请求 DTO 不接受接收人 ID额外或恶意接收人参数不能改变查询与更新范围。
  • 真实个人客户认证、Handler、Query、GORM 集成测试覆盖重复投递、运维类别隔离、跨客户越权、分页、过期排除、重复已读和批量已读。
  • 新增 C 端 Handler 后同步个人客户路由、RouteSpec 与两个 OpenAPI 文档生成器,接口统一挂载在约定认证上下文中。