# 4B WebApi 決策確認紀錄

本文件記錄使用者於 2026-06-06 對第四階段 4B WebApi 目標模式的確認結果，作為 [4B WebApi contract 草案 / 實作前確認表](phase-four-b-webapi-contract-preimplementation-checklist.md) 進入程式實作前的依據。

本次確認不代表同意建立 `ServiceHost`、Plugin Loader、外部 DLL 載入、正式 DB DDL、正式 Apply、認證授權套件、正式部署設定或真實硬體控制。

## 0. 確認狀態

| 項目 | 內容 |
|---|---|
| 文件狀態 | 已確認 |
| 整理日期 | 2026-06-06 |
| 確認日期 | 2026-06-06 |
| 對應階段 | 第四階段 4B WebApi |
| 使用者回覆 | `確認項目依照您的建議` |
| 已完成前置 | 文件 repo 第四階段標準包 commit `400b676` 並 push；Cloudflare Pages 新文件頁 HTTP `200` |
| 後續可進入 | 程式 repo 結構盤點、最小 WebApi 第一版實作、API 測試與 DB 非破壞性驗收 |

## 1. 七項確認結果

| 編號 | 確認項目 | 建議 | 確認結果 |
|---:|---|---|---|
| 1 | 先固定文件 repo 第四階段標準包 | 先 commit / push 現有第四階段標準包。 | 同意，已完成。 |
| 2 | 是否允許新增 WebApi | 允許新增 `HS.DeviceControl.WebApi` 與 WebApi 測試專案。 | 同意。 |
| 3 | WebApi 第一版範圍 | 採最小 API，不先加 auth / middleware / Swagger / 部署設定。 | 同意。 |
| 4 | API 測試方式 | 以本機自動測試與本機啟動驗收為準。 | 同意。 |
| 5 | DB 測試方式 | 先跑非破壞性與 manual gate disabled 測試；真實 DB 另行確認。 | 同意。 |
| 6 | DB 停止線 | 明確禁止 DB DDL、ALTER TABLE、正式 Apply。 | 同意。 |
| 7 | 4C / 4D 邊界 | ServiceHost 與 Plugin Loader 只保留 contract，不在本輪一起實作。 | 同意。 |

## 2. 採用結論

1. 4B 可以進入最小 WebApi 第一版程式實作。
2. WebApi 第一版只作為 HTTP request / response 邊界，透過 `HS.DeviceControl.Application` contract 承接。
3. API 測試需納入驗收，至少包含 route、DTO、錯誤格式、Health、Task、Device Status 與 Schema Preview 邊界。
4. DB 測試先執行非破壞性與 manual gate disabled；真實 DB 測試需另行確認環境與 gate。
5. 本輪不做 ServiceHost、不做 Plugin Loader、不載入外部 DLL、不做 DB DDL / ALTER / Apply。

## 3. 下一步

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

- `HS.DeviceControl.Application` 是否已有可供 WebApi 呼叫的 service / DTO。
- `.sln` 與 `src/` / `tests/` 是否適合新增 WebApi 專案與測試專案。
- API 測試需要的 fake service 是否能維持在測試專案內，不污染 production contract。
- 是否需要新增測試套件；若需要，需先回報套件名稱與原因。

盤點完成後，才進入最小 WebApi 第一版程式修改。
