本文件承接 5F 整合驗收計畫、第五階段剩餘 gate 與完成條件稽核表、5D auth / Swagger 實作工作包與 5E Windows Service 最小實作前最後確認表。
5F 不是新的功能實作節點,而是第五階段總收斂驗收。5D auth / Swagger 已完成使用者七項確認、程式實作、測試、停止線掃描、文件同步與線上驗收;只有在 5E Windows Service 也完成對應確認與實作後,才可執行本表的七項確認。
0. 文件狀態
| 文件狀態 | 待確認 |
|---|---|
| 建立日期 | 2026-06-07 |
| 對應節點 | 第五階段 5F 整合驗收 |
| 程式 repo | hs-device-control-template |
| 程式 branch | poc/nmodbus-tcp |
| 目前程式基準 | c92342b |
| 本文件是否授權程式修改 | 否 |
| 本文件是否表示 5F 可立即執行 | 否;5E Windows Service 程式實作尚未完成 |
1. 進入 5F 前置條件
| 前置條件 | 目前狀態 | 5F 執行前必須補齊 |
|---|---|---|
| 5A PluginLoader | 已完成 metadata-only 最小實作與驗收 | 保留 5A 完成證據與停止線掃描 |
| 外部 DLL manual-only | 已完成 fake verifier 與驗收 | 保留 manual-only 邊界,不在 5F 載入未知 DLL |
| 5B config schema | 已完成 metadata-only schema 與 validator | 保留非敏感 schema,不新增正式 secret |
| 5C DB audit | 已完成 Application 層 audit contract 與 in-memory writer | 保留無 DDL / 無正式 DB 寫入停止線 |
| 5D auth / Swagger | 已完成最小 API key gate、protected controller policy、development-only Swagger、測試、Actions 與線上驗收 | 保留 5D 完成證據,不再把 5D 列為 5F 前置缺口 |
| 5E Windows Service | 最後確認表已建立,程式尚未實作 | 需先取得 5E 七項確認、完成程式實作、ServiceHost tests、solution tests、停止線掃描與驗收紀錄 |
| 文件 repo 線上狀態 | 5D 實作驗收已可追溯;5E 前置文件已可追溯 | 5E 實作後需再同步 README、docs index、首頁、progress / status、public mirror 與線上驗收紀錄 |
2. 5F 七項確認
| 編號 | 確認項 | 同意內容 |
|---|---|---|
| 1 | 前置節點完成 | 同意 5F 只在 5A、外部 DLL manual-only、5B、5C、5D、5E 都完成實作與驗收後執行。 |
| 2 | 全量測試 | 同意執行 dotnet test HS.DeviceControl.sln --no-restore,並保留 Application、WebApi、ServiceHost、Infrastructure.MySql 分項測試證據。 |
| 3 | API / Service 邊界 | 同意驗收 WebApi auth / Swagger 與 ServiceHost hosting 不破壞既有 route、result mapping、console smoke path 與 runtime tests。 |
| 4 | 安全停止線 | 同意掃描並確認 repo 不保存正式 API key、password、client secret、token、正式 IP、正式 port、正式 path、正式 service account 或正式機器名稱。 |
| 5 | DB / Loader 停止線 | 同意確認 5F 不執行 DB DDL、ALTER TABLE、formal Apply、正式 DB 寫入、外部 DLL 載入、plugin folder 掃描或 Adapter public contract 變更。 |
| 6 | 文件與線上驗收 | 同意 5F 完成後更新 README、docs README、首頁、progress / status、public mirror、第五階段完成稽核表與線上驗收紀錄。 |
| 7 | 排除項目 | 同意 5F 不新增功能、不修改部署 secret、不安裝 Windows Service、不連正式 DB、不導入真實硬體控制,也不擴大到 5D / 5E 以外的新系統邊界。 |
3. 5F 驗收命令與證據
| 類型 | 命令 / 證據 | 通過條件 |
|---|---|---|
| 全量測試 | dotnet test HS.DeviceControl.sln --no-restore | 全 solution 測試通過 |
| Application | dotnet test tests\HS.DeviceControl.Application.Tests\HS.DeviceControl.Application.Tests.csproj --no-restore | 5A / 5B / 5C contract 不被 5D / 5E 污染 |
| WebApi | dotnet test tests\HS.DeviceControl.WebApi.Tests\HS.DeviceControl.WebApi.Tests.csproj --no-restore | auth / Swagger 與既有 controller tests 全部通過 |
| ServiceHost | dotnet test tests\HS.DeviceControl.ServiceHost.Tests\HS.DeviceControl.ServiceHost.Tests.csproj --no-restore | console smoke path 與 service hosting tests 通過 |
| Infrastructure.MySql | dotnet test tests\HS.DeviceControl.Infrastructure.MySql.Tests\HS.DeviceControl.Infrastructure.MySql.Tests.csproj --no-restore | DB audit 相關測試通過,未依賴正式 DB |
| 停止線掃描 | 搜尋 DDL、production Swagger、Windows Service install、external DLL loading、plugin folder scan、secret 與正式環境字串 | 不命中未授權新增項 |
| 污染掃描 | 使用既定污染關鍵字清單掃描 repo | repo 內未找到污染字串 |
| 文件鏡像 | 比對 docs/ 與 public/docs/ 對應檔案 hash | public mirror 與來源文件一致 |
| 線上驗收 | Cloudflare Pages 首頁、5F 頁、status.json、progress.json | 線上內容可追溯到最新 commit |
4. 5F 完成後應建立的文件
| 文件 | 目的 |
|---|---|
phase-five-f-integration-acceptance-record.md | 記錄 5F 實際驗收命令、結果、停止線掃描與限制 |
phase-five-final-completion-audit.md | 逐項確認 5A 到 5F 是否均完成並可標記第五階段完成 |
phase-five-final-online-acceptance-record.md | 記錄文件網站、首頁、status / progress、public mirror 與部署狀態 |
開發進度總覽.md 更新版 | 將第五階段狀態從進行中改為完成,前提是 5F 驗收通過 |
5. 建議回覆格式
5F 整合驗收執行前確認: 1. 同意 2. 同意 3. 同意 4. 同意 5. 同意 6. 同意 7. 同意
6. 未達條件前停止線
在 5E 程式實作與驗收完成前,不得執行 5F,不得宣告第五階段完成,不得以 5F 名義新增功能、連正式 DB、執行 DDL、安裝 Windows Service、載入外部 DLL、保存正式 secret 或修改外部服務設定。