動作
Bug #357
進行中
SC
修復回報 ICD-10 錯誤故障:舊 DB 缺 provider 欄位 500 + 前端吞錯誤(v0.4.1)
Bug #357:
修復回報 ICD-10 錯誤故障:舊 DB 缺 provider 欄位 500 + 前端吞錯誤(v0.4.1)
狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-07-11
完成日期:
完成比例:
0%
預估工時:
概述
修復「回報 ICD-10 錯誤」故障:舊 DB 缺 provider 欄位 500 + 前端吞錯誤(v0.4.1)¶
背景¶
2026-07-10 醫院部署 #330 後,病歷 ICD-10 結果按「回報錯誤」→ 按鈕沒反應、視窗不關,回報功能整個失效。
根因分析(時間線):
-
icd10_feedback表在 #185 建立(無provider欄)。 -
#317 於 models.py 加入
provider欄,但 lifespan 手動 migration 只補了templates.defaults與users.role/is_active,漏了這欄。 -
Base.metadata.create_all只建新表、不會 ALTER 舊表 → 醫院機(#302 時期建的 DB)缺欄。 - POST /icd10-feedback 帶 provider → SQLite
no column named provider→ 500。 - 前端
IcdErrorReport.tsx的 catch 註解就寫著// silent fail—— 錯誤被吞掉,使用者只看到「沒反應」。
開發機 DB 是新的(欄位齊全),所以本機測不到 —— 典型「只在部署機發作」的 schema drift。
變更內容¶
1. 後端啟動自動補欄位(backend/main.py lifespan)¶
- 比照既有 migration 模式:偵測
icd10_feedback缺provider欄 →ALTER TABLE ... ADD COLUMN provider VARCHAR。 - 已用模擬舊 DB 實測:先重現
no column named provider錯誤 → 跑 migration → 欄位補齊、舊資料完好(provider=NULL)、新 INSERT 正常。
2. 前端錯誤不再靜默(icd-feedback.ts + IcdErrorReport.tsx)¶
-
submitIcdFeedback回傳{ok, status}(status=null 表示連不到伺服器),不再只回 boolean。 - 對話框失敗時顯示紅字錯誤:連線失敗/登入過期(401)/其他 HTTP 錯誤各有明確訊息 —— 以後同類故障使用者能直接回報「HTTP 500」而不是「沒反應」。
- 快查頁與縮寫對照表的回報本來就有錯誤顯示,不受影響。
3. 版本號 v0.4.1(version.ts)¶
- CHANGELOG 加 0.4.1:修復回報送出失敗 + 失敗顯示錯誤訊息。
驗收標準¶
- 模擬 #185 舊表結構的 DB:啟動後 provider 欄自動補上,POST /icd10-feedback 回 201(已實測 PASS)。
- 全站 smoke test 41 項全 PASS(其中 5.1 即此故障點,payload 與前端一致含 provider)。
- 前端 tsc 通過;送出失敗時對話框顯示紅字錯誤訊息。
- 版本徽章顯示 v0.4.1。
備註¶
-
醫院機修復方式:
git pull+ 重啟後端即可(啟動時自動補欄位);前端要看到新錯誤提示需npm run build && npm run start。已寫入部署手冊 §9 補丁章節(隨同批 smoke test ticket 入庫)。
沒有任何資料可供顯示
動作