Schema Inspector 抽象介面與 mock inspector 第一版實作紀錄

Schema Inspector 抽象介面與 mock inspector 第一版實作紀錄。

返回 docs

Schema Inspector 抽象介面與 mock inspector 第一版實作紀錄

1. 驗證節點摘要

項目內容
驗證節點名稱Schema Inspector 抽象介面與 mock inspector 第一版
驗證日期2026-05-30
程式 repohs-device-control-template
實作 commite8fd1b0
驗證分支poc/nmodbus-tcp
自動測試結果dotnet test 通過 286 個測試
狀態已完成第一版驗證

本節點依「Schema Inspector 抽象介面與 mock inspector 實作前確認」執行,只建立抽象介面、mock 實作與單元測試。

2. 已完成範圍

類型完成內容
抽象介面新增 ISchemaInspector
Request model新增 SchemaInspectRequest
Result model新增 SchemaInspectResult
Mock 實作新增 MockSchemaInspector
Error code新增 SchemaInspectionFailed
實作紀錄新增程式 repo 文件 schema-inspector-interface-mock-implementation-record.md
測試新增 SchemaInspectorTests

3. 明確未納入

未納入項目說明
MySqlConnector未新增任何 MySQL 套件
真實 MySQL 連線未使用 host、port、user、password、dbname
information_schema 查詢未建立 SQL 查詢
DDL Executor未執行 CREATE TABLEALTER TABLEDROP
ConsoleHost 啟動自動建表尚未串接
Schema Initializer尚未串接

4. 測試覆蓋

測試項目實際驗證
空 schema snapshotMockSchemaInspector.Empty() 可回傳空 table 清單
完整 schema snapshot可回傳 table、column、index
table 篩選ExpectedTables 可限制回傳 table
隱藏 index/commentIncludeIndexes = falseIncludeComments = false 可移除 index/comment
讀取失敗MockSchemaInspector.Failed() 回傳 SchemaInspectionFailed
request 為 null回傳標準錯誤,不丟未處理 exception
Dry Run 缺 column/indexmock snapshot 可驅動 GenerateDryRunPlan 產生 ADD COLUMN / ADD INDEX
Dry Run 欄位差異mock snapshot 可驅動 ManualReviewItems

5. 實際測試結果

執行指令:

dotnet test tests\HS.DeviceControl.Core.Tests\HS.DeviceControl.Core.Tests.csproj
dotnet test

結果:

測試專案通過數
HS.DeviceControl.Core.Tests141
HS.DeviceControl.WorkflowSimulation.Tests11
HS.DeviceControl.Adapters.Tests108
HS.DeviceControl.ModbusPoc.Tests26
合計286

執行時仍會出現 .NET 5.0 已不受支援的 NETSDK1138 warning,這是目前專案指定版本的既有限制。

6. 實際效果

目前已可以在不接觸真實 MySQL 的情況下,建立目前 schema snapshot,並交給既有 MySqlSchemaSqlGenerator.GenerateDryRunPlan 做差異比對。

這代表下一步若要實作真實 MySqlSchemaInspector,可以沿用同一個介面與 result model;若要先補更多測試,也可以先用 mock inspector 完成。

7. 建議下一步

建議下一步進入:

Schema Inspector 與 Dry Run Plan 串接服務設計

此步驟仍可不導入 MySQL 套件、不連線 DB、不執行 DDL,先整理是否需要一個 SchemaDryRunPlanner 類型的服務負責: