From c55a55a27b039fc9c1097803c8784c5b52ee0fd9 Mon Sep 17 00:00:00 2001 From: admin <572701190@qq.com> Date: Thu, 16 Apr 2026 21:41:21 +0800 Subject: [PATCH] =?UTF-8?q?release:=20v1.2.0=20=E6=89=8B=E6=9C=AF=E5=9B=BE?= =?UTF-8?q?=E6=96=87=E7=97=85=E5=8E=86=E6=8A=A5=E5=91=8A=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../medical-report-dev-workflow/SKILL.md | 113 -------------- AGENTS.md | 27 ++-- docker-compose.qnap.yml | 49 ------ docker-compose.yaml | 8 +- src/pages/SystemSettings.tsx | 52 ++++++- src/types.ts | 3 + 工程分析/代码编纂工作流.md | 97 ------------ 工程分析/实现方案-2026-04-16-16-51-00.md | 69 --------- 工程分析/实现方案-2026-04-16-17-07-04.md | 102 ------------- 工程分析/实现方案-2026-04-16-17-15-37.md | 81 ---------- 工程分析/实现方案-2026-04-16-17-21-58.md | 77 ---------- 工程分析/实现方案-2026-04-16-18-51-06.md | 118 --------------- 工程分析/实现方案-2026-04-16-19-06-18.md | 132 ---------------- 工程分析/实现方案-2026-04-16-19-18-14.md | 25 ---- 工程分析/实现方案-2026-04-16-19-28-04.md | 141 ------------------ 工程分析/工作流指南.md | 71 --------- 工程分析/测试方案-2026-04-16-16-51-00.md | 76 ---------- 工程分析/测试方案-2026-04-16-17-07-04.md | 88 ----------- 工程分析/测试方案-2026-04-16-17-15-37.md | 73 --------- 工程分析/测试方案-2026-04-16-17-21-58.md | 72 --------- 工程分析/测试方案-2026-04-16-18-51-06.md | 90 ----------- 工程分析/测试方案-2026-04-16-19-06-18.md | 89 ----------- 工程分析/测试方案-2026-04-16-19-18-14.md | 19 --- 工程分析/测试方案-2026-04-16-19-28-04.md | 80 ---------- 工程分析/需求分析-2026-04-16-16-51-00.md | 36 ----- 工程分析/需求分析-2026-04-16-17-07-04.md | 26 ---- 工程分析/需求分析-2026-04-16-17-15-37.md | 25 ---- 工程分析/需求分析-2026-04-16-17-21-58.md | 22 --- 工程分析/需求分析-2026-04-16-18-51-06.md | 36 ----- 工程分析/需求分析-2026-04-16-19-06-18.md | 34 ----- 工程分析/需求分析-2026-04-16-19-18-14.md | 30 ---- 工程分析/需求分析-2026-04-16-19-28-04.md | 34 ----- .../实现方案-2026-04-16-20-24-11.md | 0 .../实现方案-2026-04-16-20-33-12.md | 0 .../实现方案-2026-04-16-20-46-50.md | 0 .../测试方案-2026-04-16-20-24-11.md | 0 .../测试方案-2026-04-16-20-33-12.md | 0 .../测试方案-2026-04-16-20-46-50.md | 0 {工程分析 => 过往经验}/经验记录.md | 0 .../需求分析-2026-04-16-20-24-11.md | 0 .../需求分析-2026-04-16-20-33-12.md | 0 .../需求分析-2026-04-16-20-46-50.md | 0 42 files changed, 73 insertions(+), 1922 deletions(-) delete mode 100644 .agents/skills/medical-report-dev-workflow/SKILL.md delete mode 100644 docker-compose.qnap.yml delete mode 100644 工程分析/代码编纂工作流.md delete mode 100644 工程分析/实现方案-2026-04-16-16-51-00.md delete mode 100644 工程分析/实现方案-2026-04-16-17-07-04.md delete mode 100644 工程分析/实现方案-2026-04-16-17-15-37.md delete mode 100644 工程分析/实现方案-2026-04-16-17-21-58.md delete mode 100644 工程分析/实现方案-2026-04-16-18-51-06.md delete mode 100644 工程分析/实现方案-2026-04-16-19-06-18.md delete mode 100644 工程分析/实现方案-2026-04-16-19-18-14.md delete mode 100644 工程分析/实现方案-2026-04-16-19-28-04.md delete mode 100644 工程分析/工作流指南.md delete mode 100644 工程分析/测试方案-2026-04-16-16-51-00.md delete mode 100644 工程分析/测试方案-2026-04-16-17-07-04.md delete mode 100644 工程分析/测试方案-2026-04-16-17-15-37.md delete mode 100644 工程分析/测试方案-2026-04-16-17-21-58.md delete mode 100644 工程分析/测试方案-2026-04-16-18-51-06.md delete mode 100644 工程分析/测试方案-2026-04-16-19-06-18.md delete mode 100644 工程分析/测试方案-2026-04-16-19-18-14.md delete mode 100644 工程分析/测试方案-2026-04-16-19-28-04.md delete mode 100644 工程分析/需求分析-2026-04-16-16-51-00.md delete mode 100644 工程分析/需求分析-2026-04-16-17-07-04.md delete mode 100644 工程分析/需求分析-2026-04-16-17-15-37.md delete mode 100644 工程分析/需求分析-2026-04-16-17-21-58.md delete mode 100644 工程分析/需求分析-2026-04-16-18-51-06.md delete mode 100644 工程分析/需求分析-2026-04-16-19-06-18.md delete mode 100644 工程分析/需求分析-2026-04-16-19-18-14.md delete mode 100644 工程分析/需求分析-2026-04-16-19-28-04.md rename {工程分析 => 过往经验}/实现方案-2026-04-16-20-24-11.md (100%) rename {工程分析 => 过往经验}/实现方案-2026-04-16-20-33-12.md (100%) rename {工程分析 => 过往经验}/实现方案-2026-04-16-20-46-50.md (100%) rename {工程分析 => 过往经验}/测试方案-2026-04-16-20-24-11.md (100%) rename {工程分析 => 过往经验}/测试方案-2026-04-16-20-33-12.md (100%) rename {工程分析 => 过往经验}/测试方案-2026-04-16-20-46-50.md (100%) rename {工程分析 => 过往经验}/经验记录.md (100%) rename {工程分析 => 过往经验}/需求分析-2026-04-16-20-24-11.md (100%) rename {工程分析 => 过往经验}/需求分析-2026-04-16-20-33-12.md (100%) rename {工程分析 => 过往经验}/需求分析-2026-04-16-20-46-50.md (100%) diff --git a/.agents/skills/medical-report-dev-workflow/SKILL.md b/.agents/skills/medical-report-dev-workflow/SKILL.md deleted file mode 100644 index 40436ab..0000000 --- a/.agents/skills/medical-report-dev-workflow/SKILL.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -name: medical-report-dev-workflow -description: Enforce a strict five-step workflow for all code modification requests on the Medical Surgical Report System (Gemini-图文报告系统-V1.1). Use whenever the user asks to change, add, fix, refactor, or update any project code, feature, UI, logic, or configuration. Do NOT use for simple questions, explanations, or read-only research. ---- - -# 手术图文病历报告系统 —— 修改需求五步工作流 - -当用户提出任何程序修改需求时,必须严格按照以下顺序执行。禁止跳过任何步骤,禁止在方案未经过用户二次人工审核确认前进入下一步。 - ---- - -## Step 0: Gitea 备份 + 记录时间戳 - -1. 获取当前时间戳,格式:`{Year}-{Mon}-{Day}-{Hour}-{Min}-{Sec}`(例如 `2026-04-16-16-39-42`)。 -2. 执行 Gitea 备份: - ```bash - git add . - git commit -m "backup before modification at {时间戳}" - git remote set-url origin http://192.168.31.5:5002/admin/Mdeical_Sur_Report.git - git branch -M main - git push -u origin main - ``` -3. 若首次初始化仓库,执行 `git init` 和 `git checkout -b main` 后再提交。 -4. 此步骤中所有 git 操作若遇到报错(如 nothing to commit),通过调整文件内容或空提交确保能推送成功。 - ---- - -## Step 1: 工程分析目录检查 - -确保以下目录存在(如不存在则创建): -``` -.\工程分析\ -``` - ---- - -## Step 2: 需求分析文档 - -将用户提出的修改需求整理分析,写入文件: -``` -.\工程分析\需求分析-{时间戳}.md -``` - -文档必须包含: -- 需求背景 -- 功能目标(精确描述要实现什么) -- 涉及页面/模块/文件 -- 验收标准 - ---- - -## Step 3: 实现方案文档(必须经过用户二次人工审核) - -基于需求分析,编写详细实现方案,写入文件: -``` -.\工程分析\实现方案-{时间戳}.md -``` - -文档必须包含: -- 技术思路与实现路径 -- 需要修改/新增的文件清单 -- 关键代码变更说明 -- 潜在风险点及应对策略 - -**重要约束**:写完此文档后,必须立即停止并向用户汇报,等待用户二次人工审核确认。在得到明确的"确认"、"同意"、"可以执行"等回复前,禁止继续进入 Step 4 或开始任何代码修改。 - ---- - -## Step 4: 测试方案文档(必须经过用户二次人工审核) - -实现方案经用户确认后,编写测试方案,写入文件: -``` -.\工程分析\测试方案-{时间戳}.md -``` - -文档必须包含: -- 测试项清单 -- 测试步骤(操作路径) -- 预期结果 -- 回归验证范围(确保没有破坏现有功能) - -**重要约束**:写完此文档后,必须立即停止并向用户汇报,等待用户二次人工审核确认。在得到明确的"确认"、"同意"、"可以执行"等回复前,禁止继续进入 Step 5。 - ---- - -## Step 5: 执行修改 + 经验记录 - -测试方案经用户确认后,开始执行: -1. 按实现方案修改代码。 -2. 运行 `npm run lint` 进行 TypeScript 类型检查,确保零错误。 -3. 运行 `npm run build` 验证生产构建是否通过。 -4. 修改完成后,在以下文档中追加本次执行过程中遇到的关键问题及解决方案: - ``` - .\工程分析\经验记录.md - ``` - 每条记录必须使用四段式格式: - - **A. 具体问题** - - **B. 产生问题原因** - - **C. 解决问题方案** - - **D. 后续如何避免问题** -5. 向用户汇报最终执行结果和验证情况。 - ---- - -## 快速参考 - -| 项目 | 值 | -|------|-----| -| Gitea 地址 | `http://192.168.31.5:5002/admin/Mdeical_Sur_Report.git` | -| 工程分析目录 | `.\工程分析\` | -| 类型检查 | `npm run lint` | -| 构建验证 | `npm run build` | -| 开发服务器 | `npm run dev` | diff --git a/AGENTS.md b/AGENTS.md index 5215ebd..0db0889 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,7 +6,7 @@ ## 1. 项目概述 -**手术图文病历报告系统**(Gemini-图文报告系统-V1.1)是一款基于 **React 19 + TypeScript + Vite + Tailwind CSS 4** 开发的纯前端医疗图文报告管理应用。所有数据持久化在浏览器 `localStorage` 中,无需后端服务即可独立运行。 +**手术图文病历报告系统**是一款基于 **React 19 + TypeScript + Vite + Tailwind CSS 4** 开发的纯前端医疗图文报告管理应用。所有数据持久化在浏览器 `localStorage` 中,无需后端服务即可独立运行。 ### 核心功能 - **图文报告生成**:基于 `contentEditable` 的富文本编辑器,支持插入表格、图片占位符,可从本地或手术视频中截取关键帧插入报告。 @@ -34,6 +34,7 @@ - **图标**:Lucide React - **动画**:Motion - **语言**:TypeScript 5.8(`tsconfig.json` 中 `jsx: "react-jsx"`、`moduleResolution: "bundler"`) +- **其他依赖**:`@google/genai`(预留 AI 功能) ### 运行时架构 - **纯前端 SPA**:无后端 API,所有业务逻辑在浏览器端执行。 @@ -46,8 +47,7 @@ ``` . -├── docker-compose.yaml # Docker Compose 配置(端口 8080:80) -├── docker-compose.qnap.yml # QNAP 专用 Docker Compose +├── docker-compose.yaml # Docker Compose 配置(端口 4002:80) ├── Dockerfile # 多阶段构建:node:20-alpine -> nginx:alpine ├── nginx.conf # Nginx SPA 回退配置(try_files) ├── package.json # 依赖与脚本 @@ -65,7 +65,7 @@ ├── pages/ │ ├── Login.tsx # 登录页(初始化默认数据) │ ├── Dashboard.tsx # 工作台概览(统计图表 + 快捷入口) - │ ├── ReportEditor.tsx # 图文报告编辑器(最复杂的页面) + │ ├── ReportEditor.tsx # 图文报告编辑器(最复杂的页面,约 1400+ 行) │ ├── ReportManage.tsx # 报告列表管理 │ ├── ReportView.tsx # 报告查看/打印 │ ├── TemplateManage.tsx # 模板管理 @@ -106,7 +106,7 @@ npm run dev ### Docker 部署 ```bash -# 构建并启动(访问 http://localhost:8080) +# 构建并启动(访问 http://localhost:4002) docker-compose up -d --build # 停止 @@ -136,10 +136,13 @@ docker-compose down - 各页面在 `useEffect` 中读取 `storage.get('currentUser')`,未登录则 `navigate('/')`。 - `Sidebar.tsx` 的 `navItems` 按 `roles` 数组过滤菜单。 - `user` 角色只能查看/编辑自己创建的报告;`super`/`admin` 可查看全院报告。 +- `admin` 只能管理同部门(`department`)的 `user` 角色用户,且一个部门只能有一个管理员。 +- 用户对象包含 `visibleTemplates`(可视模板)和 `manageableTemplates`(可管理模板)数组,用于细粒度模板权限控制。 ### 数据持久化约定 - **禁止直接调用 `localStorage`**,统一使用 `src/utils/storage.ts` 中的 `storage.get / storage.set / storage.remove`。 -- localStorage 中存储的 key 包括:`users`、`reports`、`templates`、`systemSettings`、`currentUser`、`multiSelectOptions`、`anesthesiaOptions`、`reportEditorDraft_{username}`、`restore_{reportId}`(sessionStorage)。 +- localStorage 中存储的 key 包括:`users`、`reports`、`templates`、`systemSettings`、`currentUser`、`multiSelectOptions`、`anesthesiaOptions`、`reportEditorDraft_{username}`。 +- sessionStorage 中存储的 key 包括:`restore_{reportId}`(用于历史版本恢复)。 - 报告编辑器会在 `beforeunload` 和 `visibilitychange` 时自动保存草稿到 `reportEditorDraft_{username}`。 ### 样式约定 @@ -149,19 +152,20 @@ docker-compose down - A4 打印尺寸为 `210mm × 297mm`,打印时通过 `visibility` 控制只显示 `.print-content` 区域。 ### 编辑器实现细节 -- `ReportEditor.tsx` 使用原生 `contentEditable` + `document.execCommand` 实现富文本,而非第三方编辑器。 +- `ReportEditor.tsx` 和 `TemplateManage.tsx` 使用原生 `contentEditable` + `document.execCommand` 实现富文本,而非第三方编辑器。 - 图片通过 `.image-placeholder` 占位符插入,支持两种填充方式: 1. 点击占位符上传本地图片(Base64 存入 HTML)。 2. 从右侧“视频分析”面板拖拽自动抽帧的截图到占位符中。 - 视频中上传后会根据 `systemSettings.framePositions` 自动抽帧(通过 `