動作
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)
狀態:
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 短碼回報協調者
沒有任何資料可供顯示
動作