第四階段 4B / 4C / 4D 執行切分表

返回

第四階段 4B / 4C / 4D 執行切分表

本文件承接 4A WebApi / ServiceHost / Plugin Loader 邊界分析4A WebApi / ServiceHost / Plugin Loader 決策確認表,用來回答 WebApi、ServiceHost、Plugin Loader 預計在哪個階段進入正式執行。

本文件只整理第四階段路線切分,不代表已同意新增 WebApi 專案、ServiceHost 專案、Plugin Loader、外部 DLL 載入、API route、Controller、middleware、背景服務套件、認證授權套件、config schema 調整、public method 簽章變更、正式 DB DDL 或真實硬體控制。

1. 結論

功能預計執行階段第一個輸出程式實作條件
WebApi4BWebApi contract 草案 / 實作前確認表使用者確認 API route、DTO、權限、錯誤格式與停止線後,才可建立 HS.DeviceControl.WebApi
ServiceHost4CServiceHost contract 草案 / 實作前確認表使用者確認背景生命週期、Adapter lifecycle、Health、Log / Trace、部署方式與停止線後,才可建立 HS.DeviceControl.ServiceHost
Plugin Loader4DPlugin Loader 信任模型與 metadata contract 草案 / 實作前確認表使用者確認來源信任、版本、簽章、隔離、卸載、回復策略與停止線後,才可建立 Loader 或載入外部 DLL。

建議順序維持:

```text

4A 前置確認

-> 4B WebApi

-> 4C ServiceHost

-> 4D Plugin Loader

```

2. 為什麼不是 4A 直接實作

4A 的職責是把第三階段完成的 HS.DeviceControl.Application 放到正式平台視角檢查,確認 WebApi、ServiceHost、Plugin Loader 是否都應透過同一個 Application contract 承接任務控制、設備狀態、Schema Preview、Health、多設備單元、Resource Lock、Command Queue 與 Plugin metadata。

如果 4A 直接新增正式入口,會讓 API route、背景服務啟動方式、Plugin trust model、設定來源與部署規則在尚未定案時成為外部契約。這會增加後續返工,也可能讓 Workflow、Adapter、DB gateway 或 Plugin Loader 的責任邊界混在一起。

3. 階段切分總表

階段主題可做事項不做事項完成基準
4A正式入口前置確認邊界分析、七項決策確認、4B / 4C / 4D 切分。不新增正式入口、不新增 route、不建立 Loader、不改 public method 簽章、不改 config schema。4A 決策確認表完成,並明確排定 WebApi、ServiceHost、Plugin Loader 的後續階段。
4BWebApiAPI contract、request / response DTO、錯誤格式、權限模型、route 候選、Application service mapping、實作前確認。不直接操作 Core / Adapter / DB gateway;不做 DB DDL / ALTER / Apply;不導入 ServiceHost 或 Plugin Loader。WebApi contract 草案與決策確認已完成;可先盤點程式 repo 後進入最小 WebApi 第一版實作。
4CServiceHost背景生命週期、任務協調、Adapter lifecycle、Health、Log / Trace、Operator / HostName / AppVersion、部署模型、實作前確認。不提供 HTTP、不與 WebApi 混責;未確認前不新增 ServiceHost 專案或 Windows Service。ServiceHost contract 草案與實作前確認表完成;使用者確認後才可進程式實作。
4DPlugin Loader信任來源、版本、簽章、metadata、registration、錯誤隔離、卸載與回復策略、實作前確認。不掃描 plugin folder、不載入外部 DLL、不執行外部程式碼;未確認前不新增 Loader。Plugin Loader 信任模型與 metadata contract 草案完成;使用者確認後才可進 Loader 實作。

4. 4B WebApi 執行邊界

WebApi 預計放在 4B,原因是 HTTP 入口會變成外部系統或現場工具依賴的契約,必須先固定 API 類型、權限、錯誤格式、DTO 與 Application service mapping。

項目4B 建議內容
入口定位遠端任務控制、查詢、取消、狀態、Health 與 Trace 查詢的 HTTP 邊界。
只允許呼叫HS.DeviceControl.Application contract。
不允許Controller 直接寫 Workflow / Node 邏輯、直接操作 Adapter、直接碰 DB gateway。
主要前置API route 候選、DTO 命名、錯誤格式、權限模型、Log / Trace 對應。
程式實作條件使用者已確認 4B WebApi contract 草案 / 實作前確認表4B WebApi 決策確認紀錄;下一步需先盤點程式 repo。

5. 4C ServiceHost 執行邊界

ServiceHost 預計放在 4C,原因是背景常駐入口會牽涉啟動方式、生命週期、部署、重啟恢復、Adapter 連線管理與 Health。這些規則需要在 WebApi 的 HTTP 契約穩定後再切出來,避免背景服務同時承擔 HTTP 邊界。

項目4C 建議內容
入口定位正式背景執行入口,負責任務協調、Adapter lifecycle、Health、Log / Trace。
只允許呼叫HS.DeviceControl.Application contract 與經確認的 Adapter 管理邊界。
不允許ServiceHost 同時提供 HTTP、直接承擔 API route、把流程邏輯寫進 Host。
主要前置背景生命週期、啟停策略、健康檢查、重啟恢復、operator、host name、app version。
程式實作條件使用者確認 4C ServiceHost contract 草案 / 實作前確認表

6. 4D Plugin Loader 執行邊界

Plugin Loader 預計放在 4D,原因是它風險最高,牽涉外部 DLL 來源、版本、簽章、隔離、卸載與錯誤回復。3D 已完成 Plugin metadata 與多設備單元 Application contract,但 metadata 不等於可以執行外部程式碼。

項目4D 建議內容
入口定位外部設備模組或 plugin 的信任、版本、metadata、registration 與載入策略。
可沿用基礎3D 的 Plugin metadata、ControlUnit、Resource Lock、Command Queue 與 Application error code。
不允許未確認前掃描 plugin folder、載入外部 DLL、執行外部程式碼。
主要前置信任來源、簽章、版本相容、隔離策略、卸載策略、失敗回復、審計紀錄。
程式實作條件使用者確認 4D Plugin Loader 信任模型與 metadata contract 草案 / 實作前確認表

7. 建議產出順序

順序文件 / 節點目的
14A 決策確認結果回填把使用者七項同意或調整回填到 4A 決策確認表。
2第四階段標準 / 文件 / 施作範圍 / 驗收條件總表固定第四階段總標準、文件清單、可施作項目與驗收條件。
3第四階段目標模式完成稽核表確認本輪文件型標準包已收斂,並保留後續程式實作停止線。
44B WebApi contract 草案 / 實作前確認表已建立,固定 API route 候選、DTO、錯誤格式、權限與停止線。
54B WebApi 決策確認表已確認,使用者同意採用建議路線並允許最小 WebApi 實作。
64B WebApi 第一版實作下一步,先盤點程式 repo,再建立最小 WebApi 專案與測試。
74C ServiceHost contract 草案 / 實作前確認表固定背景生命週期、Adapter lifecycle、Health、Log / Trace 與部署邊界。
84C ServiceHost 決策確認表由使用者逐項確認是否允許進入最小 ServiceHost 實作。
94C ServiceHost 第一版實作只在確認後建立最小背景入口與測試。
104D Plugin Loader 信任模型與 metadata contract 草案固定信任、版本、簽章、隔離與錯誤回復策略。
114D Plugin Loader 決策確認表由使用者逐項確認是否允許進入 Loader 實作。
124D Plugin Loader 第一版實作只在確認後建立 Loader;外部 DLL 載入仍需視信任模型逐步開放。

8. 停止線

在 4B / 4C / 4D 任一實作前確認完成前,仍需停止:

9. 建議下一步

4A / 4B 切分線上驗收已通過,4B WebApi contract 草案與決策確認已建立。下一步建議先唯讀盤點程式 repo 的 Application contract、solution 結構與測試專案,再進入最小 WebApi 第一版實作。

原因是 WebApi 是外部控制與查詢入口,會先決定 route、DTO、權限與錯誤格式;ServiceHost 與 Plugin Loader 可以在此基礎上保持分責,避免背景服務與外部 DLL 載入過早擴大範圍。