ConsoleHost Schema Dry Run 顯示人工驗證紀錄
驗證節點名稱
ConsoleHost Schema Dry Run 顯示人工驗證
驗證目的
確認 SchemaDryRunPlanner 接到 ConsoleHost 顯示層後,實際輸出是否能讓使用者清楚判斷:
- 目前是 Dry Run 預覽,不是正式建表。
- 預計建立幾張 table。
- 預計補幾個 column / index。
- 是否有需要人工審查的 schema 差異。
- SQL preview 是否完整顯示。
- 是否明確提醒不會連線或修改 MySQL。
驗證時間
2026-05-30
驗證對象
- repo:
hs-device-control-template - branch:
poc/nmodbus-tcp - commit:
c09da28 - ConsoleHost:
src\HS.DeviceControl.ConsoleHost
驗證方式
執行:
dotnet run --project src\HS.DeviceControl.ConsoleHost
驗證時仍使用 samples/config 與 mock schema snapshot。
本次驗證沒有:
- 連線 MySQL。
- 讀取
information_schema。 - 執行 DDL。
- 新增或更換 MySQL 套件。
- 修改 ConsoleHost 啟動方式。
實際輸出摘要
ConsoleHost 前段仍正常完成第一階段代表流程:
Workflow completed.
Task node history:
- NodeId=light-on NodeName=開啟燈號 DeviceId=LED_001 CommandName=LightOn Status=completed
- NodeId=sensor-verify NodeName=Sensor 驗證 DeviceId=SENSOR_001 CommandName=SensorVerify Status=completed
Recent tasks:
- TaskId=demo-task WorkflowId=LIGHT_SENSOR_DEMO Status=Completed NodeCount=2
新增的 Schema Dry Run 區塊可正常顯示:
Schema dry run:
Mode=DryRun Success=True TablesToCreate=1 ColumnsToAdd=0 IndexesToAdd=0 ManualReview=0
SQL preview:
- CREATE TABLE IF NOT EXISTS `task_executions` (
`task_id` varchar(64) NOT NULL COMMENT 'task id',
`workflow_id` varchar(64) NOT NULL COMMENT 'workflow id',
`status` varchar(32) NOT NULL COMMENT 'status',
PRIMARY KEY (`task_id`),
INDEX `idx_task_executions_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='task execution';
Warnings:
- Dry Run 不會連線或修改 MySQL。
驗證結果
| 項目 | 結果 |
|---|---|
| Workflow 原有輸出 | 符合預期,仍可完成 LIGHT_SENSOR_DEMO |
| Task node history | 符合預期,可看到節點、設備、命令與狀態 |
| Recent tasks | 符合預期,可看到任務摘要 |
| Schema Dry Run 標題 | 符合預期,清楚顯示 Schema dry run: |
| Dry Run 模式 | 符合預期,顯示 Mode=DryRun |
| 建表數量 | 符合預期,顯示 TablesToCreate=1 |
| 欄位 / 索引補齊數量 | 符合預期,空 snapshot 下由 CREATE TABLE 一次呈現 |
| 人工審查項目 | 符合預期,顯示 ManualReview=0 |
| SQL preview | 符合預期,可看到 CREATE TABLE IF NOT EXISTS task_executions |
| 安全警告 | 符合預期,明確提示 Dry Run 不會連線或修改 MySQL |
是否符合預期
符合預期。
此節點已達到「讓使用者在 ConsoleHost 看見 Schema Dry Run 實際效果」的目的。
發現問題或限制
- 目前使用 mock schema snapshot,不代表真實 MySQL metadata。
- 目前只顯示 dry run preview,尚未接正式 Schema Initializer。
- 尚未提供
--schema-dry-run、--schema-apply之類的 ConsoleHost 模式參數。 .NET 5.0仍會出現既有 EOL 警告,與本次功能無直接關係。
判斷
此驗證節點可以標記完成。
下一步可進入 Schema Initializer DryRun 流程設計,先定義初始化協調層如何呼叫 inspector、planner 與未來 executor,並繼續保持 DryRun / Apply 分離。