開發日誌
本日誌記錄文件 repo 與未來程式 repo 的重要進度,方便回顧每次完成內容、完成時間與下一步。
2026-05-20
前導文件與網站發布
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-20 |
| repo | hs-device-control-template-docs |
| 內容 | 建立架構方向、第一階段開工規格、README、docs 文件、前導完成檢查表 |
| 驗證 | GitHub repo 已推送,Cloudflare Pages 已發布 |
手機閱讀版與 PDF 版檢查
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-20 |
| 內容 | 修正手機版排版、PDF 首頁空白頁、Markdown 文件列印標題重複 |
| 驗證 | 線上頁面已確認無水平溢出,PDF 頁數正常 |
開發進度追蹤規則
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-20 |
| 內容 | 新增開發進度總覽與完成時間欄位規則 |
| 下一步 | 建立程式碼 repo 後,開始同步更新模組進度 |
程式 repo 建立
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-20 |
| repo | hs-device-control-template |
| 內容 | 建立智慧設備順序控制系統共用程式骨架 repository |
| 下一步 | 建立 .NET 5.0 Solution、Core、Adapters、ConsoleHost 與測試專案骨架 |
.NET 5.0 程式碼骨架初版
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-20 |
| repo | hs-device-control-template |
| commit | 96347b2 |
| 內容 | 建立 HS.DeviceControl.sln、Core、Adapters、ConsoleHost、Core.Tests、Adapters.Tests、WorkflowSimulation.Tests |
| 驗證 | dotnet test 通過 7 個測試;ConsoleHost 可執行燈號導引 + Sensor 驗證代表流程 |
| 注意 | .NET 5.0 會出現 EOL 警告,屬於目前指定版本的預期現象 |
| 下一步 | 補強 Workflow / Config / Log / TaskEngine 細節 |
註解撰寫規則
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-20 |
| repo | 文件 repo / 程式 repo |
| 內容 | 新增中文註解、XML 註解、一般註解的撰寫規範 |
| 驗證 | 文件 repo 與程式 repo 均已加入 AGENTS.md;程式 repo 已啟用 XML 文件輸出設定 |
| 下一步 | 後續補強公開 API 時,同步補 XML 註解 |
程式碼 XML 註解補強
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-20 |
| repo | hs-device-control-template |
| 內容 | Core 與 Adapters 的公開類別、介面、方法、屬性與 enum 補上繁體中文 XML 註解 |
| 驗證 | 公開 API 缺註解檢查無遺漏;dotnet test 通過 7 個測試 |
| 下一步 | 進入 Config / Workflow Schema / Log 格式與 TaskEngine 細節補強 |
Workflow 定義驗證規則
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-20 |
| repo | hs-device-control-template |
| 內容 | 新增 WorkflowDefinition.Validate(),檢查 WorkflowId、StartNodeId、節點清單、重複 NodeId、CommandName、Timeout、RetryCount、起始節點與下一節點連結 |
| 驗證 | dotnet test 通過 13 個測試;ConsoleHost 代表流程可正常完成 |
| 下一步 | 補上 devices.json、workflows.json、appsettings.json 設定檔範例 |
2026-05-21
驗證節點規則
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-21 |
| repo | 文件 repo / 程式 repo |
| 內容 | 明確定義驗證節點不是每次小修改都要做,而是在狀態機、Workflow、Adapter、ConsoleHost、Config、文件網站等可驗收節點完成後,用來說明實際效果 |
| 驗證 | 新增 docs/verification-node.md;文件 repo 與程式 repo 的 AGENTS.md 均已補充驗證節點規則;HTML 與 public 發布包已同步 |
| 下一步 | 後續每完成一個功能節點時,提供驗證節點回報,讓使用者判斷實際效果是否可接受 |
設定檔範例與 Config Validator
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-21 |
| repo | hs-device-control-template |
| commit | 4691101 |
| 內容 | 新增 samples/config 範例、設定模型、ConfigValidator、CFG-0001 錯誤代碼與驗證測試 |
| 驗證 | dotnet test 通過 20 個測試;ConsoleHost 代表流程可正常完成;範例 JSON 已納入反序列化與驗證測試 |
| 下一步 | 建立 Config Loader,將 JSON 檔案載入成設定物件,再交由 ConfigValidator 驗證 |
前端人工驗證範圍
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-21 |
| repo | hs-device-control-template-docs |
| 內容 | 補充第一階段前端人工驗證範圍,明確區分文件網站 / 手機閱讀 / PDF 需要人工檢查,Core / Workflow / StateMachine / ConfigValidator 以自動測試與驗證節點回報為主 |
| 驗證 | 架構方向、第一階段開工規格、前導完成檢查表與 public 發布包同步更新 |
| 下一步 | 後續若建立 WinForms Debug Tool 或 Web UI,再建立正式操作畫面人工驗證清單 |
Config Loader
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-21 |
| repo | hs-device-control-template |
| commit | 35b4c69 |
| 內容 | 新增 ConfigLoader 與 ConfigLoadResult,可從資料夾載入 devices.json、workflows.json、appsettings.json,並交由 ConfigValidator 驗證 |
| 驗證 | dotnet test 通過 25 個測試;涵蓋範例設定載入、資料夾不存在、缺少必要檔案、JSON 格式錯誤、載入後驗證失敗 |
| 下一步 | 建立 Config Mapper,將 WorkflowConfiguration 轉成可執行的 WorkflowDefinition,或先讓 ConsoleHost 從設定檔載入代表流程 |
Config Mapper
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-21 |
| repo | hs-device-control-template |
| commit | 9110e4c |
| 內容 | 新增 WorkflowConfigurationMapper 與 WorkflowDefinitionMapResult,可將 WorkflowConfiguration 轉成 WorkflowEngine 可執行的 WorkflowDefinition |
| 驗證 | dotnet test 通過 30 個測試;新增 sample config 載入、轉換後交由 WorkflowEngine 完成代表流程的流程模擬測試;ConsoleHost 既有代表流程仍可正常執行 |
| 下一步 | 評估是否讓 ConsoleHost 從 samples/config 載入代表流程,或先補強 FileLogWriter / ConsoleLogWriter 格式 |
ConsoleHost 設定檔啟動
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-21 |
| repo | hs-device-control-template |
| commit | 637e35f |
| 內容 | ConsoleHost 預設改為從 samples/config 載入設定,依序執行 ConfigLoader、ConfigValidator、WorkflowConfigurationMapper 與 WorkflowEngine |
| 驗證 | dotnet test 通過 30 個測試;dotnet run --project src\HS.DeviceControl.ConsoleHost 可從 sample config 完成 light-on 與 sensor-verify;指定 samples\config LIGHT_SENSOR_DEMO 也可正常完成 |
| 下一步 | 補強 FileLogWriter / ConsoleLogWriter 格式,或補齊 Config / ConsoleHost 驗證節點回報文件 |
2026-05-22
Log 輸出格式
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-22 |
| repo | hs-device-control-template |
| commit | 4fb2947 |
| 內容 | 新增 LogEntryFormatter 與 FileLogWriter,並讓 ConsoleLogWriter 共用穩定的單行 key-value 格式;WorkflowEngine 會依節點結果寫入 INFO 或 ERROR |
| 驗證 | dotnet test 通過 33 個測試;dotnet run --project src\HS.DeviceControl.ConsoleHost -- samples\config LIGHT_SENSOR_DEMO 可輸出 level="INFO"、taskId、nodeId、nodeName、command、status、errorCode、message 欄位 |
| 注意 | .NET 5.0 仍會出現 EOL 警告,屬於目前指定版本的預期現象 |
| 下一步 | 補齊 Config / ConsoleHost 驗證節點回報文件,或評估 Workflow 執行模型是否需要保存 DeviceId |
Config / ConsoleHost 驗證節點紀錄
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-22 |
| repo | hs-device-control-template-docs |
| 內容 | 新增 docs/verification-records.md,補齊 Config Loader、Config Mapper、ConsoleHost 設定檔啟動的驗證目的、驗證方式、實際結果、限制與下一步 |
| 驗證 | 重新執行 dotnet test 通過 33 個測試;重新執行 dotnet run --project src\HS.DeviceControl.ConsoleHost -- samples\config LIGHT_SENSOR_DEMO 可完成兩節點代表流程;HTML 與 public 發布包同步更新 |
| 下一步 | 評估 Workflow 執行模型是否需要保存 DeviceId,或補強設備離線、逾時與重試相關驗證案例 |
DeviceId 執行鏈路
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-22 |
| repo | hs-device-control-template |
| commit | c2460b8 |
| 內容 | 將 DeviceId 從 WorkflowNodeConfig 串接至 WorkflowNode、DeviceCommand 與 LogEntry,Console / File Log 會輸出 deviceId 欄位 |
| 驗證 | dotnet test 通過 35 個測試;dotnet run --project src\HS.DeviceControl.ConsoleHost -- samples\config LIGHT_SENSOR_DEMO 可輸出 deviceId="LED_001" 與 deviceId="SENSOR_001" |
| 下一步 | 補強設備離線、節點逾時、重試後成功、重試後仍失敗等驗證案例,或評估 Adapter 分派器 |
節點失敗與重試驗證
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-22 |
| repo | hs-device-control-template |
| commit | 0ea990d |
| 內容 | WorkflowEngine 新增節點重試與同步逾時判斷,Log 補上 retryCount 與 timeTakenMs;新增設備離線、逾時、重試後成功、重試耗盡失敗測試 |
| 驗證 | dotnet test 通過 39 個測試;dotnet run --project src\HS.DeviceControl.ConsoleHost -- samples\config LIGHT_SENSOR_DEMO 可正常完成並輸出 retry / timeTaken 欄位 |
| 下一步 | 評估 Adapter 分派器,或規劃 TaskEngine 與更完整的任務生命週期 |
Adapter 分派器
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-22 |
| repo | hs-device-control-template |
| commit | 1cb8891 |
| 內容 | 新增 DeviceAdapterDispatcher,可依 DeviceId 將命令分派到不同設備 Adapter;ConsoleHost 會依 devices.json 建立並註冊各設備 Mock Adapter;新增 DEV-0003 表示找不到對應 Adapter |
| 驗證 | dotnet test 通過 41 個測試;dotnet run --project src\HS.DeviceControl.ConsoleHost -- samples\config LIGHT_SENSOR_DEMO 可正常完成並透過 Dispatcher 執行 LED_001 與 SENSOR_001 |
| 下一步 | 規劃 TaskEngine 與更完整的任務生命週期,或補 Adapter Connect / Disconnect / GetStatus 生命週期 |
TaskEngine 最小版本
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-22 |
| repo | hs-device-control-template |
| commit | 9a55d17 |
| 內容 | 新增 TaskEngine 與 TaskExecutionRecord,將 Workflow 執行包裝成可追蹤任務,記錄 TaskId、WorkflowId、狀態、開始時間、結束時間、耗時與結果 |
| 驗證 | dotnet test 通過 44 個測試;dotnet run --project src\HS.DeviceControl.ConsoleHost -- samples\config LIGHT_SENSOR_DEMO 仍可正常完成 |
| 下一步 | 評估 Adapter Connect / Disconnect / GetStatus 生命週期,或補 TaskEngine 暫停、取消與背景執行 |
Adapter 生命週期
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-22 |
| repo | hs-device-control-template |
| commit | 60e61b5 |
| 內容 | IDeviceAdapter 新增 Connect、Disconnect、GetStatus;新增 DeviceConnectionStatus;Mock Adapter 會追蹤 Connected / Disconnected 狀態;Dispatcher 可對所有註冊 Adapter 執行連線與斷線 |
| 驗證 | dotnet test 通過 49 個測試;dotnet run --project src\HS.DeviceControl.ConsoleHost -- samples\config LIGHT_SENSOR_DEMO 會先連線 Mock Adapter,再正常完成代表流程 |
| 下一步 | 討論真實設備 Adapter 設定欄位、連線失敗重試策略與狀態查詢格式 |
2026-05-25
開發狀態自動同步驗證
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-25 |
| repo | hs-device-control-template / hs-device-control-template-docs |
| commit | 程式 repo 3c05cf5;文件 repo 自動同步 1e1fd11 |
| 內容 | 修正文件 repo apply-code-status.yml payload 解析方式,完成程式 repo push 後自動通知文件 repo 更新 status.json 的驗證。 |
| 驗證 | Cloudflare Pages 公開 status.json 顯示 shortCommit=3c05cf5、branch=poc/nmodbus-tcp、source=github-actions;本機 UTF-8 JSON parser 確認中文欄位正確。 |
| 下一步 | 持續觀察後續正式程式 commit 是否會自動更新首頁;若未更新,先查 notify-docs 與 apply-code-status 兩個 workflow。 |
2026-05-30
MySqlSchemaSqlGenerator 第一版實作與驗證紀錄
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template / hs-device-control-template-docs |
| commit | 程式 repo 實作 9bd1ec1;驗證分支最新 6c5cd01;程式 repo main 同步 fdabf8d |
| 內容 | 補齊 MySqlSchemaSqlGenerator 第一版實作後的驗證紀錄,確認第一版只產生 CREATE TABLE IF NOT EXISTS SQL 字串,不連線 MySQL、不執行 DDL。 |
| 驗證 | dotnet test 通過 270 個測試;新增 docs/mysql-sql-generator-implementation-record.md 與 HTML 發布版。 |
| 下一步 | 進入 ALTER TABLE / Schema Initializer 實作前確認,先確認 schema diff、Dry Run 與真實 DB 連線邊界。 |
ALTER TABLE / Schema Initializer 實作前確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 補齊 ALTER TABLE / Schema Initializer 實作前確認,將工作拆成可自動執行、需回報確認、必須停下確認三個分級。 |
| 驗證 | 文件包含 ALTER TABLE ADD COLUMN、ADD INDEX、Dry Run Plan、Schema Inspector、Schema Executor 與真實 MySQL 連線邊界。 |
| 下一步 | 依確認清單進入 ALTER TABLE SQL 產生器與 Dry Run Plan 第一版實作,但真實 DB 連線與 DDL 執行仍需使用者明確確認。 |
ALTER TABLE SQL 產生器與 Dry Run Plan 第一版
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template |
| commit | db0b1b8 |
| 內容 | 新增 SchemaMigrationPlan、SchemaMigrationOperation、SchemaMigrationOperationType,並擴充 MySqlSchemaSqlGenerator 產生 ADD COLUMN、ADD INDEX 與 Dry Run Plan。 |
| 驗證 | dotnet test 通過 278 個測試;測試確認不產生 DROP、MODIFY、CHANGE 破壞性 SQL。 |
| 下一步 | 進入 Schema Inspector / information_schema 實作前確認,此節點將牽涉 MySQL 套件與連線資訊,需先停下確認。 |
Schema Inspector / information_schema 實作前確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 Schema Inspector 第一版的只讀範圍、information_schema.TABLES / COLUMNS / STATISTICS / KEY_COLUMN_USAGE 查詢欄位、MySQL 5.6.2 注意事項、測試策略與需停下確認項目。 |
| 驗證 | 文件明確標示不導入 MySQL 套件、不連線 DB、不執行 DDL,並建議先做 ISchemaInspector 與 mock inspector。 |
| 下一步 | 進入 Schema Inspector 抽象介面與 mock inspector 實作前確認,先確認介面與測試案例;若要直接做真實 MySQL Inspector,需先確認 MySQL 套件與連線資訊。 |
Schema Inspector 抽象介面與 mock inspector 實作前確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 ISchemaInspector、SchemaInspectRequest、SchemaInspectResult、mock inspector 行為、測試案例與不納入範圍。 |
| 驗證 | 文件明確限制本節點不新增 MySQL 套件、不連線 DB、不查詢 information_schema、不執行 DDL,下一步可安全進入第一版程式實作。 |
| 下一步 | 進入 Schema Inspector 抽象介面與 mock inspector 第一版實作,只建立介面、模型、mock 實作與單元測試。 |
Schema Inspector 抽象介面與 mock inspector 第一版實作
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template |
| commit | e8fd1b0 |
| 內容 | 新增 ISchemaInspector、SchemaInspectRequest、SchemaInspectResult、MockSchemaInspector、SchemaInspectionFailed 與 SchemaInspectorTests。 |
| 驗證 | dotnet test 通過 286 個測試;本節點未新增 MySQL 套件、未連線 DB、未查詢 information_schema、未執行 DDL。 |
| 下一步 | 進入 Schema Inspector 與 Dry Run Plan 串接服務設計,先確認是否建立不執行 DDL 的 SchemaDryRunPlanner。 |
Schema Inspector 與 Dry Run Plan 串接服務設計
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 SchemaDryRunPlanner 的必要性、責任邊界、request/result model、錯誤處理、測試案例與不納入範圍。 |
| 驗證 | 文件明確限制本節點不新增 MySQL 套件、不連線 DB、不查詢 information_schema、不執行 DDL,下一步可安全進入純流程服務實作。 |
| 下一步 | 進入 SchemaDryRunPlanner 第一版實作,只建立 request、result、planner 與單元測試。 |
SchemaDryRunPlanner 第一版實作
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template |
| commit | b69046e |
| 內容 | 新增 SchemaDryRunRequest、SchemaDryRunResult、SchemaDryRunPlanner 與 SchemaDryRunPlannerTests,完成 inspector snapshot 與 GenerateDryRunPlan 的純流程串接。 |
| 驗證 | dotnet test tests\HS.DeviceControl.Core.Tests\HS.DeviceControl.Core.Tests.csproj 通過 152 個測試;dotnet test 通過 297 個測試。 |
| 下一步 | 進入 SchemaDryRunPlanner ConsoleHost / Initializer 承接設計,先決定只顯示 Dry Run、分離 DryRun / Apply 模式,以及真實 MySQL Inspector 導入前條件。 |
SchemaDryRunPlanner ConsoleHost / Initializer 承接設計
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 SchemaDryRunPlanner 後續如何承接到 ConsoleHost 顯示層、Schema Initializer 協調層與未來 Schema Executor 執行層。 |
| 驗證 | 文件明確限制本節點不導入 MySQL 套件、不連線 DB、不執行 DDL、不改 ConsoleHost 啟動方式,並定義 DryRun / Apply 分離規則。 |
| 下一步 | 進入 SchemaDryRunPlanner ConsoleHost 顯示實作前確認,先確認 ConsoleHost 要顯示的欄位、formatter 與測試範圍。 |
SchemaDryRunPlanner ConsoleHost 顯示實作前確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 ConsoleHost dry run 顯示格式、formatter 建議、測試清單、禁止範圍與人工驗證重點。 |
| 驗證 | 文件明確限制下一步實作只做 ConsoleHost 顯示與 formatter,不導入 MySQL 套件、不連線 DB、不執行 DDL、不改啟動方式。 |
| 下一步 | 進入 SchemaDryRunPlanner ConsoleHost 顯示第一版實作,補 formatter、mock dry run demo、測試與實作紀錄。 |
SchemaDryRunPlanner ConsoleHost 顯示第一版實作
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template |
| commit | c09da28 |
| 內容 | 實作 ConsoleHost Schema Dry Run 顯示格式器、mock dry run demo、SQL preview / manual review / warning / failed result 輸出,並新增 ConsoleHost 顯示測試。 |
| 驗證 | dotnet test tests\HS.DeviceControl.ModbusPoc.Tests\HS.DeviceControl.ModbusPoc.Tests.csproj 通過 32 個測試;dotnet test 通過 303 個測試;dotnet run --project src\HS.DeviceControl.ConsoleHost 可看到 Schema dry run 與 CREATE TABLE preview。 |
| 下一步 | 進入 ConsoleHost Schema Dry Run 顯示人工驗證紀錄,把實際輸出、限制與下一個 Schema Initializer 節點整理成可驗收紀錄。 |
ConsoleHost Schema Dry Run 顯示人工驗證紀錄
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 補 ConsoleHost Schema Dry Run 顯示人工驗證紀錄,整理實際 ConsoleHost 輸出、SQL preview、安全限制與驗證判斷。 |
| 驗證 | dotnet run --project src\HS.DeviceControl.ConsoleHost 可看到 Workflow 完成、Task node history、Recent tasks 與 Schema dry run 區塊;本機頁面檢查無亂碼。 |
| 下一步 | 進入 Schema Initializer DryRun 流程設計,先定義 initializer 協調層、DryRun / Apply 分離與真實 MySQL Inspector 導入條件。 |
Schema Initializer DryRun 流程設計
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 定義 Schema Initializer 的 DryRun 協調流程、元件分工、Request / Result、Error / Warning、ConsoleHost 接入策略與驗收標準。 |
| 驗證 | 文件檢查確認本節點只做設計,不導入 MySQL 套件、不連線 DB、不讀取 information_schema、不執行 DDL、不修改 ConsoleHost 啟動方式。 |
| 下一步 | 進入 Schema Initializer DryRun 實作前確認,確認 class 邊界、測試放置位置與是否先使用 MockSchemaInspector。 |
Schema Initializer DryRun 實作前確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 SchemaInitializer、SchemaInitializerDryRunRequest、SchemaInitializerResult、Core tests 與 MockSchemaInspector 的第一版實作範圍。 |
| 驗證 | 文件明確限制下一步不新增 MySQL 套件、不連線 MySQL、不讀取 information_schema、不執行 DDL、不修改 ConsoleHost 啟動方式、不實作 Apply。 |
| 下一步 | 進入 Schema Initializer DryRun 第一版實作,只建立協調層、request/result model 與單元測試。 |
Schema Initializer DryRun 第一版實作
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template |
| commit | 52adfab |
| 內容 | 新增 SchemaInitializer、SchemaInitializerDryRunRequest、SchemaInitializerResult 與 10 個 Core 測試,完成 DryRun 協調層第一版。 |
| 驗證 | dotnet test tests\HS.DeviceControl.Core.Tests\HS.DeviceControl.Core.Tests.csproj 通過 162 個測試;全專案 dotnet test 通過 313 個測試;未新增 MySQL 套件、未連線 DB、未執行 DDL、未修改 ConsoleHost 啟動方式。 |
| 下一步 | 進入 Schema Initializer DryRun ConsoleHost 接入設計,先確認是否讓 ConsoleHost 改由 initializer 取得 dry run result。 |
Schema Initializer DryRun ConsoleHost 接入設計
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-30 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 ConsoleHost 從直接呼叫 SchemaDryRunPlanner 改為透過 SchemaInitializer 取得 dry run result 的小步接入策略、顯示格式、測試範圍與禁止項目。 |
| 驗證 | 文件明確限制本節點不修改程式、不改 ConsoleHost 啟動方式、不連 MySQL、不執行 DDL、不實作 Apply。 |
| 下一步 | 進入 Schema Initializer DryRun ConsoleHost 接入實作前確認,確認 formatter、demo 建立流程與測試項目。 |
2026-05-31
Schema Initializer DryRun ConsoleHost 接入實作前確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 補齊 ConsoleHost 小步接入 SchemaInitializer 的實作前確認,明確限定下一步只新增 initializer formatter、demo request 與顯示測試。 |
| 驗證 | 文件明確限制下一步不改 ConsoleHost 啟動方式、不新增 MySQL package、不連 DB、不讀取 information_schema、不執行 DDL、不實作 Apply。 |
| 下一步 | 進入 Schema Initializer DryRun ConsoleHost 接入實作,修改程式 repo 的 ConsoleHost 顯示層並補測試。 |
Schema Initializer DryRun ConsoleHost 接入實作
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template |
| commit | ac52376 |
| 內容 | ConsoleHost schema dry run 顯示改由 SchemaInitializer 取得 SchemaInitializerResult,並新增 initializer formatter 與 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:。 |
| 下一步 | 補 ConsoleHost Schema Initializer DryRun 人工驗證紀錄,整理實際輸出、限制與後續建議。 |
ConsoleHost Schema Initializer DryRun 人工驗證紀錄
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 補齊 ConsoleHost 實際輸出驗證紀錄,確認 Workflow 代表流程、Schema initializer dry run、SQL preview、Source / CorrelationId 與安全警告皆符合預期。 |
| 驗證 | 文件明確記錄本節點仍使用 mock schema snapshot,不連 MySQL、不讀取 information_schema、不執行 DDL、不修改 ConsoleHost 啟動方式。 |
| 下一步 | 進入 Schema Automation 第一輪收尾檢查,確認是否可進入真實 MySQL Inspector 前置確認。 |
Schema Automation 第一輪收尾檢查
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 Schema Automation 第一輪完成邊界,確認 SQL Generator、ALTER TABLE Dry Run、Mock Inspector、SchemaDryRunPlanner、SchemaInitializer、ConsoleHost 顯示與人工驗證已形成完整閉環。 |
| 驗證 | 文件明確列出已完成項目、尚未完成但不屬於第一輪的項目,以及進入真實 MySQL Inspector 前必須停下確認的範圍。 |
| 下一步 | 進入 真實 MySQL Inspector 前置確認,但導入 MySQL 套件、連線 DB、讀取 information_schema 或執行 DDL 前仍需另行確認。 |
真實 MySQL Inspector 前置確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理真實 MySQL Inspector 的唯讀 metadata 目標、連線資訊安全規則、information_schema 查詢欄位、MySQL 5.6.2 注意事項、測試策略與停止條件。 |
| 驗證 | 文件明確標示本節點不導入 MySQL 套件、不連線 DB、不讀取真實 metadata、不執行 DDL。 |
| 下一步 | 整理 MySqlSchemaInspector 實作前確認清單;若要導入 MySqlConnector、建立連線資訊、讀取 information_schema 或接 ConsoleHost 啟動參數,需先確認。 |
MySqlSchemaInspector 實作前確認清單
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 MySqlSchemaInspector 的實作位置、套件導入條件、query builder 範圍、row mapping 規則、錯誤格式、測試案例與人工驗證節點。 |
| 驗證 | 文件明確標示本節點仍不導入 MySqlConnector、不修改 .csproj、不連線 DB、不讀取真實 information_schema、不執行 DDL。 |
| 下一步 | 先確認是否允許導入 MySqlConnector;若尚未允許,可先做 Query Builder / Row Mapper 設計。 |
MySqlSchemaInspector Query Builder / Row Mapper 設計
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理不連 DB 的 query builder、table filter、metadata row mapping、snapshot assembly、錯誤格式與單元測試設計。 |
| 驗證 | 文件明確標示仍不導入 MySqlConnector、不修改 .csproj、不連線 MySQL、不讀取真實 information_schema、不執行 DDL。 |
| 下一步 | 整理 Query Builder / Row Mapper 實作前確認,列出要新增的 class、method、測試檔與不改 public contract 的方式。 |
Query Builder / Row Mapper 實作前確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理 Query Builder / Row Mapper 第一版實作前確認,列出可新增的 class、method、測試檔、影響範圍與停止線。 |
| 驗證 | 文件明確標示仍不導入 MySqlConnector、不修改 .csproj、不連線 MySQL、不讀取真實 information_schema、不執行 DDL、不改 public method 簽章。 |
| 下一步 | 進入程式 repo 結構檢查與第一版實作範圍盤點,先確認現有 namespace、schema model、ISchemaInspector 簽章與測試專案位置。 |
程式 repo 結構檢查與第一版實作範圍盤點
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | 文件 repo / 程式 repo 檢查 |
| 程式 repo 版本 | ac52376 |
| 內容 | 已確認 Schema 相關程式集中在 src/HS.DeviceControl.Core/Schema,測試集中在 tests/HS.DeviceControl.Core.Tests,既有 ISchemaInspector / SchemaInspectRequest / SchemaInspectResult 可承接不連 DB 的第一版 helper。 |
| 驗證 | 僅做結構盤點與文件同步,未修改程式 repo、未新增套件、未修改 .csproj、未連線 MySQL。 |
| 下一步 | 確認 helper class 採 public 或 internal + InternalsVisibleTo;建議採 internal + InternalsVisibleTo,但需使用者確認。 |
MySQL Schema Inspector 純程式 helper
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template |
| commit | 51cb17c |
| 內容 | 新增 internal Query Builder、metadata row mapper、metadata row model、snapshot assembler 與 InternalsVisibleTo,先完成不連 DB 的 metadata 解析前置能力。 |
| 驗證 | dotnet test 合計 329 個測試通過;GitHub Action「通知文件 repo 更新開發狀態」成功。 |
| 下一步 | 進入 MySqlSchemaInspector 真實 DB provider 實作前確認;新增 MySqlConnector、修改 .csproj、連線 DB 或讀取真實 information_schema 前仍需確認。 |
文件網站資訊架構整理規劃
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理首頁減量、第二階段分頁、資料庫可視化儀表板、驗證節點總覽與完整文件索引的建議資訊架構。 |
| 驗證 | 新增規劃文件並同步 README / docs 索引;本次不調整 progress.json 結構、不移除既有文件、不改 Actions 或部署流程。 |
| 下一步 | 建立 phase-two-dashboard 與 database-dashboard,確認可承接細節後再精簡首頁卡片。 |
第二階段與資料庫可視化儀表板
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 新增第二階段儀表板與資料庫可視化儀表板,將已完成 / 未完成邊界、MySQL 主線進度、Schema Automation 流程與資料表草圖集中呈現。 |
| 驗證 | 新增 Markdown、HTML 與 public 發布版本,並同步 README / docs 索引;本次未修改程式 repo、未改 progress.json 結構、未導入任何前端框架。 |
| 下一步 | 精簡 index.html 首頁卡片,讓首頁只保留總覽、階段邊界、目前主線、下一步與少量快速入口。 |
首頁卡片精簡與導覽重整
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-05-31 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 精簡 index.html 首頁卡片,將大量第二階段 MySQL 細節移往第二階段儀表板、資料庫可視化儀表板與 docs 文件索引。 |
| 驗證 | 首頁主卡維持 6 張,細節卡由 38 張降為 8 張;public/index.html 已同步。 |
| 下一步 | 檢查首頁手機版與線上部署效果,確認精簡後入口是否足夠清楚。 |
MySqlSchemaInspector 真實 DB provider 實作前確認
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 |
| 完成時間 | 2026-06-01 |
| repo | hs-device-control-template-docs |
| commit | 本次文件 commit |
| 內容 | 整理從純程式 helper 進入真實 DB provider 前的決策點,包含 MySqlConnector 導入、Infrastructure 分層、連線資訊來源、唯讀 inspect 流程、錯誤處理、測試策略、人工驗證節點與必須停下確認事項。 |
| 驗證 | 文件明確標示本節點不導入套件、不修改 .csproj、不建立 connection string、不連線 MySQL、不讀取真實 information_schema、不執行 DDL。 |
| 下一步 | 做「provider 實作前程式結構檢查」,確認程式 repo 是否需要新增 Infrastructure 專案,以及 MySqlConnector 應放在哪一層。 |
後續記錄格式
每次重要開發後,建議新增一段:
## YYYY-MM-DD
### 模組或工作名稱
| 項目 | 內容 |
|---|---|
| 狀態 | 已完成 / 進行中 / 待確認 |
| 完成時間 | YYYY-MM-DD 或尚未完成 |
| repo | 文件 repo / 程式 repo |
| commit | commit hash 或 PR 連結 |
| 內容 | 本次完成的重點 |
| 驗證 | 測試、頁面檢查或人工確認 |
| 下一步 | 下一個建議動作 |