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:
@@ -43,7 +43,7 @@
|
||||
- `POST /api/files`
|
||||
- `DELETE /api/files/:id`
|
||||
|
||||
报告媒体关系表、数据库 Session 和第一版审计日志已实现;查看日志、第三方调用摘要和后端导出接口仍是后续项。
|
||||
报告媒体关系表、数据库 Session 和第一版审计日志已实现;审计日志查询 API 已提供给超级管理员和管理员使用;第三方调用摘要和后端导出接口仍是后续项。
|
||||
|
||||
## 通用约定
|
||||
|
||||
@@ -643,6 +643,48 @@ interface FieldLibraryDTO {
|
||||
- 模板图片资源当前登录用户可读取,删除权限限制为超级管理员、管理员或 owner。
|
||||
- 签名文件已先行通过 `POST /api/users/:id/signature` 实现。
|
||||
|
||||
## Audit API
|
||||
|
||||
### `GET /api/audit-logs`
|
||||
|
||||
查询审计日志。超级管理员可查看当前租户全部日志;管理员可查看本部门或自己作为操作者的日志;医生不可访问。
|
||||
|
||||
查询参数:
|
||||
|
||||
```text
|
||||
page=1
|
||||
pageSize=50
|
||||
action=report.complete
|
||||
targetType=Report
|
||||
actor=admin
|
||||
```
|
||||
|
||||
返回:
|
||||
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"items": [
|
||||
{
|
||||
"id": "log_xxx",
|
||||
"actorUsername": "admin",
|
||||
"actorName": "超级管理员",
|
||||
"actorRole": "super",
|
||||
"action": "report.complete",
|
||||
"targetType": "Report",
|
||||
"targetId": "report_xxx",
|
||||
"departmentId": "dept_xxx",
|
||||
"metadata": { "title": "报告标题" },
|
||||
"createdAt": "2026-05-02T00:00:00.000Z"
|
||||
}
|
||||
],
|
||||
"total": 1,
|
||||
"page": 1,
|
||||
"pageSize": 50
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 后续测试落点
|
||||
|
||||
后端骨架建立后,应把本文档转为真实测试:
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
| 密码 | Argon2 哈希 | 禁止明文密码进入前端或日志。 |
|
||||
| 文件存储 | 本地文件目录 + `files` 表,预留 MinIO/S3 兼容接口 | 开发和院内部署先降低成本;生产可切换对象存储。 |
|
||||
| 输入校验 | Zod 或 NestJS DTO 校验 | 所有 API 入参都必须校验,尤其是 HTML、文件、权限相关参数。 |
|
||||
| 测试 | Vitest/Testing Library + Playwright + 后端单元/集成测试 | 保留现有前端测试;新增后端 policy/service/API 测试;E2E 后续从 localStorage seed 改为 API/test DB seed。 |
|
||||
| 测试 | Vitest/Testing Library + Playwright + 后端单元/集成测试 | 保留现有前端测试;新增后端 policy/service/API 测试;E2E 已从 localStorage seed 改为真实后端 API seed。 |
|
||||
| 部署 | Docker Compose | 前端静态资源、NestJS API、PostgreSQL、可选 Redis/MinIO 分服务部署。 |
|
||||
|
||||
暂不建议第一阶段使用微服务、复杂租户系统或后端抽帧服务。抽帧可以先继续留在前端 canvas,生成关键帧后上传后端文件接口。
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
- `server/src/main.ts`:NestJS 启动入口,设置 `/api` 前缀、CORS、Cookie Session、数据库 Session Store 和统一错误响应。
|
||||
- `server/src/dashboard`:`GET /api/dashboard/stats`,按角色范围统计报告、模板、用户和趋势。
|
||||
- `server/src/audit`:第一版审计服务,记录登录、报告、模板、用户、设置和文件修改。
|
||||
- `server/src/audit`:审计服务和查询 API,记录并查看登录、报告、模板、用户、设置和文件修改。
|
||||
- `server/src/health`:`GET /api/health` 健康检查。
|
||||
- `server/src/auth`:`POST /api/auth/login`、`GET /api/auth/me`、`POST /api/auth/logout` 认证接口。
|
||||
- `server/src/reports`:`GET/POST/PATCH/DELETE /api/reports` 报告接口,含角色范围过滤、历史版本、软删除和报告媒体关系同步。
|
||||
@@ -327,6 +327,7 @@
|
||||
|
||||
5. 审计日志
|
||||
- 登录、编辑、完成、删除、重置、权限变更等关键操作写日志。
|
||||
- 当前已提供审计日志查询页面/API;超级管理员看全部,管理员看本部门或自己相关日志。
|
||||
- 报告导出不要求水印、导出原因、审批或专门导出审计。
|
||||
|
||||
## 权限模型建议
|
||||
@@ -398,10 +399,17 @@
|
||||
|
||||
### E2E 测试
|
||||
|
||||
建议新增 Playwright:
|
||||
当前 Playwright 已通过真实后端 API seed 覆盖:
|
||||
|
||||
- 管理员登录、创建医生、分配模板。
|
||||
- 医生登录、新建报告、保存草稿、完成报告。
|
||||
- 默认登录进入工作台。
|
||||
- 报告按超级管理员、管理员、医生范围过滤。
|
||||
- 已完成报告再次完成后递增修订版本并保留历史。
|
||||
- 医生保存个人模板。
|
||||
- 医生直进管理页被路由守卫拦截,超级管理员可查看审计日志。
|
||||
|
||||
后续可继续增加:
|
||||
|
||||
- 管理员创建医生、分配模板的完整 UI 流程。
|
||||
- 报告管理搜索、查看、导出。
|
||||
- 模板新增、字段插入、报告套用模板。
|
||||
- 视频上传和抽帧可用性。
|
||||
|
||||
@@ -89,4 +89,4 @@ docker-compose up -d --build
|
||||
|
||||
## 部署边界
|
||||
|
||||
当前后端已承载登录认证、数据库 Session、Dashboard、报告、报告媒体关系、模板、字段库、通用文件/签名文件、视频/关键帧文件、用户管理、部门模板授权、系统设置、AI 代理、语音代理、HTML 清洗和第一版审计。生产化前还需要补齐查看日志、第三方代理调用摘要、限流、备份恢复、对象存储和更完整的旧数据迁移。
|
||||
当前后端已承载登录认证、数据库 Session、Dashboard、报告、报告媒体关系、模板、字段库、通用文件/签名文件、视频/关键帧文件、用户管理、部门模板授权、系统设置、AI 代理、语音代理、HTML 清洗和审计日志查询。生产化前还需要补齐第三方代理调用摘要、限流、备份恢复、对象存储和更完整的旧数据迁移。
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
| 默认数据初始化 | 真实可用 | 登录页初始化默认用户、模板、字段、图片资源和系统设置。 |
|
||||
| 登录态恢复/退出 | 真实集成 | `AuthProvider` 调用 `GET /api/auth/me` 恢复会话,`POST /api/auth/logout` 退出;后端 Session 已持久化到 `AppSession` 表,生产构建默认不再用本地缓存恢复。 |
|
||||
| 角色导航 | 真实可用 | `Sidebar` 优先读取 Auth Context,回退 `currentUser.role` 显示菜单。 |
|
||||
| 页面级权限跳转 | 前端演示 | 页面读取 `currentUser` 后跳转或隐藏功能;可被浏览器侧数据修改绕过。 |
|
||||
| 页面级权限跳转 | 真实可用/前端体验控制 | 路由统一通过 Auth Context 按角色阻止医生进入模板管理、用户管理和审计日志;这只是体验层,生产安全仍以后端 API 权限为准。 |
|
||||
| 工作台统计 | 真实集成 | `Dashboard` 调用 `GET /api/dashboard/stats`,后端按角色范围统计报告、模板、用户和趋势;只有开发/显式回退模式下 API 不可用才回退本地统计。 |
|
||||
| 报告基本信息表单 | 真实可用 | `ReportEditor` 管理 `reportData`,支持文本、日期、时间、单选、多选。 |
|
||||
| 正文智能字段绑定 | 真实可用 | 模板 HTML 的 `data-bind` 字段与表单双向同步。 |
|
||||
@@ -46,8 +46,9 @@
|
||||
| 讯飞语音听写 | 真实集成 | 前端使用麦克风采集音频并连接 `/api/speech/iat`;后端读取讯飞配置、生成鉴权 URL、补齐首帧 APPID/业务参数并转发 IAT 结果。需要浏览器权限、有效配置和网络。 |
|
||||
| AI/语音密钥管理 | 真实集成 | AI Key 和讯飞 APIKey/APISecret 均由后端代理读取和使用;普通用户读取设置时不返回真实密钥。 |
|
||||
| 系统设置 | 真实集成 | `SystemSettings` 优先调用 `/api/settings/system` 读取、保存和重置抽帧、默认模板、AI Provider、语音配置;只有开发/显式回退模式下 API 不可用才回退本地缓存。 |
|
||||
| 审计日志查看 | 真实集成 | 超级管理员和管理员可进入审计日志页,调用 `GET /api/audit-logs` 查看登录、报告、模板、用户、部门、设置和文件等操作;管理员只看本部门或自己相关日志。 |
|
||||
| Docker/Nginx 静态部署 | 真实可用 | 可构建静态文件并用 Nginx 托管 SPA。 |
|
||||
| 后端服务 | 后端骨架 | 已新增 NestJS API:健康检查、认证接口、数据库 Session、Dashboard API、报告 API、报告媒体关系、模板 API、字段库 API、用户/部门 API、设置 API、通用文件/签名文件 API、视频/关键帧文件上传、AI 代理、讯飞语音代理、HTML 清洗、审计日志、Prisma/PostgreSQL 数据模型、默认 seed 和权限策略。 |
|
||||
| 后端服务 | 后端骨架 | 已新增 NestJS API:健康检查、认证接口、数据库 Session、Dashboard API、报告 API、报告媒体关系、模板 API、字段库 API、用户/部门 API、设置 API、通用文件/签名文件 API、视频/关键帧文件上传、AI 代理、讯飞语音代理、HTML 清洗、审计日志查询、Prisma/PostgreSQL 数据模型、默认 seed 和权限策略。 |
|
||||
| 讯飞语音配置字段 | 真实可用 | 初始化、类型和系统设置统一使用 `xfSpeechConfig`。 |
|
||||
|
||||
## 测试覆盖对应
|
||||
@@ -57,6 +58,7 @@
|
||||
| `src/pages/Login.test.tsx` | 默认数据初始化、默认账号展示、后端禁用账号错误展示。 |
|
||||
| `src/components/Sidebar.test.tsx` | 角色导航过滤。 |
|
||||
| `src/api/client.test.ts` | API envelope 解包、Cookie credentials 和错误 envelope。 |
|
||||
| `src/api/audit.test.ts` | 审计日志列表 API 封装和查询参数。 |
|
||||
| `src/api/dashboard.test.ts` | Dashboard 统计 API 封装和响应校验。 |
|
||||
| `src/api/speech.test.ts` | 语音 WebSocket 代理地址生成,含同源和显式 API Base URL。 |
|
||||
| `src/api/library.test.ts` | 字段库 API 读取和更新封装。 |
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
后端角色 `doctor` 会映射为当前前端历史类型中的 `user`。前端会保留本地签名和已有模板授权字段,避免迁移期丢失医生个人模板或签名。
|
||||
|
||||
路由层使用 Auth Context 做统一角色守卫:医生不能直接进入模板管理、用户管理和审计日志页面;超级管理员和管理员可进入这些管理页。该守卫只负责前端体验,生产安全边界仍以后端 API 权限校验为准。
|
||||
|
||||
## 默认账号
|
||||
|
||||
| 用户ID | 密码 | 角色 | 说明 |
|
||||
|
||||
@@ -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。 |
|
||||
|
||||
@@ -20,5 +20,5 @@
|
||||
3. 增加文件服务:报告图片、视频和关键帧后续可切换对象存储或院内文件服务;签名、模板图片、视频和关键帧已完成第一版后端文件资源。
|
||||
4. 完善 API 代理:AI 和语音已完成第一版后端代理,后续应补限流、审计、错误分级和第三方调用隔离测试。
|
||||
5. 增强 HTML 清洗:当前报告和模板保存已有第一版白名单过滤,后续需覆盖 AI 返回、导入文件、旧数据迁移和绕过测试。
|
||||
6. 增加审计日志:当前登录、报告/模板/用户/设置/文件修改已有第一版审计,后续补查看日志、打印/导出错误追踪和第三方代理调用摘要;报告导出不要求专门导出审计。
|
||||
6. 增强审计日志:当前登录、报告/模板/用户/设置/文件修改已有审计写入和查询页面;后续补打印/导出错误追踪和第三方代理调用摘要。报告导出不要求专门导出审计。
|
||||
7. 增加数据备份与恢复:避免浏览器清理缓存造成业务数据丢失。
|
||||
|
||||
@@ -10,7 +10,7 @@ npm run server:build
|
||||
npm run build
|
||||
```
|
||||
|
||||
当前单元/组件测试框架为 Vitest,运行环境为 jsdom。React 页面测试使用 Testing Library。端到端测试使用 Playwright,当前仍以 localStorage 种子数据锁定迁移期前端基线行为;登录相关测试会 mock Auth API。后端使用 Vitest 覆盖权限策略、schema、DTO 映射、Nest HTTP 层集成测试和真实 PostgreSQL 服务集成测试,NestJS API 构建用 `npm run server:build` 验证。
|
||||
当前单元/组件测试框架为 Vitest,运行环境为 jsdom。React 页面测试使用 Testing Library。端到端测试使用 Playwright,当前会启动/复用 Vite 前端和 NestJS 后端,并通过真实 Auth/Reports/Templates/Users/Audit API 准备数据。后端使用 Vitest 覆盖权限策略、schema、DTO 映射、Nest HTTP 层集成测试和真实 PostgreSQL 服务集成测试,NestJS API 构建用 `npm run server:build` 验证。
|
||||
|
||||
## 测试范围
|
||||
|
||||
@@ -19,11 +19,12 @@ npm run build
|
||||
| 数据初始化 | 登录页首次加载会创建默认用户、模板、字段和系统设置。 |
|
||||
| 前端 API client | 统一解包 `{ data }` 响应、携带 Cookie credentials、识别后端错误 envelope。 |
|
||||
| 前端 Dashboard API | 工作台统计封装会请求 `/api/dashboard/stats` 并校验响应结构。 |
|
||||
| 前端审计 API | 审计日志列表封装会请求 `/api/audit-logs` 并校验响应结构。 |
|
||||
| 前端语音代理地址 | 根据当前页面来源或 `VITE_API_BASE_URL` 生成 `/api/speech/iat` WebSocket 地址。 |
|
||||
| 前端字段库和文件 API | 字段库读取/更新、通用文件列表/上传封装。 |
|
||||
| Auth 兼容映射 | 后端 `doctor` 角色会映射为当前前端使用的 `user`,并保留本地签名和模板授权。 |
|
||||
| 权限展示 | 侧边栏会按角色显示或隐藏模板管理、用户管理等入口。 |
|
||||
| 报告权限 | 医生只看到本人报告,管理员看到本部门报告,超级管理员看到全部本地报告。 |
|
||||
| 权限展示 | 侧边栏和路由守卫会按角色显示或阻止模板管理、用户管理、审计日志等入口。 |
|
||||
| 报告权限 | 医生只看到本人报告,管理员看到本部门报告,超级管理员看到全部后端报告。 |
|
||||
| 后端报告映射 | Report API 使用 `metadata` 兼容前端扩展字段,使用 `ReportMedia` 组装视频/关键帧兼容字段。 |
|
||||
| 模板权限 | 医生可使用本部门授权模板和个人模板,不能使用他人个人模板。 |
|
||||
| 后端模板映射 | Template API 返回前端可消费的 `Template` 结构,并生成权限策略资源。 |
|
||||
@@ -41,6 +42,7 @@ npm run build
|
||||
| E2E 权限过滤 | Playwright 验证超级管理员、管理员、医生在报告管理页的可见范围。 |
|
||||
| E2E 报告修订 | Playwright 验证已完成报告再次完成保存后 `revision` 递增并保留历史。 |
|
||||
| E2E 个人模板 | Playwright 验证医生可保存个人模板且模板仅归属本人。 |
|
||||
| E2E 路由守卫和审计日志 | Playwright 验证医生不能直进管理页,超级管理员可查看审计日志。 |
|
||||
| 后端权限策略 | Vitest 验证报告、模板、用户和管理员创建权限策略。 |
|
||||
|
||||
## Mock 边界
|
||||
@@ -48,7 +50,7 @@ npm run build
|
||||
测试中 mock 了以下浏览器或外部边界:
|
||||
|
||||
- `fetch('/logo_square.png')`:用于登录初始化图片资源。
|
||||
- `/api/auth/me`、`/api/auth/login`:组件测试和登录 E2E 中使用 mock,避免单元/E2E 依赖真实数据库。
|
||||
- `/api/auth/me`、`/api/auth/login`:组件测试中使用 mock,避免单元测试依赖真实数据库;Playwright E2E 使用真实后端 API。
|
||||
- `window.alert` / `window.confirm`:避免测试阻塞。
|
||||
- `document.execCommand`:当前富文本编辑依赖浏览器命令。
|
||||
- `URL.createObjectURL` / `URL.revokeObjectURL`:用于文件、视频和导出。
|
||||
@@ -64,6 +66,7 @@ AI 第三方接口、讯飞语音上游 WebSocket、麦克风权限和真实视
|
||||
| 后端登录禁用账号错误 | 已覆盖 | `Login.test.tsx` |
|
||||
| API client 响应/错误处理 | 已覆盖 | `api/client.test.ts` |
|
||||
| Dashboard API 封装 | 已覆盖 | `api/dashboard.test.ts` |
|
||||
| 审计日志 API 封装 | 已覆盖 | `api/audit.test.ts` |
|
||||
| 语音 WebSocket 代理地址 | 已覆盖 | `api/speech.test.ts` |
|
||||
| 字段库 API 封装 | 已覆盖 | `api/library.test.ts` |
|
||||
| 通用文件 API 封装 | 已覆盖 | `api/files.test.ts` |
|
||||
@@ -81,6 +84,7 @@ AI 第三方接口、讯飞语音上游 WebSocket、麦克风权限和真实视
|
||||
| 报告权限 E2E | 已覆盖 | `e2e/report-permissions.spec.ts` |
|
||||
| 报告修订版本 E2E | 已覆盖 | `e2e/report-revision.spec.ts` |
|
||||
| 医生个人模板 E2E | 已覆盖 | `e2e/personal-template.spec.ts` |
|
||||
| 路由守卫和审计日志 E2E | 已覆盖 | `e2e/audit-and-route-guards.spec.ts` |
|
||||
| 后端报告/模板/用户权限策略 | 已覆盖 | `server/src/permissions/permissions.policy.test.ts` |
|
||||
| 后端报告兼容映射 | 已覆盖 | `server/src/reports/report.mapper.test.ts` |
|
||||
| 后端模板兼容映射 | 已覆盖 | `server/src/templates/template.mapper.test.ts` |
|
||||
@@ -91,7 +95,7 @@ AI 第三方接口、讯飞语音上游 WebSocket、麦克风权限和真实视
|
||||
| 后端字段库 schema | 已覆盖 | `server/src/library/library.schemas.test.ts` |
|
||||
| 后端文件 schema | 已覆盖 | `server/src/files/files.schemas.test.ts` |
|
||||
| 后端 HTTP 集成 | 已覆盖 | `server/src/http.integration.test.ts` |
|
||||
| 后端真实数据库集成 | 已覆盖 | `server/src/database.integration.test.ts`,含 Dashboard 角色范围、报告媒体关系表同步、报告 HTML 清洗和审计写入。 |
|
||||
| 后端真实数据库集成 | 已覆盖 | `server/src/database.integration.test.ts`,含 Dashboard 角色范围、报告媒体关系表同步、报告 HTML 清洗、审计写入和审计查询权限。 |
|
||||
| 后端健康检查和认证 API | 已覆盖 | HTTP 集成测试覆盖健康检查、登录 session 和未登录保护;真实数据库集成覆盖 Argon2 登录、禁用账号和数据库 Session Store。 |
|
||||
| 模板编辑器深度交互 | 待 E2E | 依赖 contentEditable 和 execCommand。 |
|
||||
| 报告编辑器完整流程 | 部分覆盖 | 已覆盖保存修订版本和个人模板;模板切换、字段同步仍待补。 |
|
||||
@@ -107,4 +111,4 @@ AI 第三方接口、讯飞语音上游 WebSocket、麦克风权限和真实视
|
||||
npx playwright install chromium
|
||||
```
|
||||
|
||||
当前 E2E 测试不会依赖真实后端数据库:登录 E2E mock 认证 API,其余业务 E2E 通过 `e2e/helpers.ts` 写入 localStorage 种子数据。后端化后应保留这些用户流程测试,并逐步把数据准备方式从 localStorage seed 改为 API seed 或测试数据库 seed。
|
||||
当前 E2E 测试依赖真实后端数据库。Playwright 会在 `3100` 端口启动后端 API,执行 Prisma migrate/seed,然后在 `3001` 启动 Vite,并把 `/api` 代理到 `3100`。`e2e/helpers.ts` 通过真实 API 登录、创建用户/部门/报告和查询模板,不再写入 localStorage 种子数据。
|
||||
|
||||
Reference in New Issue
Block a user