Files
his/MD/bugs/BUG_746_ANALYSIS.md

86 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bug #746 诸葛亮分析报告
> **文档类型**: Bug分析
> **分析时间**: 2026-06-12 22:51:12
> **分析模型**: mimo-v2.5 (LLM深度分析)
---
## 基本信息
- **Bug #**: 746
- **标题**: 【电子病历管理】病历时效加载卡死会有报错了“No static resource emr-archive/overdue/list for request '/healthlink-his/emr-archive/overdue/list'.”
- **模块**: 会诊管理
- **提出人**: 王栩坤
---
Now I have all the information needed. Here's my analysis:
---
## 一、Bug 理解
**禅道 Bug #746**
- **标题**:【电子病历管理】病历时效加载卡死会有报错了"No static resource emr-archive/overdue/list for request '/healthlink-his/emr-archive/overdue/list'."
- **重现步骤**登录内科医生1账号 → 打开电子病历管理 → 打开病历时效 → 出现报错
- **期望结果**:能够正常进入病历时效,卡死界面能够正常显示
- **附图关键信息**:页面顶部红色错误条 `No static resource emr-archive/overdue/list for request '/healthlink-his/emr-archive/overdue/list'`;四个统计卡片全部为 0数据列表空白并显示加载中旋转图标
**总结**:用户在病历时效页面加载时,前端请求了错误的 API 路径 `/emr-archive/overdue/list`,该路径在后端无对应 Controller 端点,导致数据加载失败、页面卡死。
---
## 二、根因分析
**问题链条**
| 层级 | 文件 | 问题 |
|------|------|------|
| 前端 API | `src/api/emr.js` | `getOverdueList` 定义了错误 URL `/emr-archive/overdue/list` |
| 前端 API | `src/api/emr/index.js` | `getOverdueList` 定义了正确 URL `/api/v1/emr/timeliness/overdue` |
| 前端页面 | `src/views/emr/timeliness/index.vue:40` | `import ... from '@/api/emr'` → 解析到 `emr.js` 而非 `emr/index.js` |
| 后端 | `EmrArchiveController` (`/emr-archive`) | 只有 `/page`, `/print`, `/archive`, `/reprint`, `/stats`,无 `/overdue/list` |
| 后端 | `StructuredEmrController` (`/api/v1/emr`) | 已有 `/timeliness/overdue` 端点 ✅ |
**根因**Vite 的 `@` 别名解析规则是「文件优先于目录索引」。`@/api/emr` 先匹配到 `src/api/emr.js`(文件),不会进入 `src/api/emr/index.js`(目录索引)。`src/api/emr.js` 中的 `getOverdueList` 使用了不存在的后端路径 `/emr-archive/overdue/list`
`src/api/emr.js` 中的另外两个函数也有同样问题:
- `getTimelinessByEncounter``/emr-revision/timeliness/...`(不存在)
- `getTimelinessStatistics``/emr-revision/statistics`(不存在)
---
## 三、修复方案
**方案:修复 `src/api/emr.js` 中的错误 URL对齐到 `StructuredEmrController` 的正确端点**
需修改 **1 个文件**
### `healthlink-his-ui/src/api/emr.js`
将三个函数的 URL 修改为后端 `StructuredEmrController` 的正确路径:
| 函数 | 错误 URL | 正确 URL |
|------|---------|---------|
| `getTimelinessByEncounter` | `/emr-revision/timeliness/{id}` | `/api/v1/emr/timeliness/encounter/{id}` |
| `getTimelinessStatistics` | `/emr-revision/statistics` | `/api/v1/emr/timeliness/statistics` |
| `getOverdueList` | `/emr-archive/overdue/list` | `/api/v1/emr/timeliness/overdue` |
同时 `getPendingEmrCount` 指向 `/emr-archive/pending-count`,后端 `EmrArchiveController` 也没有该端点,也需要同步处理(可暂改为调用 `/emr-archive/stats` 或在后端补充端点)。
---
## 四、路由决策
**FIXER**: guanyu
**REASON**: 修复仅涉及前端 API URL 对齐后端已有端点,属于简单的接口路径修正,后端端点已存在无需改动,交给后端/全栈开发关羽处理即可。
---
## 路由决策
- **FIXER_ID**: guanyu
- **修复 Agent**: guanyu后端
- **原因**: LLM 分析决策
> ⚠️ 修复人员请先验证以上分析是否正确,再执行修复。