第三階段前置規劃

本頁為專案文件網站產出的閱讀版。

返回 docs

第三階段前置規劃

本文件承接第二階段 B 收斂稽核,用來整理第三階段開始前應先確認的工作順序、邊界與驗證節點。

本文件只做規劃,不代表已同意修改 public method 簽章、導入 WebApi / ServiceHost、執行正式 DB DDL、保存密碼或改變專案啟動方式。

目前第三階段執行項目已由 第三階段執行儀表板 承接,首頁專案總攬也會以 3A / 3B / 3C / 3D 四條主線顯示目前狀態。

目前狀態

項目狀態說明
第一階段控制核心已完成Workflow、StateMachine、TaskEngine、Adapter、Log、Config 與 ConsoleHost 驗證節點已完成。
第二階段 MySQL 持久化已完成task_executionsnode_executionstask_log_traces 已完成 manual-only 真實測試 DB 驗證。
DB LogWriter / TraceStore已完成第一版已完成寫入、sanitizer、fallback、manual-only gate 與查詢邊界設計。
Schema Apply已完成安全策略已有停止線、gate、備份、rollback、plan hash 與高風險分類;尚未實作正式 DDL executor。
第三階段正式平台能力尚未開始WebApi、ServiceHost、Plugin Loader、多設備單元控制與正式 DB Apply 尚未導入。

第三階段前置目標

第三階段前置不直接做完整平台,而是先把會影響架構邊界的項目拆清楚。

目標目的
決定 TaskTraceStore public 查詢介面讓未來 WebApi、ServiceHost 或 Debug Tool 可查任務 trace,但避免查詢 contract 草率成形。
決定 ManualApplyPreview 是否先實作讓 schema apply 先有可審核的 preview / plan,不直接執行 DDL。
決定 Host DB 初始化邊界釐清 ConsoleHost、ServiceHost 未來啟動時是否只檢查 DB、是否允許 preview、是否允許 apply。
決定 WebApi / ServiceHost 先後順序避免同時導入遠端 API、背景服務、DB 初始化與正式部署,造成範圍過大。
決定多設備單元與 Plugin Loader 是否納入第三階段這兩項會影響正式平台能力,但需要先有穩定服務入口與資源隔離策略。

建議優先順序

順序工作項建議原因本階段是否可直接實作
1TaskTraceStore public 查詢介面實作前確認已有 task_log_traces 寫入與查詢邊界,下一步最自然是整理查詢 contract。否,需先確認 request / result model。
2ManualApplyPreview 程式實作前確認能延續 Schema Apply 安全策略,只做 preview,不碰正式 DDL。否,需先確認 apply plan 欄位與高風險分類。
3Host DB 初始化流程設計會影響啟動方式,需等查詢與 preview 邊界較清楚後再決定。否,需先做設計。
4ServiceHost / WebApi 邊界分析需要穩定查詢與持久化資料基礎,建議排在前面三項後。否,會擴大系統邊界。
5Plugin Loader / 多設備單元控制會牽動 DLL 載入安全、資源鎖、命令佇列與設備隔離。否,需另開主題。

三個立即候選工作

候選工作可以先整理什麼需要避免什麼
TaskTraceStore public 查詢介面實作前確認查詢條件、分頁、排序、回傳 DTO、遮罩規則、錯誤碼、測試案例。不直接新增 interface、DTO 或改 public method。
ManualApplyPreview 程式實作前確認apply plan model、危險操作分類、人工確認欄位、輸出格式、preview 驗證方式。不執行 DDL、不連正式 DB、不改啟動方式。
Host DB 初始化流程設計ConsoleHost / ServiceHost 啟動時的 dry-run、inspect、preview、停止線與 log。不把初始化接入正式啟動流程、不自動 apply schema。

建議先做 TaskTraceStore public 查詢介面實作前確認

建議第三階段第一個整理項先做 TaskTraceStore public 查詢介面實作前確認。

原因:

TaskTraceStore 前置確認清單

確認項建議
查詢主鍵至少支援 TaskId,可選 NodeIdDeviceIdCommandNameLevelStatus、時間區間。
分頁必須有 LimitOffset 或 cursor,並設定最大筆數。
排序預設依 OccurredAtCreatedAt 由新到舊。
回傳資料不直接回傳 DB row,應回傳查詢 DTO。
敏感資訊沿用 sanitizer,不回傳 password、token、authorization、connection string。
錯誤格式使用標準 Result / ErrorInfo,不得只回傳 bool
測試方式先 fake gateway 單元測試,再 manual-only 真實 DB 查詢測試。
停止線未確認前不得新增 public interface 或 WebApi endpoint。

ManualApplyPreview 前置確認清單

確認項建議
模式只做 preview,不執行 DDL。
輸入Expected schema、current schema、target database、operator、reason。
輸出Apply plan、SQL preview、risk level、plan hash、warnings。
高風險操作DROPMODIFYCHANGE、縮短欄位長度、移除 index 必須列為高風險。
審核資訊記錄產生時間、操作者、來源 commit、DB 版本與是否允許 apply。
停止線不保存密碼、不自動 apply、不接正式 DB。

Host DB 初始化前置確認清單

確認項建議
ConsoleHost可先顯示 DB 檢查結果,但不得自動 apply。
ServiceHost需另行設計啟動模式、失敗策略與重試策略。
設定來源密碼與連線字串不得寫入 repo,需使用環境變數或本機未追蹤設定。
失敗策略DB 不可用時應明確回報,不得吞掉 exception。
Log需記錄 host、app version、schema version、result、error code。
停止線未確認前不得改變專案啟動方式。

不納入本次前置整理的事項

驗證節點建議

驗證節點驗證目的建議時機
Trace 查詢 fake gateway 測試確認查詢條件、分頁、排序與 SQL 參數。TaskTraceStore 第一版實作後。
Trace 查詢 manual-only 真實 DB 測試確認可從 task_log_traces 查回測試資料。使用者授權測試 DB 查詢後。
Apply preview 輸出測試確認 preview 不執行 DDL,只輸出 plan 與 risk。ManualApplyPreview 第一版實作後。
Host DB 初始化 dry-run 人工驗證確認啟動檢查結果、錯誤輸出與停止線。Host DB 初始化設計完成並經確認後。

建議下一步

本文件的下一步已由兩份文件承接:

目前已完成「程式 repo TaskTraceStore 介面命名與 DTO 位置盤點」,下一步建議確認 ITaskTraceStore 第一版 public contract、DTO 位置、同步 Query 方法與查詢限制。

完成確認後,才能決定是否進入程式 repo 實作。