專案

一般

配置概況

動作

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 實機日版)

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

狀態:
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.py 41 項全 PASS
  • 啟動回歸 test_startup.py 69 項全 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 掃描

沒有任何資料可供顯示

動作

匯出至 PDF Atom