# AI 编码助手项目说明 本文件面向 AI 编码助手。阅读者应假设对该项目一无所知。以下信息基于当前仓库实际文件、脚本和源码;不要把早期设计目标当作已实现事实。任何代码和功能修改都要落实到文档和测试上。如果生成 git commit 信息,要逐个列点把所有修改都列上,重要的、大的修改放前面,不重要的、小的修改列在后面。 ## 项目一句话 这是一个“手术图文病历报告系统”。当前登录认证已接入 NestJS Session API、PostgreSQL 用户表和数据库 Session Store;工作台统计、报告、报告媒体、模板、字段库、模板图片资源、视频/关键帧文件、用户、部门权限、系统设置、签名文件、AI 对话和讯飞语音听写已优先接入后端 API/代理。开发模式仍保留本地兼容回退,不能把前端权限和本地缓存当作生产安全边界。 ## 当前技术栈 - React 19 - TypeScript 5.8 - Vite 6 - Tailwind CSS 4 - React Router DOM 7 - Lucide React - Vitest + jsdom + Testing Library - Playwright - NestJS + Prisma + PostgreSQL 后端骨架 - Docker + Nginx ## 运行脚本 ```bash npm install npm run dev # Vite dev server, 0.0.0.0:3001 npm run server:dev # build and start NestJS API, 0.0.0.0:3100 npm run server:build # tsc -p server/tsconfig.json npm run lint # tsc --noEmit npm run test # vitest run npm run test:e2e # playwright test npm run build # vite build npm run prisma:generate npm run prisma:migrate npm run prisma:seed ``` 修改代码后至少运行: ```bash npm run lint npm run test ``` 如果改动构建、依赖、路由、样式或部署相关内容,也运行: ```bash npm run build ``` 如果改动后端源码、Prisma schema、认证、权限或 API 契约,也运行: ```bash npm run server:build npm run prisma:generate ``` 后端化、权限或关键用户流程变更时也运行: ```bash npm run test:e2e ``` ## 默认账号 | 用户ID | 密码 | 角色 | | --- | --- | --- | | `admin` | `123456` | 超级管理员 | | `manager` | `123456` | 管理员 | | `0001` | `123456` | 医生 | 默认数据由 `src/pages/Login.tsx` 首次进入时初始化。 ## 主要业务脉络 1. 用户进入 `/` 登录页。 2. 登录页初始化默认用户、模板、字段、图片资源和系统设置。 3. 登录页通过 `AuthContext` 调用后端 `/api/auth/login`,后端写入 HttpOnly Session Cookie。 4. 登录成功后前端把后端安全用户 DTO 映射成兼容 `User`,写入 `localStorage.currentUser`,跳转到 `/dashboard`。 5. `AuthProvider` 启动时通过 `/api/auth/me` 恢复会话;侧边栏优先读取 Auth Context,回退 `currentUser.role` 展示不同菜单。 6. 报告编辑器使用模板 HTML 生成报告正文,通过 `data-bind` 字段把侧边表单和正文智能字段同步。 7. 视频上传后使用浏览器 `