# 4C ServiceHost 決策確認紀錄

本文件記錄使用者於 2026-06-06 對第四階段 4C ServiceHost 目標模式的確認結果，作為 [4C ServiceHost contract 草案 / 實作前確認表](phase-four-c-servicehost-contract-preimplementation-checklist.md) 進入程式 repo 結構檢查與最小 ServiceHost 第一版實作前的依據。

本次確認不代表同意建立 Windows Service 安裝、外部 queue、Plugin Loader、外部 DLL 載入、正式 DB DDL、正式 Apply、正式部署設定、敏感資訊保存或真實硬體控制。

## 0. 確認狀態

| 項目 | 內容 |
|---|---|
| 文件狀態 | 已確認 |
| 整理日期 | 2026-06-06 |
| 確認日期 | 2026-06-06 |
| 對應階段 | 第四階段 4C ServiceHost |
| 使用者回覆 | `4C 決策確認：1. 同意 ... 7. 同意` |
| 已完成前置 | 4C ServiceHost contract 草案 / 實作前確認表已建立 |
| 後續可進入 | 程式 repo 結構檢查、預計修改檔案回報、最小 ServiceHost 第一版實作與測試 |

## 1. 七項確認結果

| 編號 | 確認項目 | 建議 | 確認結果 |
|---:|---|---|---|
| 1 | 4C 先以 ServiceHost contract 草案 / 實作前確認為準 | 同意後才可把 contract 文件視為 4C 起點。 | 同意。 |
| 2 | ServiceHost 第一版只做背景入口，不提供 HTTP | HTTP route 仍屬 WebApi。 | 同意。 |
| 3 | 第一版採 console / Generic Host 風格，不先做 Windows Service 安裝 | 降低 OS service、部署權限與服務註冊風險。 | 同意。 |
| 4 | ServiceHost 只呼叫 Application contract，不寫 Workflow / Node 邏輯 | 維持 Core / Application / Host 邊界。 | 同意。 |
| 5 | Adapter lifecycle 先用 mock / 已確認邊界驗證，不接真實硬體 | 禁止真實 PLC、COM、TCP、UDP、Modbus 連線。 | 同意。 |
| 6 | DB / Schema 只允許非破壞性 preview / readiness，不做 DDL / Apply | 避免啟動時修改 DB。 | 同意。 |
| 7 | 進入程式實作前，需先做程式 repo 結構檢查並回報新增 / 修改檔案 | 使用者確認後才可新增 ServiceHost 專案與測試。 | 同意。 |

## 2. 採用結論

1. 4C 可以進入程式 repo 結構檢查。
2. 最小 ServiceHost 第一版的目標是背景 lifecycle、health summary、Adapter lifecycle 驗證與安全停止線，不做正式部署。
3. ServiceHost 不提供 HTTP；HTTP request / response 邊界仍由 4B WebApi 負責。
4. ServiceHost 只透過 `HS.DeviceControl.Application` contract 與已確認的 Adapter 邊界協調，不寫 Workflow / Node 邏輯。
5. DB / Schema 只做非破壞性 readiness / preview；不執行 DDL、ALTER TABLE、Apply 或正式 DB 寫入。
6. 真實 DB、真實硬體、Windows Service 安裝、外部 queue 與 Plugin Loader 均需另行確認。

## 3. 下一步

依本確認紀錄，下一步先盤點程式 repo：

- `HS.DeviceControl.Application` 是否已有可供 ServiceHost 呼叫的 Task / Device / Health / Schema contract。
- `.sln` 與 `src/` / `tests/` 是否適合新增 ServiceHost 專案與測試專案。
- 是否能在不新增外部套件的前提下完成 console / Generic Host 風格背景入口。
- ServiceHost tests 是否能用 fake Application service 與 mock Adapter 驗證 lifecycle，不污染 production contract。

盤點完成後，需先回報預計新增 / 修改檔案與原因，再進入最小 ServiceHost 第一版程式修改。
