MySQL TaskStore PoC 實作前確認清單

確認第二階段 MySQL 任務持久化 PoC 的範圍、資料邊界、驗收方式與風險控制。

返回 docs

MySQL TaskStore PoC 實作前確認清單

本文件用於進入第二階段「MySQL 任務持久化 PoC」前,先確認實作範圍、資料保存邊界、驗收方式與風險控制。

此清單不是程式實作文件,也不代表已同意修改既有架構、資料模型、public method 簽章或專案啟動方式。若後續需要調整程式結構,必須再經使用者確認。

PoC 目標

第一版建議範圍

項目建議
儲存對象Task、Node、Command、ErrorInfo
儲存時機任務開始、節點開始、節點完成、設備命令完成、任務完成
查詢能力依 TaskId 查詢任務與節點歷程
Host先維持 ConsoleHost 作為驗證入口
DBMySQL 5.6.2
ORM先分析後決定,不在未確認前導入
Migration先以 schema 文件與手動 SQL 初稿為主

MySQL 版本限制

目前使用者提供的資料庫版本為:

MySQL 5.6.2

此版本需視為第二階段 MySQL PoC 的既定環境限制。後續套件選型、SQL 語法、欄位型態與測試環境都必須以 MySQL 5.6.2 相容性為前提。

第一版不做事項

不做項目原因
Web UI會擴大前端與使用流程範圍
WebApi需等資料邊界穩定後再設計 API contract
ServiceHost會牽動啟動方式,先不作為本 PoC 必要項
多案場管理需要租戶、案場、權限與資料隔離設計
報表統計需等任務歷程資料穩定後再設計
設備即時狀態保存與任務歷程不同,建議另開主題
自動 migration會牽涉套件與部署策略,先不納入第一版

資料保存邊界

Task

建議保存 TaskId、WorkflowId、WorkflowName、Status、StartTime、EndTime、TimeTakenMs、CurrentNodeId、FinalCode、FinalMessage。

Node

建議保存 TaskId、NodeId、NodeName、Status、StartTime、EndTime、TimeTakenMs、RetryCount、DeviceId、CommandName、SuccessNextNodeId、FailNextNodeId。

Command

建議保存 TaskId、NodeId、DeviceId、DeviceName、CommandName、Success、Code、Message、TimeTakenMs、RawRequest、RawResponse、AdapterData。

ErrorInfo

建議保存 TaskId、NodeId、DeviceId、CommandName、ErrorCode、ErrorMessage、ExceptionType、StackTrace、Source、CreatedAt。

Schema 初稿方向

表名責任
task_executions保存任務層級狀態與最終結果
node_executions保存節點執行歷程
command_executions保存設備命令結果與 Adapter 回傳資料
task_errors保存錯誤快照

欄位命名建議使用 snake_case,程式 model 可維持 C# PascalCase,避免資料庫命名與 C# 命名互相牽制。

程式設計需先確認

確認項建議
是否新增 Infrastructure 專案建議先分析現有結構後再決定
是否新增 ITaskStore 實作建議沿用現有 TaskStore 概念,不直接改 Core 行為
是否修改 public method第一版應避免,若必要需先確認
是否引入 MySQL 套件需先做套件選型與確認
是否引入 ORM建議先比較 Dapper、EF Core、原生 MySqlConnector
是否改 ConsoleHost 啟動方式不建議,第一版應維持既有啟動方式
是否支援 MySQL 5.6.2必須列為套件選型與 SQL 設計的必要條件

PoC 驗收標準

驗收項預期結果
成功流程寫入三節點成功流程完成後,DB 可查到 Task / Node / Command
失敗流程寫入設備離線或節點失敗時,DB 可查到 ErrorInfo
重試紀錄重試後成功或失敗時,RetryCount 與節點結果可查
重啟查詢ConsoleHost 重啟後,仍可查詢前一次任務紀錄
Log 對照FileLog / ConsoleLog 與 DB 紀錄的 TaskId 可對應
不影響既有測試Core / Adapter / WorkflowSimulation 測試仍通過
MySQL 5.6.2 相容性PoC SQL 與套件可在 MySQL 5.6.2 環境執行

人工驗證節點建議

P2-01 MySQL TaskStore PoC 人工驗證

驗證回報需包含驗證環境、MySQL 連線設定來源、MySQL 版本確認結果、sample workflow、執行指令、DB 查詢結果摘要、Log 與 DB TaskId 是否一致、發現問題或限制與下一步建議。

風險與控制方式

風險控制方式
過早設計完整正式資料庫第一版只做 PoC schema,不承諾正式 schema
案場邏輯進入資料表只保存共用任務與設備命令欄位
改動 Core public API優先用介面或 Infrastructure 實作承接,必要時先討論
DB 連線失敗影響流程需定義 DB 寫入失敗時是否讓任務失敗
RawRequest / RawResponse 過大第一版需限制欄位型態與保存策略
MySQL 5.6.2 已屬舊版環境PoC 先求相容;正式化前另做升級或版本風險評估
新版 SQL 功能不可用SQL 語法與欄位型態需採保守設計

需要使用者確認

  1. 是否同意第二階段第一個 PoC 以 MySQL TaskStore 為主。
  2. 第一版是否只保存任務歷程,不保存設備即時狀態。
  3. 是否保存 RawRequest / RawResponse。
  4. 是否保存 AdapterData。
  5. DB 寫入失敗時,任務是否應失敗,還是只記錄警告。
  6. 是否確認 PoC 目標資料庫版本固定為 MySQL 5.6.2。
  7. 是否先做「MySQL 套件選型分析」,再進入程式實作。

建議下一步

MySQL 套件選型分析請參考:MySQL 套件選型分析

目前建議第一版 PoC 採用 MySqlConnector,暫不導入 Dapper、EF Core、Pomelo 或 migration。

MySQL Schema 自動建表設計請參考:MySQL Schema 自動建表設計

MySQL schema Class 初稿請參考:MySQL schema Class 初稿

完成套件選型、自動建表設計與 Class 初稿後,再進入:

  1. Schema Attribute 實作前確認。
  2. TaskStore 介面承接設計。
  3. MySQL TaskStore PoC 實作前確認。