40 lines
2.4 KiB
Markdown
40 lines
2.4 KiB
Markdown
## 1. Contract And Types
|
||
|
||
- [x] 1.1 按产品文档落地通知项、未读统计、未读摘要、分页列表和受控目标响应字段。
|
||
- [x] 1.2 按产品文档落地分类、通知类型、严重级别、已读状态和 `ref_type` 兼容类型。
|
||
- [x] 1.3 新增通知中心菜单权限 `notifications:view`、单条已读权限 `notifications:read`、全部已读权限 `notifications:read_all`。
|
||
- [x] 1.4 新增 `notification.ts` API service,覆盖未读数、摘要、列表、单条已读、全部已读和目标接口。
|
||
- [x] 1.5 新增通知实体、筛选参数、分页响应和目标响应类型。
|
||
|
||
## 2. Global Header And Drawer
|
||
|
||
- [x] 2.1 在顶部设置按钮与用户头像入口区域增加通知铃铛。
|
||
- [x] 2.2 实现未读数量格式化为 `0`、`1`~`99` 或 `99+`。
|
||
- [x] 2.3 顶部抽屉加载最近 10 条通知,并按全部、审批、临期、同步/系统分类展示。
|
||
- [x] 2.4 替换 `ArtNotification` 静态 mock 数据,接入真实摘要接口。
|
||
- [x] 2.5 提供进入 `/notifications` 通知中心的入口,并保证桌面端和移动端布局可用。
|
||
|
||
## 3. Notification Center
|
||
|
||
- [x] 3.1 新增 `/notifications` 路由和通知中心页面。
|
||
- [x] 3.2 支持分类、通知类型、严重级别和已读状态筛选。
|
||
- [x] 3.3 展示通知标题、正文、严重级别、分类、时间和已读状态。
|
||
- [x] 3.4 实现全部已读,并在成功后同步未读数和列表状态。
|
||
- [x] 3.5 处理空列表、加载失败、权限失败和未知枚举值的稳定展示。
|
||
|
||
## 4. Read And Controlled Navigation
|
||
|
||
- [x] 4.1 点击通知时先调用 `PUT /api/admin/notifications/{id}/read`。
|
||
- [x] 4.2 已读成功后调用 `GET /api/admin/notifications/{id}/target` 获取受控目标。
|
||
- [x] 4.3 仅允许跳转到后端返回且前端路由表认可的内部目标。
|
||
- [x] 4.4 未知 `ref_type`、目标不存在或无权限时只展示正文,不执行任意 URL 跳转。
|
||
- [x] 4.5 抽屉和通知中心的已读操作后刷新共享未读数。
|
||
|
||
## 5. Verification
|
||
|
||
- [x] 5.1 验证余额、临期、审批和系统通知在抽屉及通知中心展示一致。
|
||
- [x] 5.2 验证未读数在单条已读、全部已读、抽屉关闭和页面刷新后与接口结果一致。
|
||
- [x] 5.3 验证通知点击不会跳转到任意外部或未注册 URL。
|
||
- [x] 5.4 验证未知目标通知仍可查看正文且不会阻塞其他通知操作。
|
||
- [x] 5.5 运行类型检查、lint、相关测试和构建。
|