docs(bug): 诸葛亮分析报告 Bug #746

This commit is contained in:
2026-06-12 22:51:12 +08:00
parent d5c80b20df
commit 7eb4c8d30a

View File

@@ -0,0 +1,85 @@
# 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 分析决策
> ⚠️ 修复人员请先验证以上分析是否正确,再执行修复。