# 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`

## 驗證方式

執行：

```powershell
dotnet run --project src\HS.DeviceControl.ConsoleHost
```

驗證時仍使用 `samples/config` 與 mock schema snapshot。

本次驗證沒有：

- 連線 MySQL。
- 讀取 `information_schema`。
- 執行 DDL。
- 新增或更換 MySQL 套件。
- 修改 ConsoleHost 啟動方式。

## 實際輸出摘要

ConsoleHost 前段仍正常完成第一階段代表流程：

```text
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 區塊可正常顯示：

```text
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 分離。
