專案

一般

配置概況

動作

Bug #447

進行中
SC

Phase 2 部署收尾:MAGI context 缺 updated_at 致 500 修復 + build_exe 假成功防呆 + 部署手冊/自啟腳本入版控(tag v0.9.0)

Bug #447: Phase 2 部署收尾:MAGI context 缺 updated_at 致 500 修復 + build_exe 假成功防呆 + 部署手冊/自啟腳本入版控(tag v0.9.0)

是由 Sashiba Chou 於 約 2 個月 前加入.

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

0%

預估工時:

概述

背景

8/12 對接日部署,M2 伺服器 smoke test 出現 9.4b GET /plugin/context?reg_seq= HTTP 500:
magi_service.to_context() 回傳 dict 缺 PluginContextOut 必填欄位 updated_at,FastAPI response 驗證直接炸 500。

這條 bug 的險惡之處:dev 環境測不到——dev 未設 MAGI_BASE/MAGI_API_KEY,MAGI 分支從未 end-to-end 跑過;單元測試也沒拿 PluginContextOut 驗證輸出。M2 上 MAGI 真連線 + 真資料,第一次全鏈路就命中。且 500 發生在「MAGI 成功取到資料之後」,違反契約 v1.0 §4 紅線「MAGI 永不阻擋醫師寫病歷」,屬最高優先修復。

同段時間發現的其他問題與部署收尾一併入票:

  • build_exe.ps1 假成功:pyinstaller 不在 PATH 時 PowerShell 丟 CommandNotFound,但不會更新 $LASTEXITCODE → 三次打包全失敗仍印「打包完成」,exe 根本沒重建(8/12 實測教訓,差點部署到舊殼)
  • 前端 404 文案仍寫「無預跑檢傷資料」(Phase 1 預跑程式語意),Phase 2 已改 MAGI 隨用隨撈
  • TraumaFill exit 11 且畫面就診序號為 -1(哨兵,公告20 §六)時,原文案「請切換病人」會誤導醫師反覆切換(切了也沒用)
  • M2 自啟腳本、Phase 2 整合部署手冊、his_plugin DEPLOY.md、操作介紹簡報未入版控

8/13 協調者指示:各團隊將「部署機成品對應的原始碼」commit 並打 git tag 回報。

變更內容

Backend:MAGI context 500 修復(主修)

  • backend/magi_service.py
  • to_context() 補 updated_at = datetime.now(timezone.utc)(必填欄位;語意=資料新鮮度)
  • 新增 _norm_age():MAGI age 型別寬鬆(int/str/float/爛值)→ 安全轉 int,不可解析 → None(契約 §2.5;免 response 驗證 500)
  • backend/tests/magi_service_test.py
  • 新增 1j:updated_at 非 None(缺了 PluginContextOut 驗證 500;2026-08-12 伺服器實測炸點)
  • 新增 4a:_norm_age 六型別矩陣(39 / "39" / 39.5 / "39.5" → 39;None / "未知" → None)
  • 26/26 PASS

Frontend:文案與哨兵提示

  • frontend/src/app/plugin/page.tsx:404 文案改「查無檢傷資料,請手動填寫」(MAGI Phase 2 語意)
  • frontend/src/lib/plugin-session.tsx:bridgeErrorText() 對 exit 11 + message 含 -1(畫面讀取失敗哨兵)特判 → 「就診序號讀取失敗,非開錯病人,請勿反覆切換病人、改回報資訊室」

打包腳本防呆

  • his_plugin/shell/build_exe.ps1:開頭加 Get-Command pyinstaller 前置檢查,不存在即 exit 1 並提示切 conda 環境(杜絕 CommandNotFound 假成功)

部署資產入版控

  • start_autostart.bat:M2 登入自啟(shell:startup 用;無 pause、不開瀏覽器、minimized 起 backend :8000 loopback + frontend :3000)
  • docs/DEPLOY-Phase2-整合部署手冊.md:M1/M2 機器架構(公告21/22/24)、權限需求表、server 升級/.env/MAGI 對接、工作站 onedir 部署 + Unblock-File、全鏈執行流程、測試清單
  • his_plugin/DEPLOY.md:兩層部署認知 + AEGIS 平台散布評估(config.json 敏感性分析、三種散布模式、key 輪替)——先前完稿未入版控,補提交
  • docs/presentation/:操作介紹簡報(pptx + NotebookLM 講稿 + 8 張截圖;截圖全為 demo 資料,無 PII)

Git tag(協調者 8/13 指示)

  • 本 commit 打 tag v0.9.0:對應 8/12 對接日通過驗證的部署成品(M2 server v0.9.0 含本票熱修;M1 exe v0.9.0 onedir,殼源碼自 #441 未變)

驗收標準

  • python backend/tests/magi_service_test.py → 26/26 PASS
  • python backend/tests/smoke_test.py --base-url http://localhost:8001 → 59/59 PASS(本機 dev 埠)
  • M2 伺服器實測:9.4b 由 FAIL(500)→ PASS(8/12 熱修複驗,49 PASS;唯一 FAIL 為 admin 密碼已改屬預期)
  • M1 實機驗收:SyncHUD 開窗、殭屍防護(關窗後 tasklist 無殘留)、MAGI 檢傷自動帶入(8/12 對接日)
  • 金鑰/.env/PII 不入 git(手冊金鑰皆佔位符;截圖皆 demo 資料)
  • tag v0.9.0 推上 remote,tag 名 + commit 短碼回報協調者

沒有任何資料可供顯示

動作

匯出至 PDF Atom