專案

一般

配置概況

動作

Bug #357

進行中
SC

修復回報 ICD-10 錯誤故障:舊 DB 缺 provider 欄位 500 + 前端吞錯誤(v0.4.1)

Bug #357: 修復回報 ICD-10 錯誤故障:舊 DB 缺 provider 欄位 500 + 前端吞錯誤(v0.4.1)

是由 Sashiba Chou21 天 前加入.

狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-07-11
完成日期:
完成比例:

0%

預估工時:

概述

修復「回報 ICD-10 錯誤」故障:舊 DB 缺 provider 欄位 500 + 前端吞錯誤(v0.4.1)

背景

2026-07-10 醫院部署 #330 後,病歷 ICD-10 結果按「回報錯誤」→ 按鈕沒反應、視窗不關,回報功能整個失效。

根因分析(時間線):

  1. icd10_feedback 表在 #185 建立(無 provider 欄)。
  2. #317 於 models.py 加入 provider 欄,但 lifespan 手動 migration 只補了 templates.defaultsusers.role/is_active,漏了這欄
  3. Base.metadata.create_all 只建新表、不會 ALTER 舊表 → 醫院機(#302 時期建的 DB)缺欄。
  4. POST /icd10-feedback 帶 provider → SQLite no column named provider500
  5. 前端 IcdErrorReport.tsx 的 catch 註解就寫著 // silent fail —— 錯誤被吞掉,使用者只看到「沒反應」。

開發機 DB 是新的(欄位齊全),所以本機測不到 —— 典型「只在部署機發作」的 schema drift。

變更內容

1. 後端啟動自動補欄位(backend/main.py lifespan)

  • 比照既有 migration 模式:偵測 icd10_feedbackprovider 欄 → 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 入庫)。

沒有任何資料可供顯示

動作

匯出至 PDF Atom