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

56 lines
2.8 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.
# 站内通知当前行为
## 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`(查询个人客户通知未读数)。