3.6 KiB
3.6 KiB
ADDED Requirements
Requirement: Global Notification Bell
The admin frontend SHALL provide a global notification bell in the top navigation near the settings and user avatar entries.
Scenario: Display unread count
- GIVEN 用户已登录后台
- WHEN 顶部导航加载未读通知数量
- THEN 铃铛 MUST call
GET /api/admin/notifications/unread-count - AND 数量 MUST display as
0,1through99, or99+
Scenario: Open recent notification drawer
- WHEN 用户点击顶部通知铃铛
- THEN 页面 MUST display the latest 10 notifications from the unread summary contract
- AND 抽屉 MUST provide 全部、审批、临期、同步/系统分类
- AND 抽屉 MUST provide an entry to
/notifications
Requirement: Notification Center Filtering
The admin frontend SHALL provide a /notifications notification center with server-backed filtering.
Scenario: Filter notifications
- WHEN 用户打开通知中心或调整筛选条件
- THEN 页面 MUST support category, notification type, severity and read-state filters
- AND 页面 MUST load results from
GET /api/admin/notifications - AND 页面 MUST display notification title, content, category, severity, read state and created time
Scenario: Mark all notifications read
- WHEN 用户点击全部已读
- THEN 页面 MUST call
PUT /api/admin/notifications/read-all - AND 页面 MUST refresh the unread count and visible notification read states after success
Requirement: Notification Read State Synchronization
The notification drawer and notification center SHALL keep read state and unread count synchronized with the backend.
Scenario: Mark a notification read
- WHEN 用户点击一条未读通知
- THEN 页面 MUST call
PUT /api/admin/notifications/{id}/readbefore navigation - AND 页面 MUST refresh or update the shared unread count after the read request succeeds
Scenario: Preserve read state after refresh
- GIVEN 用户已完成单条已读或全部已读操作
- WHEN 用户关闭抽屉、切换页面或刷新通知中心
- THEN 页面 MUST use the latest backend response rather than restoring stale local unread state
Requirement: Controlled Notification Navigation
The admin frontend SHALL navigate from notifications only through controlled internal targets.
Scenario: Navigate to a valid notification target
- GIVEN 通知包含受支持的
ref_type或业务引用 - WHEN 单条已读成功后页面请求
GET /api/admin/notifications/{id}/target - THEN 页面 MUST navigate only to a target recognized by the frontend route table
- AND 页面 MUST preserve the target route parameters returned by the backend
Scenario: Handle an unknown target safely
- GIVEN 通知的
ref_type未知、目标已删除或目标无权限 - WHEN 页面处理通知点击
- THEN 页面 MUST not navigate to an arbitrary URL
- AND 页面 MUST still display the notification content and a stable unavailable-target state
Requirement: Consistent Notification Categories
The notification drawer and notification center SHALL present balance warnings, expiry reminders, approval results and system alerts through the same notification data contract.
Scenario: Display supported notification types
- GIVEN 后端返回余额预警、临期提醒、审批结果或系统告警
- WHEN 用户查看抽屉或通知中心
- THEN 页面 MUST display each item using its backend category, type and severity
- AND 页面 MUST not replace the item with hardcoded mock notification content