Files
junhong_cmp_fiber/openspec/specs/notification-delivery/spec.md
break f15a64395f
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m30s
修复反馈
2026-08-10 16:30:38 +08:00

2.8 KiB
Raw Blame History

站内通知当前行为

Purpose

描述管理端与个人客户站内通知的当前可观察行为。

Requirements

Requirement: 通知接收人隔离

系统 SHALL 只向当前后台账号或个人客户返回其自身且未过期的通知、未读数量和受控目标;其他接收人的通知按不可见处理。

Scenario: 读取其他接收人的通知

  • GIVEN 通知属于另一后台账号或个人客户
  • WHEN 当前接收人查询通知、目标或请求标记已读
  • THEN 系统不返回通知内容且不改变其已读状态

Requirement: 通知已读幂等

系统 SHALL 仅首次把当前接收人的未过期未读通知标记为已读并记录读取时间;重复单条或批量已读不重复改变事实。

Scenario: 重复标记已读

  • GIVEN 当前接收人的通知已经标记为已读
  • WHEN 再次执行单条或批量已读
  • THEN 通知保持原读取事实且不影响其他接收人的通知

Requirement: 主钱包低余额跨阈值提醒

系统 SHALL 在店铺主钱包余额由不低于 100 元变为低于 100 元时,与扣款事实在同一事务创建面向当时有效业务员的低余额通知事件;余额持续低于 100 元时不得重复创建,余额恢复至不低于 100 元后再次跌破时 MUST 再次创建。

Scenario: 首次跌破阈值

  • WHEN 店铺主钱包扣款后余额从不低于 100 元变为低于 100 元,且存在有效业务员
  • THEN 系统在提交扣款事实时创建一条低余额通知事件,并由通知投递流程生成站内通知

Scenario: 持续低余额

  • WHEN 店铺主钱包余额已经低于 100 元且再次发生扣款
  • THEN 系统不创建新的低余额通知事件

Scenario: 回升后再次跌破

  • WHEN 店铺主钱包余额已恢复至不低于 100 元,随后扣款使其低于 100 元
  • THEN 系统创建新的低余额通知事件

可达操作索引

本节只用于入口导航,不是行为 Requirement业务义务以上述 Requirements 为准。

站内通知

GET /api/admin/notifications(查询通知列表);PUT /api/admin/notifications/{id}/read(标记单条通知已读);GET /api/admin/notifications/{id}/target(解析通知受控目标);PUT /api/admin/notifications/read-all(批量标记通知已读);GET /api/admin/notifications/unread-count(查询通知未读数);GET /api/admin/notifications/unread-summary(查询通知未读分类汇总)。

个人客户 - 站内通知

GET /api/c/v1/notifications(查询个人客户通知列表);PUT /api/c/v1/notifications/{id}/read(标记个人客户单条通知已读);PUT /api/c/v1/notifications/read-all(全部标记个人客户通知已读);GET /api/c/v1/notifications/unread-count(查询个人客户通知未读数)。