Schema Initializer DryRun ConsoleHost 接入實作紀錄

Schema Initializer DryRun ConsoleHost 接入實作紀錄

1. 實作目的

本次實作將 ConsoleHost 的 schema dry run demo 從直接使用 SchemaDryRunPlanner,改為透過 SchemaInitializer 取得 SchemaInitializerResult

目標是讓 ConsoleHost 先對齊未來 ServiceHost / WebApi 也可共用的 initializer 協調層,同時維持本階段安全邊界:不連線 MySQL、不讀取 information_schema、不執行 DDL、不改 ConsoleHost 啟動方式。

2. 本次程式 commit

項目內容
repohs-device-control-template
branchpoc/nmodbus-tcp
commitac52376
commit 訊息接入 Schema Initializer ConsoleHost DryRun 顯示
測試總數318

3. 修改檔案

檔案調整內容
src/HS.DeviceControl.ConsoleHost/Program.csConsoleHost schema dry run 區塊改由 SchemaInitializer 產生結果,新增 FormatSchemaInitializerResult()CreateSchemaInitializerDryRunDemo()
tests/HS.DeviceControl.ModbusPoc.Tests/ConsoleHostSchemaDryRunDisplayTests.cs新增 initializer dry run 成功、warning、manual review、失敗與 null result 顯示測試

4. 實作內容

4.1 ConsoleHost 接入

ConsoleHost 原本流程:

ConsoleHost -> SchemaDryRunPlanner -> SchemaDryRunResult -> FormatSchemaDryRunResult

本次改為:

ConsoleHost -> SchemaInitializer -> SchemaInitializerResult -> FormatSchemaInitializerResult

保留既有 FormatSchemaDryRunResult(),不在本次移除舊 formatter。

4.2 顯示內容

ConsoleHost 目前會輸出:

Schema initializer dry run:
Mode=DryRun Success=True Source=ConsoleHost CorrelationId=consolehost-schema-initializer-dry-run TablesToCreate=1 ColumnsToAdd=0 IndexesToAdd=0 ManualReview=0
SQL preview:
- CREATE TABLE IF NOT EXISTS ...
Warnings:
- Dry Run 不會連線或修改 MySQL。

此輸出讓使用者可直接看到:

5. 驗證結果

驗證項目結果
dotnet test tests\HS.DeviceControl.ModbusPoc.Tests\HS.DeviceControl.ModbusPoc.Tests.csproj通過 37 個測試
dotnet test通過 318 個測試
dotnet run --project src\HS.DeviceControl.ConsoleHost成功完成代表流程,並顯示 Schema initializer dry run:
MySQL package未新增
真實 DB 連線未執行
DDL未執行
ConsoleHost 啟動方式未修改

6. 影響範圍

範圍影響
Core無新增修改
ConsoleHostschema dry run 顯示來源改走 initializer
TestsModbusPoc / ConsoleHost 顯示測試增加 5 個
MySQL無影響,仍未連線 DB
Workflow / TaskEngine / Adapter無行為變更

7. 已知限制

8. 建議下一步

建議下一步進入:

ConsoleHost Schema Initializer DryRun 人工驗證紀錄

整理本次 dotnet run --project src\HS.DeviceControl.ConsoleHost 的實際輸出、驗證目的、結果判斷、限制與下一步,讓文件網站可直接看到此節點的實際效果。

返回文件首頁