第三階段執行儀表板

回到 docs

第三階段執行儀表板

本文件承接 第三階段前置規劃TaskTraceStore public 查詢介面實作前確認ManualApplyPreview 實作前確認,用來把第三階段拆成可執行、可驗收、可顯示在首頁專案總攬的主線。

本文件只整理第三階段執行項目與狀態,不代表已同意導入 WebApi、ServiceHost、Plugin Loader、正式 DB Apply、外部 DLL 載入、真實硬體控制或修改 public method 簽章。

第三階段定位

第三階段的核心目標不是一次完成完整平台,而是把第一階段控制核心與第二階段 MySQL / Trace / Schema Automation 基礎,逐步接到正式平台入口前的必要能力。

第三階段應遵守以下原則:

第三階段總覽

主線目標目前狀態下一個可執行項目
3A Trace 查詢能力讓未來 Debug Tool、ServiceHost 或 WebApi 可查任務 trace。已完成真實測試 DB write/read/cleanup 補驗已收斂,作為 3B 前置基礎。
3B DB 初始化安全流程讓 Host 啟動前可檢查、預覽 schema 差異,但不直接正式 Apply。第一版完成稽核與線上驗收已完成可另行確認真實 DB read-only preview 驗證。
3C 正式執行入口規劃 ServiceHost / WebApi 的任務啟動、查詢、取消與設備狀態 API。Application contract 線上驗收已完成commit aee6ab6 已推送,文件網站已完成 3C 線上內容比對。
3D 平台化擴充規劃 Plugin DLL、多設備單元、Resource Lock、Command Queue 與設定版本控管。Application contract 第一版已完成已完成 3D Plugin / 多設備單元邊界分析3D Plugin / 多設備單元決策確認表3D contract 草案 / 實作前確認表3D contract 決策確認表3D 程式 repo 結構檢查3D 程式 repo 結構檢查線上驗收紀錄3D Application contract 草案 / 實作前確認表3D Application contract 決策確認表3D Application contract 第一版實作紀錄3D Application contract commit / push 前確認3D 完成稽核表

3A Trace 查詢能力

目標

讓系統能用標準 read-side contract 查詢 task_log_traces,作為未來 Debug Tool、ServiceHost、WebApi 與資料庫儀表板的共同基礎。

已完成

項目狀態說明
task_log_traces schema已完成第二階段 B 已完成 schema class、測試 DB DDL 與 comment / index 驗證。
MySqlLogWriter已完成已可寫入 trace,並具備 sanitizer 與 fallback。
真實測試 DB 寫入 / 查詢 / cleanup已完成manual-only 驗證已完成。
查詢邊界設計已完成已定義 read-side 角色、查詢條件、SQL 安全與停止線。
public 查詢介面實作前確認已完成已整理 request / result model 候選、驗證規則、錯誤碼與測試策略。
程式 repo 命名與 DTO 位置盤點已完成已確認 Core Result 非泛型、MySQL infrastructure 採同步 Store / Gateway / SQL Builder 慣例,建議 ITaskTraceStore 與 DTO 放在 Core.Logging
ITaskTraceStore public contract已完成使用者已同意 5 點,程式 commit f2958d3 已新增 contract 與 DTO。
fake gateway 查詢實作已完成已完成 MySqlTaskTraceStore、參數化 SQL、HasMore 分頁、遮罩與錯誤測試。
manual-only 查詢驗證入口已完成程式 commit a9c9eca 已新增 gated xUnit 與 runner,預設不連 DB。
read-only 候選探查腳本已完成程式 commit 2c817ec 已新增 run-mysql-tasktrace-candidate-probe.ps1,固定 ExpectedMinRows=0 供正式補驗前找出可用 TaskId
read-only 候選探查結果已執行未命中使用者於 2026-06-04 執行 2026-01-01 至 2026-06-04 查詢,Success=TrueItemCount=0HasMore=False、2 個 manual 測試通過。
write/read/cleanup 補驗入口已完成程式 commit fa874f4 已新增 run-mysql-tasktrace-write-read-cleanup-validation.ps1,需同時確認 AllowWriteAllowReadCleanup
write/read/cleanup 補驗結果已完成已在測試 DB 寫入 2 筆 manual-tasktrace-e2e- trace、TaskTraceStore 查回 2 筆、HasMore=False、cleanup 刪除 2 筆。

驗證結果

順序項目產出是否需先確認
3A-1真實測試 DB read-only 查詢驗證已執行 SELECT 且 Success=True,但原測試 DB ItemCount=0;此為補驗前背景,後續 write/read/cleanup 已收斂已回填限制。
3A-2read-only 候選探查2026-01-01 至 2026-06-04 查詢 Success=TrueItemCount=0已確認測試 DB 無既有 trace rows。
3A-3write/read/cleanup 補驗寫入 2 筆 manual trace、查回 2 筆、cleanup 刪除 2 筆已完成。
3A-4驗證結果回填已同步首頁、進度總覽、第三階段儀表板與驗證紀錄已完成。

停止線

3B DB 初始化安全流程

目標

讓 ConsoleHost / 未來 ServiceHost 在啟動前可以檢查 schema 狀態、產生 preview 與風險摘要,但不直接正式執行 DDL。

已完成 / 待驗證

順序項目產出是否需先確認
3B-1ManualApplyPreview 實作前確認已完成 ManualApplyPreview 實作前確認,整理 preview model、風險分類、輸出格式與停止線已完成。
3B-2決策確認使用者已依 3B ManualApplyPreview 決策確認表 同意七項決策已完成。
3B-3Apply preview model 實作程式 commit 13c14ca 已新增 preview model、PlanHashCanApply=FalseBlockedLow/Medium/High/Critical 風險分級已完成。
3B-4Dry-run preview 輸出實作已輸出 SQL preview 與風險摘要,不執行 DDL,不開放正式 Apply已完成。
3B-5ConsoleHost 顯示與人工驗證dotnet run 已確認輸出 PlanHashCanApply=FalseRisk=LowBlocked=False 與 SQL preview已完成。
3B-6真實 DB read-only preview 驗證尚未執行;需另行確認連線資訊、密碼環境變數與 read-only gate,不得執行 DDL需要先確認。
3B-7完成稽核表已完成 ManualApplyPreview 3B 完成稽核表,判定第一版可驗收完成已完成。
3B-8線上驗收紀錄已完成 ManualApplyPreview 3B 線上驗收紀錄,確認 Cloudflare Pages 首頁、稽核頁與 status.json 已反映 3B 狀態已完成。

停止線

3C 正式執行入口

目標

規劃未來正式背景服務與遠端 API 的責任邊界,讓 Server 能啟動任務、查詢任務、取消任務、查設備狀態,但不破壞 Core / Adapter 分層。

已完成 / 待確認

項目目的備註
ServiceHost 邊界分析決定背景常駐、重啟恢復、健康檢查與 log 策略。已完成 3C Service / API 邊界分析,先分析,不建專案。
WebApi 邊界分析決定 Task Control API、Device Status API、查詢 API 與權限。已完成候選 API 類型與停止線整理,先分析,不建 endpoint。
Application Service 邊界分析釐清 ServiceHost 與 WebApi 共用的任務控制、Trace 查詢、設備狀態與 schema preview 協調層。已完成候選服務整理,但是否新增 contract 需另行決策。
3C 決策確認表將 Application Service、ServiceHost、WebApi、Task Control、Device Status、Schema Preview 與停止線整理成七項確認。使用者已同意七項決策,程式 repo 結構檢查與實作前確認已完成。
程式 repo 結構檢查與實作前確認唯讀盤點 Solution、既有 Core / Adapter / Infrastructure 能力、尚未存在的 Application / ServiceHost / WebApi 邊界與候選檔案。已完成 3C 程式 repo 結構檢查與實作前確認,不改程式、不新增專案。
Application Service contract 草案 / 實作前確認表將新增 Application 專案、引用方向、Task Control、Device Status、Schema Preview、Health 與停止線整理成七項確認。已完成 3C Application Service contract 草案 / 實作前確認表,且已整理 3C Application contract 決策確認紀錄
Application contract 第一版實作新增 Application 專案、測試專案、Task / Device / Schema / Health contract 與薄 service。已完成 3C Application contract 第一版實作紀錄,Application tests 15 passed,solution tests 453 passed。
3C 完成稽核確認 3C 是否符合已確認範圍、測試與停止線。已完成 3C Application contract 完成稽核表
3C commit / push 前確認確認程式 repo 與文件 repo 的變更範圍、測試證據、停止線與建議 commit 訊息。已完成 3C Application contract commit / push 前確認
3C 線上驗收紀錄確認文件 repo push 後,Cloudflare Pages 首頁、第三階段儀表板、3C 提交前確認頁與 status.json 已反映 3C 狀態。已完成 3C Application contract 線上驗收紀錄
API / Service 驗證節點設計定義何時需要人工驗證效果。已透過 3C Application contract 第一版驗證節點完成程式測試與停止線確認;WebApi / ServiceHost 驗證仍需另行確認後才可建立。
操作身分與權限模型確認 Operator、HostName、AppVersion 與授權策略。已列為尚待決策,會影響正式使用流程。

停止線

3D 平台化擴充

目標

讓共用骨架未來可支援外部 DLL、真實設備模組、多設備單元共用控制主機、資源鎖與命令佇列。

已完成 / 待執行

項目目的備註
3D 邊界分析釐清外部 DLL、多設備單元、Resource Lock、Command Queue、設定版本與停止線。已完成 3D Plugin / 多設備單元邊界分析,不載入 DLL、不改程式。
3D 決策確認表將多設備單元命名、Resource Lock、Command Queue、Plugin metadata、Adapter contract 與停止線整理成七項確認。使用者已同意七項決策;已回填 3D Plugin / 多設備單元決策確認表
3D contract 草案 / 實作前確認表將多設備單元 DTO、Resource Lock、Command Queue、Plugin metadata、Adapter contract 穩定性、測試策略與停止線整理成七項確認。已確認 3D contract 草案 / 實作前確認表
3D contract 決策確認表將 3D contract 七項決策整理成可逐項回覆的確認表。使用者已同意七項決策;已回填 3D contract 決策確認表
3D 完成稽核表對照目標模式要求,列出已完成文件、停止線與後續 stage / commit / push / 部署查驗。已完成 3D Plugin / 多設備單元完成稽核表,判定 3D contract 前置節點可驗收。
3D 線上驗收紀錄記錄文件 repo push 後 Cloudflare Pages 首頁、第三階段儀表板、3D 稽核頁、3D contract 決策頁與 status.json 的線上比對。已完成 3D Plugin / 多設備單元線上驗收紀錄
3D 程式 repo 結構檢查唯讀盤點 HS.DeviceControl.Application、Adapter dispatcher、config schema 與 plugin loader 停止線。已完成 3D 程式 repo 結構檢查與實作前確認,判定可進入 Application contract 實作前確認。
3D 程式 repo 結構檢查線上驗收記錄 commit 8ce2717 push 後,Cloudflare Pages 首頁、新結構檢查頁、第三階段儀表板與 status.json 的線上比對。已完成 3D 程式 repo 結構檢查線上驗收紀錄
3D Application contract 草案將 ControlUnits、Resources、Commands、Plugins、Application error code 與測試策略整理成七項確認。已完成 3D Application contract 草案 / 實作前確認表,使用者已確認七項決策。
3D Application contract 決策確認表將使用者 1 至 7 全部同意的結果整理成獨立確認紀錄。已完成 3D Application contract 決策確認表,仍保留不新增 ServiceHost / WebApi、不建立 Plugin Loader、不載入 DLL、不改 Adapter public contract、不改 config schema 的停止線。
3D Application contract 第一版實作在 Application 層新增 ControlUnits、Resources、Commands、Plugins、APP-03xx 與 xUnit 測試。已完成 3D Application contract 第一版實作紀錄,程式 repo commit a158551 已 push,Application tests 30 passed,solution tests 468 passed。
3D Application contract commit / push 前確認確認 staged 範圍、測試、污染掃描、commit 訊息、push 與 Actions。已完成 3D Application contract commit / push 前確認Notify docs repo status run 27029042871 success。
3D Application contract 完成稽核對照 3D 目標模式,確認程式、文件、測試、Actions 與停止線。已更新 3D Plugin / 多設備單元完成稽核表,判定可進入文件 repo push 與線上驗收。
第三階段總收斂確認集中確認 3A、3B、3C、3D 是否都已在核准範圍內完成。已建立 第三階段總收斂確認表,判定第三階段可正式標記完成,停止線保留到第四階段。
4A 邊界分析釐清 WebApi、ServiceHost、Plugin Loader、Application 共用協調層、部署維運與停止線。已建立 4A WebApi / ServiceHost / Plugin Loader 邊界分析,不代表新增正式入口或載入外部 DLL。
4A 決策確認表逐項確認 WebApi、ServiceHost、Plugin Loader、Application 共用協調層、部署維運與停止線。已建立 4A WebApi / ServiceHost / Plugin Loader 決策確認表,等待使用者回覆七項決策。
4B / 4C / 4D 執行切分排定 WebApi、ServiceHost、Plugin Loader 的後續階段。已建立 第四階段 4B / 4C / 4D 執行切分表,暫定 WebApi 在 4B、ServiceHost 在 4C、Plugin Loader 在 4D。
多設備單元模型釐清 ControlUnitId / StationId / DeviceId 關係。已納入 3D 決策確認表。
Resource Lock / Command Queue避免多設備或多任務同時搶同一資源。先確認 contract 與 fake / in-memory 邊界,不導入 queue 套件。
Plugin Loader 邊界分析決定 DLL 載入、版本、相依套件與失敗隔離。本次只分析,不載入 DLL;後續需另行確認。
設定版本與回滾讓 JSON 流程或設備設定變更可審核、追蹤、回復。先分析,不改 config schema。

停止線

建議首頁顯示方式

首頁只顯示第三階段四條主線:

主線狀態下一步
3A Trace 查詢能力已完成真實測試 DB write/read/cleanup 補驗已可收斂,下一步進入 3B。
3B DB 初始化安全流程第一版完成稽核與線上驗收已完成可另行確認真實 DB read-only preview 驗證。
3C Service / API 入口Application contract 線上驗收已完成commit aee6ab6 已推送,文件網站已完成 3C 線上內容比對。
3D Plugin / 多設備單元Application contract 第一版已完成程式 repo commit a158551 已 push,Application tests 30 passed,solution tests 468 passed;可交棒到 4A 邊界分析。

完整細節放在本文件,避免首頁再次變成大量卡片。

建議下一步

3A、3B、3C 與 3D 皆已完成第三階段主要收斂項目。第三階段總收斂確認表 已建立,判定第三階段可正式標記完成。停止線仍明確保留不載入外部 DLL、不新增 Plugin Loader、不改 Adapter public contract、不新增 ServiceHost / WebApi 專案、不新增 route、不導入套件、不改 config schema。4A WebApi / ServiceHost / Plugin Loader 邊界分析4A WebApi / ServiceHost / Plugin Loader 決策確認表第四階段 4B / 4C / 4D 執行切分表 已建立;下一步等待使用者回覆 4A 七項決策確認。

目前已完成:

本次已由使用者授權測試 DB write/read/cleanup 補驗,並執行 run-mysql-tasktrace-write-read-cleanup-validation.ps1。結果為 QuerySuccess=TrueQueryItemCount=2QueryHasMore=FalseCleanup result=True,cleanup 刪除本次 2 筆 manual-tasktrace-e2e- 測試資料。這代表 TaskTraceStore 查詢鏈路在有資料時可查回 trace rows,3A 可標記完成。

3B 最新實作狀態(2026-06-04)

項目狀態
程式 commit13c14ca新增 ManualApplyPreview 安全預覽
Core model已完成 SchemaManualApplyPreviewRequestSchemaManualApplyPreviewResultSchemaManualApplyPreviewItemSchemaManualApplyPreviewRiskLevel
Preview builder已完成 SchemaManualApplyPreviewBuilder
安全欄位已完成 PlanHashCanApplyBlockedRiskLevelSummaryGeneratedAtUtc
Apply 限制第一版固定 CanApply=False,不提供正式 Apply
ConsoleHost已顯示 ManualApplyPreview 摘要、風險、阻擋狀態與 SQL preview
目標測試Core 9 passed、ConsoleHost formatter 15 passed、MySQL manual-only gate 1 passed
實際輸出驗證dotnet run 成功輸出 PlanHashCanApply=FalseRisk=LowBlocked=False
真實 DB read-only preview尚未執行,需另行確認 read-only gate 與連線資訊
3B 完成稽核已完成,判定第一版 ManualApplyPreview 可驗收完成
3B 線上驗收已完成,Cloudflare Pages 首頁、稽核頁與 status.json 已反映 13c14ca 與 3B 完成狀態
停止線未執行 DDL、未建立 schema history table、未開放自動 Apply、未導入 WebApi / ServiceHost

3A 最新實作狀態(2026-06-04)

項目狀態
ITaskTraceStore public contract已完成
Core 查詢 DTO已完成,位於 HS.DeviceControl.Core.Logging
MySqlTaskTraceStore fake gateway 查詢已完成
無條件全表查詢防護已完成,沒有 filter 會回傳 TraceQueryInvalidRequest
分頁策略已完成,使用 Limit + 1HasMore,不做 TotalCount
敏感資訊遮罩已完成,查詢結果會遮蔽 password / token / secret / authorization / connection string
非 Manual 全測試通過 406 個測試
真實 DB 查詢已完成 write/read/cleanup 補驗,QueryItemCount=2
manual-only runner已完成,scripts/run-mysql-tasktrace-manual-query.ps1
候選探查 runner已完成,scripts/run-mysql-tasktrace-candidate-probe.ps1,commit 2c817ec
候選探查結果已執行,ExpectedMinRows=0ItemCount=0、2 個 manual 測試通過
write/read/cleanup runner已完成,scripts/run-mysql-tasktrace-write-read-cleanup-validation.ps1,commit fa874f4
write/read/cleanup 補驗結果已執行,寫入 2 筆、查回 2 筆、cleanup 刪除 2 筆,2 個 manual 測試通過

目前 3A 已完成第一版程式契約、fake gateway 實作、read-only manual 驗證入口、候選探查與 write/read/cleanup 真實測試 DB 補驗。3B ManualApplyPreview 第一版安全預覽、完成稽核與線上驗收已完成;3C Application contract 第一版實作、完成稽核、commit / push 前確認、程式 repo push、文件 repo push 與線上驗收已完成,Application tests 15 passed,solution tests 453 passed。3D Plugin / 多設備單元邊界分析、決策確認表、contract 草案 / 實作前確認表、contract 決策確認表、完成稽核表、線上驗收、程式 repo 唯讀結構檢查、Application contract 草案、Application contract 決策確認表、Application contract 第一版實作與 commit / push 前確認已完成;4A 邊界分析與 4A 決策確認表已建立,下一步等待使用者回覆七項確認,或另行確認真實 DB read-only ManualApplyPreview 驗證。