第二階段 B 補完清單與收斂結論
本文件用來釐清第二階段是否真的全部完成,並把已完成的「第二階段 A」與「第二階段 B」分開呈現。
本文件只整理範圍與判斷,不修改程式碼、資料模型、API、設定檔格式、資料庫欄位、public method 簽章或專案啟動方式。
判定結論
| 範圍 | 目前判定 | 說明 |
| 第二階段 A:MySQL TaskStore / Schema DryRun PoC | 已完成 | task_executions、node_executions、Schema Attribute、SQL Generator、Dry Run、Inspector 與真實 DB manual-only 驗證已完成。 |
| 第二階段 B:DB Log / Trace / Apply 安全收斂 | 已完成 | DB LogWriter / TraceStore 已完成邊界設計、實作前確認、第一版程式實作、manual-only xUnit 驗證入口、真實 DB 驗證前確認清單、TaskTraceStore 查詢邊界設計、Apply 安全策略、測試 DB DDL 建表與 task_log_traces 寫入 / 查詢 / cleanup 驗證。 |
| 第二階段整體 | 可標記完成 | 第二階段 B 收斂稽核已完成;正式 DDL Executor、Host DB 初始化與 TaskTraceStore public contract 改列後續階段,不再視為第二階段缺口。 |
第二階段 B 完成項
| 項目 | 目前狀態 | 說明 |
| DB LogWriter / TraceStore 實作前確認 | 已完成 | 已固定停止線、欄位草案、測試策略與 fallback 邊界。 |
task_log_traces schema class | 已完成 | 已由 C# schema class 維護欄位型別、索引與描述。 |
LogEntry 到 trace row mapper | 已完成 | 已避免直接把 raw object 或未遮罩 payload 寫入資料庫。 |
| Payload Sanitizer | 已完成 | 已遮罩 password、token、secret、authorization、connection string 類資訊與過長 RawRequest / RawResponse。 |
MySqlLogWriter fake gateway 測試 | 已完成 | 已用 fake gateway 驗證 SQL command、參數、失敗 fallback,不碰真實 DB。 |
TaskTraceStore 查詢邊界 | 已完成設計 | 已固定查詢條件、回傳資料邊界、SQL 安全、不納入第一版項目與後續確認點。 |
| DB log 寫入失敗 fallback | 已完成 | DB 寫入失敗不影響 Workflow 主流程,改由 fallback writer 明確回報。 |
| DB LogWriter manual-only xUnit 驗證入口 | 已完成 | 已新增 HS_MYSQL_LOGWRITER_* gate、schema precheck、查詢 helper、sanitizer 驗證與 cleanup helper;預設不連真實 DB。 |
| DB LogWriter 真實 DB 驗證前確認清單 | 已完成 | 已固定測試 DB 資訊遮蔽、task_log_traces schema 停止線、INSERT / SELECT / cleanup gate、sanitizer 通過條件與不得自動 DDL 規則。 |
| DB LogWriter 真實 DB 驗證 | 已完成 | 使用者授權測試 DB DDL 後,task_log_traces SchemaPrecheck、寫入、查詢與 cleanup 均通過。 |
| Schema Apply / DDL Executor 安全策略 | 已完成策略 | 已固定 Apply gate、權限、備份、rollback、plan hash、高風險操作分類與停止線;正式執行 DDL 仍需另行確認。 |
| 第二階段 B 收斂稽核 | 已完成 | 已確認 public contract、正式 DDL executor、Host DB 初始化都應移到第三階段或後續專題。 |
後續階段保留項
| 項目 | 建議階段 | 原因 |
TaskTraceStore public 查詢介面 | 第三階段前置 | 會新增 public contract、DTO 與未來 WebApi 對齊需求。 |
| 正式 DDL Executor | 第三階段前置或維運專題 | 會讓系統具備修改資料庫 schema 的能力,需要備份、rollback、plan hash 與權限策略。 |
| Host DB 初始化 / Apply gate | 第三階段 | 會影響啟動方式與部署流程,不應塞回第二階段。 |
| WebApi | 第三階段 | 會新增正式遠端控制邊界。 |
| ServiceHost | 第三階段 | 涉及常駐服務、啟動方式、重啟恢復與部署。 |
| WinForms Debug Tool | 第三 / 四階段 | 屬現場維運工具,不影響第二階段資料庫基礎收斂。 |
| Plugin DLL Loader | 第三階段 | 涉及外部 DLL、版本控管、相依套件隔離與載入安全。 |
| 多設備單元 Resource Lock / Command Queue | 第三階段 | 屬正式平台控制能力,需搭配 API / ServiceHost。 |
| 正式 DB 自動 Apply | 後續專題 | 第二階段 B 只完成安全策略與測試 DB gated PoC,不直接進正式 DB。 |
建議執行順序與結果
| 順序 | 節點 | 結果 |
| B-01 | DB LogWriter / TraceStore 實作前確認 | 已完成。 |
| B-02 | task_log_traces schema class 設計與測試 | 已完成。 |
| B-03 | Payload Sanitizer 與 mapper 第一版 | 已完成。 |
| B-04 | MySqlLogWriter fake gateway 第一版 | 已完成。 |
| B-05 | TaskTraceStore 查詢邊界設計 | 已完成設計;public contract 延後。 |
| B-06 | DB LogWriter 真實 DB 驗證前確認清單 | 已完成。 |
| B-07 | DB LogWriter manual-only 測試 DB 驗證紀錄 | 已完成。 |
| B-08 | Schema Apply / DDL Executor 安全策略 | 已完成策略與停止線;正式 executor 延後。 |
| B-09 | 第二階段 B 收斂稽核 | 已完成。 |
停止線
以下項目不得在未確認前自行執行:
- 不執行正式 DB DDL、
CREATE TABLE、ALTER TABLE、DROP、MODIFY或CHANGE。 - 不保存密碼、token、連線字串或正式帳號資訊。
- 不修改既有 public method 簽章。
- 不改變
TaskExecutionRecord/TaskNodeExecutionRecord既有資料模型。 - 不導入 WebApi、ServiceHost、Plugin Loader 或正式背景服務。
- 不讓 DB log 寫入失敗中斷 Workflow 主流程,除非使用者另行確認。
完成判定
| 條件 | 判定 | 備註 |
task_log_traces schema class 可由 parser 解析 | 完成 | 仍不代表正式 DB 自動 apply 已完成。 |
MySqlLogWriter 可用 fake gateway 產生寫入命令 | 完成 | 已通過單元測試。 |
| Payload Sanitizer 有單元測試 | 完成 | 避免敏感資訊落 DB。 |
| DB 寫入失敗 fallback 有測試 | 完成 | 不得破壞 Workflow 主流程。 |
TaskTraceStore 查詢邊界已設計 | 完成 | public query contract 延後到第三階段前置。 |
| Schema Apply / DDL Executor 安全策略文件 | 完成 | 正式 executor 延後;安全策略已收斂。 |
| 真實測試 DB manual-only 驗證 | 完成 | task_log_traces 測試 DB 建表後,SchemaPrecheck、寫入、查詢與 cleanup 均通過。 |
建議下一步
建議下一步進入第三階段前置規劃,優先討論 TaskTraceStore public 查詢介面、ManualApplyPreview 程式實作與 Host DB 初始化三者的先後順序。