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:
21
AGENTS.md
21
AGENTS.md
@@ -24,7 +24,7 @@
|
||||
```bash
|
||||
npm install
|
||||
npm run dev # Vite dev server, 0.0.0.0:3001
|
||||
npm run server:dev # NestJS API dev server, 0.0.0.0:3000
|
||||
npm run server:dev # build and start NestJS API, 0.0.0.0:3000
|
||||
npm run server:build # tsc -p server/tsconfig.json
|
||||
npm run lint # tsc --noEmit
|
||||
npm run test # vitest run
|
||||
@@ -93,15 +93,15 @@ npm run test:e2e
|
||||
详细清单见 `docs/features.md`。处理需求时应区分:
|
||||
|
||||
- 真实可用:本地初始化、字段绑定、JSON 导出等。
|
||||
- 真实集成:后端 Session 登录、Dashboard API、报告 API、模板 API、用户/部门 API、设置 API、签名文件 API、AI 代理、讯飞语音代理、浏览器打印/PDF、视频抽帧。它们有真实代码路径,但依赖后端服务、浏览器能力、权限、有效密钥、网络或人工保存。
|
||||
- 前端演示:页面权限仍以体验控制为主,不能作为生产安全边界。
|
||||
- 真实集成:后端 Session 登录、Dashboard API、报告 API、模板 API、用户/部门 API、设置 API、签名文件 API、审计日志 API、AI 代理、讯飞语音代理、浏览器打印/PDF、视频抽帧。它们有真实代码路径,但依赖后端服务、浏览器能力、权限、有效密钥、网络或人工保存。
|
||||
- 前端体验控制:页面级角色守卫和菜单隐藏已接入 Auth Context,但不能替代后端 API 权限。
|
||||
|
||||
## 当前安全边界
|
||||
|
||||
本项目不能按生产安全系统理解:
|
||||
|
||||
- 后端账号使用 Argon2 哈希;开发回退模式下 `localStorage.users` 仍保留兼容缓存和旧演示密码字段。
|
||||
- 权限判断在前端,不能抵御绕过。
|
||||
- 页面级权限在前端用于体验控制,不能抵御绕过;生产安全边界以后端 API 权限校验为准。
|
||||
- 报告和模板 HTML 保存时已做服务端白名单清洗;前端仍使用 HTML 渲染,继续修改时要留意 XSS 和打印兼容。
|
||||
- AI Key 和讯飞语音密钥已由后端代理使用,普通用户读取系统设置时不会返回真实密钥。
|
||||
- 视频和关键帧文件已优先进入后端文件资源;报告保存时通过 `ReportMedia` 关系表关联,新建报告保存前仍依赖浏览器对象 URL 预览。
|
||||
@@ -119,11 +119,12 @@ npm run test:e2e
|
||||
├── package-lock.json # npm 锁文件
|
||||
├── prisma.config.ts # Prisma 7 CLI 配置
|
||||
├── vite.config.ts # Vite/Tailwind/React/Vitest 配置
|
||||
├── playwright.config.ts # Playwright E2E 配置,默认复用/启动 3001 端口
|
||||
├── playwright.config.ts # Playwright E2E 配置,启动/复用 3001 前端和 3100 测试 API
|
||||
├── tsconfig.json # TypeScript 配置
|
||||
├── index.html # Vite HTML 入口
|
||||
├── e2e/
|
||||
│ ├── helpers.ts # E2E localStorage 种子数据工具
|
||||
│ ├── helpers.ts # E2E 真实 API 登录和造数工具
|
||||
│ ├── audit-and-route-guards.spec.ts
|
||||
│ ├── login.spec.ts
|
||||
│ ├── report-permissions.spec.ts
|
||||
│ ├── report-revision.spec.ts
|
||||
@@ -137,6 +138,7 @@ npm run test:e2e
|
||||
│ ├── index.css # 全局样式、Tailwind 主题和组件类
|
||||
│ ├── types.ts # User/Report/Template/SystemSettings/FormField 等类型和默认配置
|
||||
│ ├── api/
|
||||
│ │ ├── audit.ts # 审计日志 API 封装
|
||||
│ │ ├── client.ts # 前端 API client,统一 envelope/错误/Cookie
|
||||
│ │ ├── dashboard.ts # 工作台统计 API 封装
|
||||
│ │ ├── reports.ts # 报告列表、详情、保存、删除 API 封装
|
||||
@@ -159,6 +161,7 @@ npm run test:e2e
|
||||
│ │ └── Sidebar.test.tsx
|
||||
│ ├── pages/
|
||||
│ │ ├── Login.tsx # 登录和默认数据初始化
|
||||
│ │ ├── AuditLogs.tsx # 审计日志查看
|
||||
│ │ ├── Dashboard.tsx # 工作台统计和快捷入口
|
||||
│ │ ├── ReportEditor.tsx # 核心报告编辑器、抽帧、AI、语音、保存
|
||||
│ │ ├── ReportManage.tsx # 报告列表、筛选、历史、导出、删除
|
||||
@@ -186,7 +189,7 @@ npm run test:e2e
|
||||
│ ├── src/
|
||||
│ │ ├── main.ts # NestJS API 启动入口
|
||||
│ │ ├── app.module.ts
|
||||
│ │ ├── audit/ # 审计日志写入服务
|
||||
│ │ ├── audit/ # 审计日志写入和查询 API
|
||||
│ │ ├── auth/ # 登录、me、logout 接口
|
||||
│ │ ├── dashboard/ # 工作台统计 API
|
||||
│ │ ├── reports/ # 报告 API、DTO、metadata 映射和测试
|
||||
@@ -332,7 +335,7 @@ PostgreSQL 数据模型。当前覆盖 `Tenant`、`Department`、`User`、`UserS
|
||||
- 报告管理按角色过滤
|
||||
- 管理员本部门报告范围和医生本人报告范围
|
||||
- 模板可用范围,含部门模板和医生个人模板
|
||||
- Playwright E2E 覆盖登录、报告权限、报告修订版本和医生个人模板
|
||||
- Playwright E2E 通过真实后端 API seed 覆盖登录、报告权限、报告修订版本、医生个人模板、路由守卫和审计日志
|
||||
- 后端权限策略覆盖报告、模板、用户管理和管理员创建规则
|
||||
- 后端 Dashboard 统计按角色范围过滤
|
||||
- 后端报告 metadata 兼容映射和 `ReportMedia` 视频/关键帧组装
|
||||
@@ -341,7 +344,7 @@ PostgreSQL 数据模型。当前覆盖 `Tenant`、`Department`、`User`、`UserS
|
||||
- 后端系统设置 schema 校验
|
||||
- 后端 AI 入参和讯飞语音代理帧处理
|
||||
- 后端 HTTP 集成测试覆盖 API prefix、登录 session、受保护 API actor 传递
|
||||
- 后端真实 PostgreSQL 集成测试覆盖 Auth、Dashboard、Reports、ReportMedia、Templates、Files、HTML 清洗和审计核心服务
|
||||
- 后端真实 PostgreSQL 集成测试覆盖 Auth、Dashboard、Reports、ReportMedia、Templates、Files、HTML 清洗、审计写入和审计查询权限
|
||||
- 存储封装
|
||||
- 默认模板结构和字段契约
|
||||
- 打印入口
|
||||
|
||||
Reference in New Issue
Block a user