# 5E Windows Service 實作前確認表

本文件承接 [5E Windows Service 邊界分析](phase-five-e-windows-service-boundary-analysis.md)。Windows Service 會涉及作業系統服務生命週期、安裝權限、服務帳號、正式 log / config 路徑與 recovery 行為，因此必須在任何程式 repo 修改前完成確認。

## 0. 文件狀態

| 項目 | 內容 |
|---|---|
| 文件狀態 | 待確認 |
| 建立日期 | 2026-06-07 |
| 對應節點 | 第五階段 5E Windows Service |
| 程式 repo | `hs-device-control-template` |
| 程式 branch | `poc/nmodbus-tcp` |
| 程式基準 | `c92342b` |
| 本文件是否授權程式修改 | 尚未；需等待使用者回覆七項皆同意 |

## 1. 實作前七項確認

| 編號 | 確認項 | 建議決策 |
|---|---|---|
| 1 | 實作範圍 | 同意 5E 第一批只處理 Windows Service hosting 的最小程式結構、options、測試與文件。 |
| 2 | 啟動模式 | 同意保留既有 console smoke path，新增 service hosting path 時必須可回退且不破壞現有測試。 |
| 3 | 安裝停止線 | 同意本批不自動安裝正式 Windows Service，不執行 service create / delete，不修改正式機器。 |
| 4 | 敏感資訊停止線 | 同意 repo 不保存 service account、密碼、token、正式 IP、正式路徑、正式網域或正式機器名稱。 |
| 5 | Recovery / log / config | 同意先以非敏感 options 與文件定義候選行為，正式 recovery、log path 與 config path 需另行驗收。 |
| 6 | 測試與驗收 | 同意實作後至少執行 ServiceHost tests、Application tests、solution tests、Windows Service 停止線掃描、污染字串掃描與 commit 前檢查。 |
| 7 | 排除項目 | 同意 5E 不做 DB DDL / formal Apply、WebApi auth / Swagger 程式、外部 DLL 載入、plugin folder 掃描、Adapter public contract 或正式部署權限設定。 |

## 2. 候選變更檔案

| 類型 | 候選檔案 |
|---|---|
| Service options | `src/HS.DeviceControl.ServiceHost/Options/` |
| Hosting / wrapper | `src/HS.DeviceControl.ServiceHost/Services/` 或 `src/HS.DeviceControl.ServiceHost/Hosting/` |
| Startup path | `src/HS.DeviceControl.ServiceHost/Program.cs` |
| Project package | `src/HS.DeviceControl.ServiceHost/HS.DeviceControl.ServiceHost.csproj`，若需新增 package 必須先確認 |
| Tests | `tests/HS.DeviceControl.ServiceHost.Tests` |
| Manual-only docs / script | `docs/` 或 `scripts/`，不得預設安裝正式服務 |

若實作時發現必須新增正式 service account、修改正式機器設定、導入新的 hosting 套件、改變啟動方式、修改部署設定或執行 service install，需停下重新確認。

## 3. 驗收條件

| 項目 | 驗收方式 |
|---|---|
| 既有 console path | 既有 ServiceHost smoke path 不被破壞。 |
| Service hosting contract | 可測試 start / stop / status / failure mapping，不依賴正式 OS service。 |
| Options | 非敏感欄位可驗證，敏感資訊會被拒絕或不寫入 repo。 |
| Manual-only gate | 任何 install / uninstall / start / stop script 預設不執行，需明確 gate。 |
| 停止線 | 掃描確認未新增正式 service account、secret、production path、DB DDL、WebApi auth / Swagger 或外部 DLL 載入。 |
| 測試 | ServiceHost tests、Application tests、solution tests 通過。 |

## 4. 建議回覆格式

若同意進入 5E 第一批 Windows Service 程式實作，建議回覆：

```text
5E Windows Service 實作前確認：
1. 同意
2. 同意
3. 同意
4. 同意
5. 同意
6. 同意
7. 同意
```

## 5. 未確認前停止線

在使用者完成七項確認前，不得修改程式 repo，不得新增 Windows Service package、`UseWindowsService`、hosted service、service installer、安裝腳本、正式 service account、正式 log path、正式 config path 或正式部署設定。
