動作
Feature #171
進行中
SC
SC
ICD-10 擷取 Pipeline 優化:強化 LLM 傷情擷取、階層式結果顯示、後端重啟腳本
Feature #171:
ICD-10 擷取 Pipeline 優化:強化 LLM 傷情擷取、階層式結果顯示、後端重啟腳本
開始日期:
2026-02-17
完成日期:
2026-02-17 (逾期 45 天)
完成比例:
100%
預估工時:
3:00 小時
概述
h1. 問題描述
ICD-10 Pipeline 的 Stage 1(LLM 傷情擷取)品質不穩定,常將整篇病歷當成單一傷情回傳,導致多個傷情只顯示一組 ICD-10 結果¶
ICD-10 結果以扁平表格顯示,所有候選碼視覺權重相同,不易辨識最佳推薦碼¶
後端修改程式碼後缺乏標準化重啟流程,zombie process 導致舊程式碼持續運作¶
h1. 修改內容
h2. Backend — RAG Pipeline 改善 (rag_service.py, main.py)
- 重寫 extract_injuries() prompt,明確要求 LLM 逐一拆解傷情、涵蓋病歷所有段落、限制每項 15 字以內
- 新增 fallback 機制:LLM 擷取失敗時,改用前端結構化傷情資料(softTissueInjuries + skeletalInjuries)作為保底
- Pipeline 各階段收集 debug 資訊(step1_injuries、step2_vector_search、step3_ranking)回傳前端
- API response 新增 debug 欄位(ICD10Response.debug: dict | None)
h2. Frontend — 階層式 ICD-10 顯示 (ReviewTab.tsx)
- 每個傷情的最高排名候選碼(rank 1)保持正常大小,背景以淡藍色區分(亮/暗模式適配)
- 其餘候選碼縮排 + 縮小字體 + 淡化色調,仍保留複製按鈕
- Chrome Console 輸出 Stage 1/2/3 debug 資訊,方便開發除錯
h2. DevOps — 後端重啟腳本 (restart_backend.sh, restart_backend.bat)
- 6 步驟標準流程:殺 uvicorn → 殺 zombie python.exe(WMIC 按 conda 環境名比對)→ 釋放 port 8000 → 清 pycache → 等待 port 釋放 → 啟動 + health
check - 解決 uvicorn --reload 產生的子 process 殘留問題
h1. 影響檔案
- backend/rag_service.py — prompt 重寫、fallback 機制、debug 收集
- backend/main.py — TraumaNote.fallback_injuries 欄位、ICD10Response.debug 欄位
- frontend/src/components/ReviewTab.tsx — 階層式顯示、背景色區分、debug console 輸出
- restart_backend.sh / restart_backend.bat — 新增重啟腳本
沒有任何資料可供顯示
動作