動作
Feature #385
進行中
SC
醫令外掛 Phase 2:/plugin 前端 — 開窗自動帶入病人脈絡 + 草稿自動暫存/還原(無登入)
Feature #385:
醫令外掛 Phase 2:/plugin 前端 — 開窗自動帶入病人脈絡 + 草稿自動暫存/還原(無登入)
狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-07-28
完成日期:
完成比例:
0%
預估工時:
概述
醫令外掛 Phase 2:/plugin 前端 — 開窗自動帶入病人脈絡 + 草稿自動暫存/還原(無登入)¶
背景¶
接續 Feature #384(Phase 1 backend 外掛 API)。本票實作外掛版前端:薄殼 exe(WebView2)
將開啟的 /plugin 頁面——無會員登入、無側邊欄、無快查,開窗即自動帶入背景預跑程式暫存的
病人脈絡,並以草稿自動暫存防誤關。設計:his_plugin/DESIGN.md §5(本票同步更新)。
變更內容¶
1. frontend/src/app/plugin/page.tsx(新)— 外掛入口¶
-
啟動 URL 定稿:
/plugin#pn=<病歷號>&key=<PLUGIN_API_KEY>[&doctor=<工號>]
參數放 hash:fragment 不進 HTTP 請求行與伺服器 log,金鑰不落地(query 為開發備援) - 並行載入
GET /plugin/context+GET /plugin/draft(X-API-Key) - 三種錯誤畫面:缺參數(請從醫令啟動)/ 金鑰錯誤或伺服器未設鑰 / 連不到伺服器
- 頂欄:病歷號(8 位補零顯示)+ 工號 + 版本徽章「外掛」;無預跑資料時提示手動填寫
- 深色模式跟隨系統
2. frontend/src/components/PluginAssessment.tsx(新)— 外掛版 4 頁籤容器¶
- 與網頁版同構(病史/軟組織/骨骼/檢視與帶回),表單元件全共用
-
context 自動帶入:年齡、性別(M/F/男/女 → Male/Female 正規化)、
檢傷文字走既有parseTriageText自動填欄(病史/過敏/機轉關鍵字判定照舊) - 病安:表單病歷號一律以啟動參數為準,檢傷文字內的病歷號不覆蓋
-
預擷取 ICD 直入檢視頁(免等 AI);兼容完整 predictions 與扁平
[{code, name}]兩種格式 -
草稿自動暫存:任何欄位/病歷文字/ICD 結果變動 → debounce 1.5s →
PUT /plugin/draft;
頂部顯示「 已自動暫存 HH:MM」/「暫存失敗」 - 還原對話框:重開窗發現草稿 → 「還原草稿 / 重新開始」;未決前不啟動 autosave(防互蓋)
3. frontend/src/lib/plugin-session.tsx(新)— 工作階段¶
- 啟動參數解析(hash 優先)、
X-API-Keyheader helper、8 位補零顯示 -
usePluginSession():共用元件的外掛模式開關(網頁版回 null,行為零變) - 型別備忘落實:patientNo 轉 int("00000451"→451);工號維持字串(前導零有語意)
4. frontend/src/components/ReviewTab.tsx(修改,僅一處)¶
- 外掛模式模板改抓
GET /plugin/templates(共用模板 = admin 名下,唯讀) - 一般網頁版路徑完全不動;外掛下 token 為 null → 既有邏輯自然跳過病歷儲存(符合「外掛版不做病歷紀錄」)
5. his_plugin/DESIGN.md — §5.1 標記完成 + 啟動 URL/實作細節定稿¶
驗收標準¶
- Playwright e2e 18 項全 PASS(msedge headless,打 dev 3001→8001):
錯誤畫面×2、頂欄×3、預擷取 ICD 顯示、autosave 落地、context 帶入 draft 驗證×7
(mrn=451/age=55/sex 正規化/history/機轉自由文字/機轉關鍵字/icdResults)、
修改欄位後 draft 更新、重開窗還原對話框、還原後內容保留、測試自清 - 網頁版
/回歸正常(登入畫面 Playwright 檢查) -
npm run buildproduction 編譯 + TypeScript 通過,/plugin路由生成 - ESLint:本票新增/修改檔案零 error 零 warning(既有 3 error 為他檔舊債,不在本票範圍)
- backend 零改動 → smoke test 50 項全 PASS 不變
備註¶
-
smoke_test.py 無需增修:本票未動任何 API endpoint(
/plugin/*已由 #384 第 9 區段覆蓋);
/plugin頁為純瀏覽器端流程,以 Playwright e2e 18 項實測替代(維護規約判定:同 #380 前例) -
版本號不動:外掛前端待 Phase 3(帶回 UI:pywebview 偵測、ICD checkbox+主診斷、
單顆帶回鈕)完成才算功能完整,屆時一併調升 - 手動測試:瀏覽器開
http://<host>:3001/plugin#pn=451&key=<金鑰>&doctor=<工號>
即可模擬 exe 啟動(先以POST /plugin/context/451種資料)
沒有任何資料可供顯示
動作