動作
Bug #436
進行中
SC
修復對接日 onedir 開窗崩潰(MOTW)+ log/exit 一致 + E6 官方 mock 複驗 41/41 + onedir 打包交付(v0.8.5 實機日版)
Bug #436:
修復對接日 onedir 開窗崩潰(MOTW)+ log/exit 一致 + E6 官方 mock 複驗 41/41 + onedir 打包交付(v0.8.5 實機日版)
狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-08-10
完成日期:
完成比例:
0%
預估工時:
概述
修復 onedir 開窗崩潰(MOTW)+ log/exit 一致 + E6 官方 mock 複驗 41/41 + onedir 打包交付(v0.8.5 實機日版)¶
背景¶
跨專案協調公告第 12–15 號:TraumaFill 帶回鏈第 2 步「對接日」與第 3 步「實機日」
前置。本票收尾三件事:①E6 以 TraumaPrefill 官方 mock 複驗;②對接日在真實醫院
工作站首次執行到開窗即崩潰的診斷與修復;③打包形式從 onefile 改 onedir(防毒)
並補齊 metadata。對接日九測項已於 2026-08-10 全數通過。
變更內容¶
1. 對接日開窗崩潰修復(阻擋性,真因 = Mark of the Web)¶
- 現場 onedir 版開窗即崩
Failed to resolve Python.Runtime.Loader.Initialize。
逐一排除三根因(AppData 網路重定向 / onedir 漏收 pythonnet runtime / .NET
Framework 版本),真因為 MOTW:dll 經跨機搬運被 Windows 貼 Zone.Identifier,
.NET netfx loader 拒載 →Unblock-File -Recurse解除即成功。 -
build_exe.ps1打包完成提示加註 MOTW/Unblock-File 步驟(每次打包必顯示);
CI/共享路徑部署可免。 - 打包強化
--collect-all pythonnet --collect-all clr_loader(對方判定非必要,
保留無妨:排除「漏收 runtime」這條根因、防未來回歸)。
2. log/exit 一致修復(公告 14 #3)¶
- 開窗前的 log 不再預言
exit 4(崩潰時會留下看似成功的假記錄)。 -
webview.start()包 try/except:崩潰時把完整 traceback 寫入 plugin.log、
exit 1,不留誤導的 exit 4 —— 這份 log 即現場遠端診斷的關鍵線索。
3. E6 官方 mock 複驗(公告 12–14)¶
- 測試對手戲由自製 mock 換為 TraumaPrefill 官方 mock v1.1(觸發字
MOCKSKIP/MOCKWARN/MOCKERR、環境變數 MOCK_DRYRUN/MOCK_EXIT/MOCK_NO_SCREEN/
MOCK_PATIENT)。複驗抓到一處真分歧並修正:預檢有問題碼時官方回 exit 14 +
結果 JSON,client 原只在 exit 0 解析 → 改 0/14 皆解析(否則最需預警時失效)。 - 新增測項:預檢 exit 14 帶問題碼、patientNoMatch:false 丟棄降級、NO_SCREEN 降級。
4. 合約新條款測項¶
- 條款 12(BOM 容忍):帶 BOM 的 payload 官方 mock 正常受理(防回歸)。
-
條款 13(絕對路徑):send_payload / validate_diags 傳給 TraumaFill 的
JSON 路徑均為絕對路徑(防回歸)。 - errorCount 機器欄位優先於摘要「錯N」比對(公告 11 E2b)。
5. onedir 打包基礎設施(公告 13 定為永久形式)¶
-
build_exe.ps1改--onedir --noupx --version-file(onefile 自解壓到 %TEMP%
像 dropper 是防毒誤刪主因);新增gen_version.py產生三支 exe 的版本 metadata。 - 部署佈局
%LOCALAPPDATA%\ERTools\{ER_note_NG,make_test_payload,traumafill_probe}\;
exe 與 _internal\ 不可分家;config.json 與 ER exe 同層。 - 含中文的 .ps1 補 UTF-8 BOM(PowerShell 5.1 以 big5 解讀會亂碼)。
6. 官方交付契約文件納入版控¶
- schema_output.json(權威契約)、ER_note_NG_對接規格.md、Python 對接範例.md、
sample_451.json、官方 mock_traumafill.py、TraumaPrefill_專案簡介.md;
DESIGN.md §6.1 加權威文件順序指引 + 條款 12/13 + MOTW。
驗收標準¶
-
E6 官方 mock 合約測試
test_contract_v11.py41 項全 PASS -
啟動回歸
test_startup.py69 項全 PASS(SyncHUD 啟動碼 0–5、#3 log/exit) - 對接日九測項於真實醫院工作站全數通過(2026-08-10)
-
MOTW 崩潰經 Unblock-File 解除、開窗成功;實機日版 onedir 已重打包
(v0.8.5、pythonnet 收齊)並交付現場 -
本票僅 his_plugin 薄殼 + 對接文件,backend/前端零改動 →
smoke_test 門檻不適用(相關測試為 his_plugin 41+69) - 實機日:DryRun 全鏈關卡 → validateDiags 預檢 → 醫師手動真填 → 路徑 B 掃描
沒有任何資料可供顯示
動作