Add audit log UI and backend API seeded E2E

- Add Auth Context route role guards so doctors cannot directly enter template management, user management, or audit logs.

- Add Audit Logs page, sidebar entry, frontend audit API client, and API client test.

- Add backend audit log query endpoint with super/admin visibility rules and query filtering.

- Extend PostgreSQL integration tests to cover audit log query permissions.

- Move Playwright E2E away from localStorage seed data to real backend API login and seed helpers.

- Add E2E coverage for route guards and audit log visibility.

- Run Playwright backend on port 3100 and proxy Vite API requests there to avoid local port conflicts.

- Make server:dev use the compiled NestJS server path, avoiding tsx parameter-property injection issues.

- Update README, AGENTS, feature, testing, security, deployment, progress, API, backendization, and auth/user module docs.
This commit is contained in:
2026-05-02 02:04:56 +08:00
parent a16f522a4b
commit 750cf4129d
31 changed files with 719 additions and 261 deletions

View File

@@ -23,15 +23,17 @@
- 报告已增加修订版本号,已完成报告再次保存会递增版本。
- 报告编辑器已支持医生保存“我的个人模板”。
- 讯飞语音配置初始化字段已统一为 `xfSpeechConfig`
- 已新增 Playwright E2E,用 localStorage 种子锁定登录、报告权限、报告修订版本医生个人模板流程。
- Playwright E2E 已改为启动真实后端 API并通过 API seed 锁定登录、报告权限、报告修订版本医生个人模板、路由守卫和审计日志流程。
- 已新增审计日志查询 API 和审计日志页面;超级管理员可看全部,管理员可看本部门或自己相关日志。
- 页面级权限已收敛到 Auth Context 路由守卫,医生不能直进模板管理、用户管理和审计日志页面。
- 已新增 API 契约草案,为后端化接口、权限过滤和响应格式提供基线。
- 已启动后端化第一阶段:新增 NestJS API 骨架、Prisma/PostgreSQL 数据模型、默认 seed、健康检查、认证接口和后端权限策略测试。
- 已完成前端认证闭环第一步:新增 API client、Auth Context、后端用户兼容映射`Login`/`Sidebar` 已接入后端认证并同步 `currentUser`
## 已知风险
- 前端仍有部分体验控制和兼容缓存依赖浏览器本地数据;后端已经承载主业务数据和第一版审计。
- 后端认证、Dashboard API、报告 API、报告媒体关系、模板 API、字段库 API、用户/部门 API、设置 API、通用文件/签名文件 API、AI 代理语音代理已可用;审计和 HTML 清洗已有第一版,导出/查看审计仍待加强。
- 前端仍有部分体验控制和兼容缓存依赖浏览器本地数据;后端已经承载主业务数据和第一版审计查询
- 后端认证、Dashboard API、报告 API、报告媒体关系、模板 API、字段库 API、用户/部门 API、设置 API、通用文件/签名文件 API、AI 代理语音代理和审计日志 API 已可用;第三方调用摘要、限流和后端导出仍待加强。
- 本地存储仍可能包含病历兼容缓存、旧演示密码字段、模板图片和关键帧,不适合生产;历史浏览器数据中也可能残留旧版语音服务密钥。
- `systemSettings` 的混淆存储不是加密。
- 旧版本曾在前端默认配置中包含服务密钥痕迹;当前源码默认值已清空,但生产化前仍应轮换曾经暴露过的第三方密钥。
@@ -42,11 +44,10 @@
## 建议下一步
1. 把 E2E 数据准备从 `localStorage` seed 迁移到 API seed 或测试数据库 seed
2. 逐步替换前端数据流:继续减少字段库、模板图片和报告编辑器草稿之外的本地回退依赖
3. 补查看日志、第三方代理调用摘要、后端导出 API 和限流;报告导出不要求专门导出审计
4. 增加数据迁移:为 `localStorage` 或后端数据增加版本号和迁移脚本
5. 增加生产运维能力:备份恢复、对象存储、监控告警和密钥轮换流程。
1. 逐步替换前端数据流:继续减少字段库、模板图片和报告编辑器草稿之外的本地回退依赖
2. 补第三方代理调用摘要、后端导出 API 和限流;报告导出不要求专门导出审计
3. 增加数据迁移:为 `localStorage` 或后端数据增加版本号和迁移脚本
4. 增加生产运维能力:备份恢复、对象存储、监控告警和密钥轮换流程
## 维护记录
@@ -69,3 +70,4 @@
| 2026-05-02 | 报告编辑器视频和关键帧优先上传 Files API新增真实 PostgreSQL 服务集成测试。 |
| 2026-05-02 | 新增 `ReportMedia` 表和迁移,报告视频/关键帧引用从 `Report.metadata` 拆出。 |
| 2026-05-02 | 新增 Dashboard API、数据库 Session Store、审计服务、HTML 白名单清洗、本地回退开关和 Docker 上传目录 volume清理 Gemini 旧依赖。 |
| 2026-05-02 | 新增审计日志查询 API/页面、Auth Context 路由角色守卫,并把 Playwright E2E 改为真实后端 API seed。 |