智慧設備順序控制系統共用骨架文件
本 repository 是「智慧設備順序控制系統共用骨架」的文件 repo,用來整理架構方向、第一階段開工規格、AI / Codex 工作規則、開發進度與驗證節點紀錄。
正式程式碼放在另一個 repository:
正式文件網站
https://hs-device-control-template-docs.pages.dev/
專案目標
本專案目標是建立可重複使用、可擴充、可維護、可追蹤的智慧設備順序控制系統共用骨架。
適用場景包含醫院智慧藥局、智慧調劑台、電子紙、RFID、燈號導引、門禁、秤重、藥櫃、傳送櫃、PLC / IO 控制等。
第一階段重點是先完成可驗證的控制核心,而不是一次完成完整平台。
Repository 定位
本專案採用「文件 repo 與程式 repo 分開」。
| repo | 用途 |
hs-device-control-template-docs | 前導文件、架構方向、開工規格、AI / Codex 工作規則、docs 文件、Cloudflare Pages 發布包 |
hs-device-control-template | .NET 5.0 Solution、Core Library、Device Adapters、ConsoleHost、Tests、config / samples |
執行檔、安裝包與部署包不放入文件 repo。未來若需要正式交付,可使用 GitHub Releases、CI/CD artifact 或公司內部檔案庫管理。
目前狀態
| 項目 | 狀態 |
| 文件網站 | 已發布至 Cloudflare Pages |
| 前導文件 | 已拆分為架構方向與第一階段開工規格 |
| 程式 repo | 已建立 hs-device-control-template |
| .NET 5.0 程式骨架 | 已建立 Solution、Core、Adapters、ConsoleHost 與測試專案 |
| 公開 API XML 註解 | 已補強 |
| Workflow 定義驗證規則 | 已完成 |
| 驗證節點規則 | 已建立,用於功能節點完成後回報實際效果 |
| Config Loader | 已完成,可載入 samples/config 並交由 Config Validator 驗證 |
| Config Mapper | 已完成,可將 WorkflowConfiguration 轉成 WorkflowDefinition |
| ConsoleHost 設定檔啟動 | 已完成,代表流程已改走完整設定檔鏈路 |
| Log 輸出格式 | 已完成 ConsoleLogWriter / FileLogWriter 共用單行 key-value 格式 |
| 驗證節點紀錄 | 已補齊 Config Loader / Config Mapper / ConsoleHost 設定檔啟動實際效果 |
| DeviceId 執行鏈路 | 已完成從設定檔、WorkflowNode、DeviceCommand 到 Log 的串接 |
| 節點失敗與重試驗證 | 已完成設備離線、節點逾時、重試後成功、重試耗盡失敗案例 |
| Adapter 分派器 | 已完成依 DeviceId 選擇不同設備 Adapter 的最小版本 |
| TaskEngine 最小版本 | 已完成任務狀態、開始時間、結束時間、耗時與結果追蹤 |
| Adapter 生命週期 | 已完成 Connect、Disconnect、GetStatus 與 Mock Adapter 狀態驗證 |
詳細進度請見:
建議閱讀順序
- 先看 架構方向。
- 再看 第一階段開工規格。
- 接著看 開發進度總覽。
- 若要協作或修改內容,先看 AGENTS.md。
- 第一階段驗收完成後,看 第二階段規劃總覽。
- 確認第一個主軸後,看 MySQL TaskStore PoC 實作前確認清單。
- 確認 MySQL PoC 範圍後,看 MySQL 套件選型分析。
- 確認資料庫建置方式後,看 MySQL Schema 自動建表設計。
- 確認自動建表策略後,看 MySQL schema Class 初稿。
- 進入程式實作前,看 MySQL 行前連線資訊確認。
- 提供環境資訊時,看 MySQL 行前資訊填寫範本。
- 進入程式 repo 前,看 MySQL Schema Attribute 實作前確認。
- 進入 Schema Initializer 程式實作前,看 Schema Initializer DryRun 實作前確認。
- 查看目前實作結果,看 Schema Initializer DryRun 第一版實作紀錄。
- 規劃 ConsoleHost 接入方式,看 Schema Initializer DryRun ConsoleHost 接入設計。
- 進入接入實作前,看 Schema Initializer DryRun ConsoleHost 接入實作前確認。
- 查看接入實作結果,看 Schema Initializer DryRun ConsoleHost 接入實作紀錄。
- 查看實際效果,看 ConsoleHost Schema Initializer DryRun 人工驗證紀錄。
- 進入真實 MySQL Inspector 前,看 Schema Automation 第一輪收尾檢查。
- 確認真實 DB metadata 邊界,看 真實 MySQL Inspector 前置確認。
- 進入第一版實作前,看 MySqlSchemaInspector 實作前確認清單。
- 不導入套件前先看 MySqlSchemaInspector Query Builder / Row Mapper 設計。
- 實作前看 Query Builder / Row Mapper 實作前確認。
- 進入程式 repo 前看 程式 repo 結構檢查與第一版實作範圍盤點。
- 查看目前實作結果,看 MySQL Schema Inspector 純程式 helper 實作紀錄。
- 整理文件網站版面前,看 文件網站資訊架構整理規劃。
- 重整首頁導覽與需求呈現前,看 文件網站導覽重整方案。
- 查看需求符合度與平台化邊界,看 專案能力邊界與平台化需求地圖。
- 查看第二階段邊界,看 第二階段儀表板。
- 查看 MySQL / Schema Automation 視覺化進度,看 資料庫可視化儀表板。
- 進入真實 DB provider 前,看 MySqlSchemaInspector 真實 DB provider 實作前確認。
- 查看真實 MySQL 5.6.2 detailed logger 驗證結果,看程式 repo 的
docs/mysql-real-schema-inspector-mysql56-manual-verification-record.md。 - 查看 MySQL TaskStore
node_executions真實 DB 寫入 / 查詢 / cleanup 結果,看 MySQL TaskStore node_executions 真實 DB 驗證紀錄。 - 釐清命令明細表資料來源,看 MySQL TaskStore command_executions 實作前確認。
- 釐清詳細診斷資料保存邊界,看 MySQL DB LogWriter / TraceStore 邊界設計。
- 進入第一版實作前,看 MySQL DB LogWriter / TraceStore 實作前確認。
- 盤點第二階段 B 完成與延後邊界,看 第二階段 B 補完清單與收斂結論。
- 查看 DB LogWriter 第一版結果,看 MySQL DB LogWriter / TraceStore 第一版實作紀錄。
- 查看 DB LogWriter manual-only 入口,看 MySQL DB LogWriter / TraceStore manual-only xUnit 驗證入口實作紀錄。
- 查看真實 DB 驗證前停止線,看 MySQL DB LogWriter 真實 DB 驗證前確認清單。
- 查看真實 DB 驗證通過結果,看 MySQL DB LogWriter task_log_traces 真實 DB 驗證紀錄。
- 查看 trace 查詢邊界,看 MySQL TaskTraceStore 查詢邊界設計。
- 進入 public 查詢介面前,看 TaskTraceStore public 查詢介面實作前確認。
- 查看 Apply 安全策略,看 MySQL Schema Apply / DDL Executor 安全策略。
- 查看第二階段 B 完成判定,看 第二階段 B 收斂稽核。
- 進入第三階段前,先看 第三階段前置規劃。
- 查看第三階段執行主線,看 第三階段執行儀表板。
- 進入 3B 前,先看 ManualApplyPreview 實作前確認。
- 確認 3B 決策時,看 3B ManualApplyPreview 決策確認表。
- 查看 3B 第一版實作結果,看 ManualApplyPreview 第一版實作紀錄。
- 查看 3B 是否可收斂,看 ManualApplyPreview 3B 完成稽核表。
- 查看 3B 文件是否已線上發布,看 ManualApplyPreview 3B 線上驗收紀錄。
- 進入 3C 前,看 3C Service / API 邊界分析。
- 確認 3C 決策時,看 3C Service / API 決策確認表。
- 進入 3C 程式實作前,看 3C 程式 repo 結構檢查與實作前確認。
- 確認 Application Service contract 時,看 3C Application Service contract 草案 / 實作前確認表。
- 查看 Application contract 第一版實作時,看 3C Application contract 第一版實作紀錄。
- 查看 3C 完成狀態時,看 3C Application contract 完成稽核表。
- 準備提交前,看 3C Application contract commit / push 前確認。
- 查看 3C 文件是否已線上發布,看 3C Application contract 線上驗收紀錄。
- 進入 3D 平台化擴充前,看 3D Plugin / 多設備單元邊界分析。
- 確認 3D 下一步前,看 3D Plugin / 多設備單元決策確認表。
- 確認 3D contract 前,看 3D contract 草案 / 實作前確認表。
- 查看 3D contract 決策結果時,看 3D contract 決策確認表。
- 查看 3D 目標模式收斂狀態,看 3D Plugin / 多設備單元完成稽核表。
- 查看 3D 文件是否已線上發布,看 3D Plugin / 多設備單元線上驗收紀錄。
- 進入 3D 程式實作前,看 3D 程式 repo 結構檢查與實作前確認。
- 查看 3D 程式 repo 結構檢查是否已線上發布,看 3D 程式 repo 結構檢查線上驗收紀錄。
- 確認 3D 第一版 Application contract 前,看 3D Application contract 草案 / 實作前確認表。
- 查看 3D Application contract 決策結果時,看 3D Application contract 決策確認表。
- 查看 3D Application contract 第一版實作時,看 3D Application contract 第一版實作紀錄。
- 準備提交 3D Application contract 前,看 3D Application contract commit / push 前確認。
- 收斂第三階段時,看 第三階段總收斂確認表。
- 進入第四階段正式入口前,看 4A WebApi / ServiceHost / Plugin Loader 邊界分析。
- 確認 4A 七項決策時,看 4A WebApi / ServiceHost / Plugin Loader 決策確認表。
- 判斷 WebApi、ServiceHost、Plugin Loader 執行階段時,看 第四階段 4B / 4C / 4D 執行切分表。
- 查看 4A / 4B 切分是否已線上發布,看 第四階段 4A / 4B 切分線上驗收紀錄。
- 確認第四階段總標準、文件、施作範圍與驗收條件,看 第四階段標準 / 文件 / 施作範圍 / 驗收條件總表。
- 查看第四階段目標模式是否已完成,看 第四階段目標模式完成稽核表。
- 進入 4B WebApi 程式實作前,看 4B WebApi contract 草案 / 實作前確認表。
- 查看 4B 七項建議是否已確認,看 4B WebApi 決策確認紀錄。
- 查看 4B WebApi 第一版實作與 API / DB 驗收結果,看 4B WebApi 第一版實作與 API / DB 驗收紀錄。
- 進入 4C ServiceHost 程式實作前,看 4C ServiceHost contract 草案 / 實作前確認表。
- 查看 4C 七項建議是否已確認,看 4C ServiceHost 決策確認紀錄。
- 查看 4C 程式 repo 結構檢查與預計修改範圍,看 4C ServiceHost 程式 repo 結構檢查表。
- 查看 4C ServiceHost 第一版實作與驗收結果,看 4C ServiceHost 實作與驗收紀錄。
- 查看 4C 是否已可標記本機完成,看 4C ServiceHost 完成稽核表。
- 進入 4D PluginLoader 前,看 4D PluginLoader 邊界分析。
- 確認 4D 七項建議時,看 4D PluginLoader 決策確認表。
- 確認 4D contract 草案與候選檔案時,看 4D PluginLoader contract 草案 / 實作前確認表。
- 查看 4D 程式 repo 結構檢查與候選修改範圍,看 4D PluginLoader 程式 repo 結構檢查表。
- 進入 4D 最小 Application plugin contract 程式實作前,看 4D 最小 Application plugin contract 實作前最後確認表。
- 查看 4D 最小 Application plugin contract 第一版實作結果,看 4D 最小 Application plugin contract 實作與驗收紀錄。
- 查看 4D 是否可收斂,看 4D PluginLoader 完成稽核表。
- 收斂第四階段時,看 第四階段完成確認表。
- 查閱 4D 程式提交範圍與執行結果時,看 4D Application plugin contract commit / push 前確認。
- 查閱第四階段是否已完成線上驗收時,看 第四階段線上驗收紀錄。
- 規劃 Loader、DLL、DB、config、auth 與 Windows Service 何時開始驗證 / 程式實作時,看 第四階段後續功能節點切分表。
- 確認 4E 到 5F 後續推進順序與停止線時,看 4E 後續功能節點決策確認表。
- 進入 5A PluginLoader 前確認時,看 5A PluginLoader 實作前確認表。
- 查看後續 Loader、外部 DLL、config schema、DB audit、auth / Swagger、Windows Service 的文件 / 實作 / 驗收範圍時,看 第五階段 Loader 到 Service 後續文件 / 實作 / 驗收範圍補齊表。
- 進入 5A 最小 PluginLoader 程式實作前,看 5A PluginLoader 程式 repo 結構檢查與實作前盤點。
- 確認 5A 最小 PluginLoader public contract、候選檔案、error codes 與停止線時,看 5A 最小 PluginLoader 實作前最後確認表。
- 查驗 5A 最後確認表是否已在線上文件網站可追溯時,看 5A 最小 PluginLoader 最後確認表線上驗收紀錄。
- 確認 5A 實作後應跑的測試案例、停止線掃描與驗收證據時,看 5A 最小 PluginLoader 實作測試案例與停止線稽核表。
- 查閱外部 DLL manual-only 邊界七項確認時,看 外部 DLL manual-only 邊界決策確認紀錄。
- 進入外部 DLL manual-only 程式實作前,看 外部 DLL manual-only 程式 repo 結構檢查與實作前確認。
- 查看外部 DLL manual-only fake verifier 實作與驗收結果時,看 外部 DLL manual-only fake verifier 實作與驗收紀錄。
- 進入 5B config schema 前,看 5B config schema 邊界分析。
- 確認 5B config schema 候選欄位、測試與停止線時,看 5B config schema 實作前確認表。
- 查驗 5B config schema 實作前文件是否已在線上可追溯時,看 5B config schema 實作前確認線上驗收紀錄。
- 查閱 5B config schema 程式 repo 唯讀結構檢查、候選檔案與測試基準時,看 5B config schema 程式 repo 結構檢查與實作前盤點。
- 查看 5B config schema 程式實作、測試與停止線驗收時,看 5B config schema 實作與驗收紀錄。
- 進入 5C DB audit 前,看 5C DB audit 邊界分析。
- 確認 5C audit event、fake writer、DB 停止線與測試基準時,看 5C DB audit 實作前確認表。
- 查閱 5C 程式 repo 唯讀結構檢查、候選檔案與測試基準時,看 5C DB audit 程式 repo 結構檢查與實作前盤點。
- 確認 5C 第一批程式實作後應跑的測試案例、停止線掃描與驗收證據時,看 5C DB audit 實作測試案例與停止線稽核表。
- 查驗 5C 實作前文件包是否已在線上可追溯時,看 5C DB audit 實作前文件線上驗收紀錄。
- 查看 5C DB audit 第一批程式實作、測試與停止線驗收時,看 5C DB audit 實作與驗收紀錄。
- 進入 5D auth / Swagger 前,看 5D auth / Swagger 邊界分析。
- 確認 5D auth model、Swagger dev-only、secret 停止線與測試基準時,看 5D auth / Swagger 實作前確認表。
- 查閱 5D 程式 repo 唯讀結構檢查、候選檔案與測試基準時,看 5D auth / Swagger 程式 repo 結構檢查與實作前盤點。
- 確認 5D 第一批程式實作後應跑的測試案例、停止線掃描與驗收證據時,看 5D auth / Swagger 實作測試案例與停止線稽核表。
- 查驗 5D 實作前文件包是否已在線上可追溯時,看 5D auth / Swagger 實作前文件線上驗收紀錄。
- 回覆 5D 七項最後確認前,看 5D auth / Swagger 最小實作前最後確認表。
- 查驗 5D 最後確認表是否已在線上可追溯時,看 5D auth / Swagger 最小實作前最後確認表線上驗收紀錄。
- 5D 確認後要照哪個檔案、順序、測試與停止線施作時,看 5D auth / Swagger 實作工作包。
- 查看 5D auth / Swagger 第一批程式實作、測試與停止線驗收時,看 5D auth / Swagger 實作與驗收紀錄。
- 查驗 5D auth / Swagger 實作驗收頁與 remaining gate 頁是否已在線上可追溯時,看 5D auth / Swagger 線上驗收紀錄。
- 進入 5E Windows Service 前,看 5E Windows Service 邊界分析。
- 確認 5E service hosting、安裝停止線、敏感資訊與測試基準時,看 5E Windows Service 實作前確認表。
- 查閱 5E 程式 repo 唯讀結構檢查、候選檔案與測試基準時,看 5E Windows Service 程式 repo 結構檢查與實作前盤點。
- 確認 5E 第一批程式實作後應跑的測試案例、停止線掃描與驗收證據時,看 5E Windows Service 實作測試案例與停止線稽核表。
- 查驗 5E 實作前文件包是否已在線上可追溯時,看 5E Windows Service 實作前文件線上驗收紀錄。
- 回覆 5E 七項最後確認前,看 5E Windows Service 最小實作前最後確認表。
- 查驗 5E 最後確認表是否已在線上可追溯時,看 5E Windows Service 最小實作前最後確認表線上驗收紀錄。
- 5E 七項確認後要照哪個檔案、順序、測試與停止線施作時,看 5E Windows Service 實作工作包。
- 查看 5E 實作前最新測試與停止線刷新結果時,看 5E Windows Service 實作前現況刷新紀錄。
- 查看 5E Windows Service 最小 hosting gate 程式實作、測試、停止線與 Actions 驗收時,看 5E Windows Service 實作與驗收紀錄。
- 查驗 5E 實作驗收頁、首頁、
progress.json與status.json是否已在線上可追溯時,看 5E Windows Service 線上驗收紀錄。 - 盤點第五階段剩餘 gate、完成條件與不可越權項目時,看 第五階段剩餘 gate 與完成條件稽核表。
- 5E Windows Service 程式實作完成後,進入第五階段總整合驗收前,看 5F 第五階段整合驗收計畫。
- 5E Windows Service 程式實作驗收完成後,執行 5F 前看 5F 第五階段整合驗收執行前確認表。
- 查驗 5F 分項測試、全量測試、runtime smoke、停止線與污染掃描結果時,看 5F 第五階段整合驗收紀錄。
- 確認第五階段是否可標記完成時,看 第五階段完成稽核表。
- 查驗第五階段線上文件是否已可追溯 5F 驗收與完成稽核時,看 第五階段線上驗收紀錄。
目前下一步
- 第四階段最小範圍已完成程式 repo commit / push、Actions 查驗與文件網站線上驗收;查閱 第四階段線上驗收紀錄 可確認 Cloudflare Pages、
status.json、第四階段完成確認表與 4D commit / push 前確認頁的線上結果。 - 已建立 第四階段後續功能節點切分表,4E 後續功能節點決策確認表 已確認七項皆同意,5A PluginLoader 實作前確認表 也已確認七項皆同意。
- 已新增 第五階段 Loader 到 Service 後續文件 / 實作 / 驗收範圍補齊表,補齊 5A 到 5F 的 Loader、外部 DLL、config schema、DB audit、auth / Swagger、Windows Service 與整合驗收範圍。
- 已完成 5A PluginLoader 程式 repo 結構檢查與實作前盤點、5A 最小 PluginLoader 實作前最後確認表、5A 最後確認表線上驗收紀錄、5A 實作測試案例與停止線稽核表;外部 DLL manual-only 邊界七項與程式結構實作前七項皆已確認,程式 repo commit
bc3f191已新增 fake verifier 並通過 Application.Tests 57 passed、solution tests 509 passed、Actions run27085788163success;外部 DLL manual-only fake verifier 實作與驗收紀錄 已建立。5B config schema 已完成實作並 push,程式 repo commit1f635d6已新增 metadata-only appsettings schema、validator、safe sample config、Core tests 與docs/config-schema.md;Core.Tests 196 passed、Application.Tests 57 passed、solution tests 516 passed、Actions run27087431249success;5B config schema 實作與驗收紀錄 已建立。5C 已完成 DB audit 第一批程式實作並 push,程式 repo commit354fecd已新增 Application 層 audit event contract、write result、IAuditEventWriter、InMemoryAuditEventWriter、APP-0361到APP-0363與測試;Application.Tests 67 passed、Infrastructure.MySql.Tests 89 passed、solution tests 526 passed、Actions run27089597494success;5C DB audit 實作與驗收紀錄 已建立。5D 已完成 WebApi 最小 API key gate、protected controller policy、development-only Swagger 與邊界測試;程式 commitc92342b已推送,Actions run27094590136success;WebApi.Tests 17 passed、Application.Tests 67 passed、solution tests 536 passed,停止線掃描未命中 DB DDL、Windows Service、外部 DLL loading、JWT / OAuth / OIDC / Bearer、password / secret;5D auth / Swagger 實作與驗收紀錄 已建立。 - 5E 已完成最小 Windows Service hosting gate 並 push,程式 commit
0789d35已新增非敏感 options、runner、console smoke path 保留、明確--windows-servicesmoke path 與 tests;ServiceHost.Tests 19 passed、Application.Tests 67 passed、solution tests 548 passed、Actions run27098568634success;5E Windows Service 實作與驗收紀錄 已建立。 - 5E 文件同步與線上查核已完成,5E Windows Service 線上驗收紀錄 已確認首頁、
progress.json、status.json與 5E 實作驗收頁可追溯0789d35。5F 已取得七項確認並完成整合驗收;5F 第五階段整合驗收紀錄 已記錄分項測試、全量測試 548 passed、runtime smoke、停止線掃描與污染掃描,第五階段完成稽核表 已判定第五階段已授權最小範圍完成。 - 仍需另行確認後才可執行任何正式 DB 寫入、DDL / ALTER TABLE、正式 Apply、密碼保存、連線資訊保存、修改 public method 簽章、導入 WebApi auth / Swagger / 正式部署設定,或擴大到真正 PluginLoader / 外部 DLL 載入。
- 已完成 MySQL Schema Inspector 純程式 helper 實作紀錄,程式 repo 代表版本為
51cb17c。 - 第二階段已拆成 A / B:A 已完成 MySQL TaskStore Save upsert、
FindById/ListRecent查詢還原 PoC、真實 DB manual-only 驗證、node_executions真實 DB 寫入 / 查詢 / cleanup 驗證、command_executions實作前確認與 DB LogWriter / TraceStore 邊界設計;B 已完成 DB LogWriter / TraceStore 第一版、manual-only xUnit 入口、真實 DB 驗證前確認清單、TaskTraceStore 查詢邊界設計、Schema Apply 安全策略、測試 DB DDL 建表、task_log_traces真實 DB 寫入 / 查詢 / cleanup 驗證與收斂稽核;程式 repo 最新版本為84ec9a1。 - 已整理 第三階段執行儀表板,首頁專案總攬已顯示 3A Trace 查詢、3B DB 初始化、3C Service / API、3D Plugin / 多設備單元四條主線;3A Trace 查詢已完成,3B ManualApplyPreview 實作前確認、3B ManualApplyPreview 決策確認表、ManualApplyPreview 第一版實作紀錄、ManualApplyPreview 3B 完成稽核表 與 ManualApplyPreview 3B 線上驗收紀錄 已完成;3C Service / API 邊界分析、3C Service / API 決策確認表 與 3C 程式 repo 結構檢查與實作前確認 已整理完成,使用者已同意七項決策。3B 程式 repo commit
13c14ca已新增第一版安全預覽並完成線上文件內容比對。 - 目前 3C 已完成 Application contract 第一版實作紀錄、3C Application contract 完成稽核表、3C Application contract commit / push 前確認 與 3C Application contract 線上驗收紀錄;程式 repo commit
aee6ab6已 push 至poc/nmodbus-tcp,文件 repo 已完成線上內容比對。 - 已完成 3D Plugin / 多設備單元邊界分析、3D Plugin / 多設備單元決策確認表、3D contract 草案 / 實作前確認表、3D contract 決策確認表、3D Plugin / 多設備單元完成稽核表、3D Plugin / 多設備單元線上驗收紀錄、3D 程式 repo 結構檢查與實作前確認、3D 程式 repo 結構檢查線上驗收紀錄、3D Application contract 草案 / 實作前確認表 與 3D Application contract 決策確認表;使用者已同意 3D 前置七項決策、contract 七項決策與 Application contract 七項決策,文件 repo 已完成 push 與 Cloudflare Pages 線上內容比對,且程式 repo 唯讀盤點判定 Application 層可承接 3D contract。本階段目前只整理外部 DLL、多設備單元、Resource Lock、Command Queue、Plugin metadata、設定版本與停止線,不載入 DLL、不改 Adapter public contract、不新增 ServiceHost / WebApi。
- 3D Application contract 第一版已完成 實作紀錄、commit / push 前確認 與 完成稽核表;程式 repo commit
a158551已 push 至poc/nmodbus-tcp,Application tests 30 passed,solution tests 468 passed,Notify docs repo statusActions 成功。本階段仍不載入 DLL、不建立 Plugin Loader、不改 Adapter public contract、不改 config schema、不新增ServiceHost/WebApi。 - 已建立 第三階段總收斂確認表,集中確認 3A、3B、3C、3D 都已在核准範圍內完成,並列出真實 DB read-only preview、WebApi / ServiceHost、Plugin Loader、正式 DB Apply 等非阻擋殘留項。
- 已建立 4A WebApi / ServiceHost / Plugin Loader 邊界分析,先釐清正式執行入口、背景執行入口、Plugin Loader、Application 共用協調層、部署維運與停止線;本文件不代表同意新增
ServiceHost/WebApi、API route、Plugin Loader、外部 DLL 載入、config schema 調整或正式 DB 操作。 - 已建立 4A WebApi / ServiceHost / Plugin Loader 決策確認表,等待使用者逐項確認 WebApi、ServiceHost、Plugin Loader、Application 共用協調層、部署維運與停止線七項決策。
- 已建立 第四階段 4B / 4C / 4D 執行切分表,暫定 WebApi 在 4B、ServiceHost 在 4C、Plugin Loader 在 4D;所有程式實作仍需另行實作前確認。
- 已建立 第四階段 4A / 4B 切分線上驗收紀錄,確認 Cloudflare Pages 首頁、4A 決策確認表、4B / 4C / 4D 切分表、第三階段儀表板與
progress.json已反映f071c87。 - 已建立 第四階段標準 / 文件 / 施作範圍 / 驗收條件總表 與 第四階段目標模式完成稽核表,完成第四階段文件型標準包收斂;尚未新增 WebApi、ServiceHost 或 Plugin Loader 程式。
- 已建立 4B WebApi contract 草案 / 實作前確認表 與 4B WebApi 決策確認紀錄;使用者已確認採用建議路線。
- 4B WebApi 第一版已完成 實作與 API / DB 驗收紀錄;程式 repo commit
9527773已新增HS.DeviceControl.WebApi、WebApi controller、DTO、API tests 與 solution 掛載,WebApi tests 7 passed、solution tests 475 passed,本機 API 驗收與 Actions run27055408505均通過。 - 4C ServiceHost 第一版已完成並 push,已建立 程式 repo 結構檢查表、實作與驗收紀錄 與 完成稽核表;程式 repo commit
a846212已新增 ServiceHost runtime、state、status、options 與 tests,ServiceHost tests 7 passed、Application tests 30 passed、WebApi tests 7 passed、solution tests 482 passed,Actions run27057194166success。 - 已建立 4D PluginLoader 邊界分析,固定 PluginLoader 信任模型、metadata contract、版本相容、隔離、卸載、回復、測試策略與停止線;目前只整理文件,不建立 Loader、不掃描 plugin folder、不載入外部 DLL、不改 Adapter public contract、不改 config schema。
- 已建立 4D PluginLoader 決策確認表,使用者已同意 trust model / metadata contract、3D metadata 起點、來源白名單、版本相容、Adapter contract、ServiceHost lifecycle 與停止線七項決策;可進入 4D contract 草案 / 實作前確認表,目前仍不授權 Loader 實作或外部 DLL 載入。
- 已建立 4D PluginLoader contract 草案 / 實作前確認表,使用者已同意 metadata、verification result、state、audit、候選檔案、測試策略與七項 contract 決策;可進入程式 repo 唯讀結構檢查與最小 contract 實作評估,目前仍不建立 Loader、不建立
IPluginLoader、不掃描 plugin folder、不載入外部 DLL。 - 已完成 4D PluginLoader 程式 repo 結構檢查表,確認既有
Application.Plugins可承接最小 metadata / verification / state / audit contract,並已承接到最小 contract 程式實作前最後確認;目前仍不建立 Loader、不建立IPluginLoader、不掃描 plugin folder、不載入外部 DLL、不改 Adapter public contract、不改 config schema。 - 已確認 4D 最小 Application plugin contract 實作前最後確認表,使用者已同意七項最小 contract 決策;程式 repo 已完成本機實作與測試,Application.Tests 40 passed、solution tests 492 passed。
- 已建立 4D 最小 Application plugin contract 實作與驗收紀錄、4D PluginLoader 完成稽核表 與 第四階段完成確認表;第四階段最小範圍已完成程式 repo commit / push,commit
6f34bb9已通過 Actions run27064992270。 - 已更新 4D Application plugin contract commit / push 前確認,固定本次程式 repo stage 的 11 個檔案、測試證據、停止線、commit 訊息與實際 push / Actions 結果。
- 已建立 第四階段線上驗收紀錄,確認 Cloudflare Pages
status.json、第四階段完成確認表、4D commit / push 前確認頁、程式 Actions run27064992270與文件 repo 狀態同步 run27064994842均通過。 - 已建立 第四階段後續功能節點切分表,明確切分真正 PluginLoader、外部 DLL、config schema、DB audit、WebApi auth / Swagger、Windows Service 與整合驗收的建議順序與停止線。
- 4E 後續功能節點決策確認表 與 5A PluginLoader 實作前確認表 均已確認七項皆同意;已建立 第五階段 Loader 到 Service 後續文件 / 實作 / 驗收範圍補齊表、完成 5A 程式 repo 結構檢查、建立 5A 最小 PluginLoader 實作前最後確認表、完成 5A 線上驗收紀錄,並新增 5A 實作測試矩陣。
- 維護第二階段進度條,並在完成可驗收節點後更新
progress.json。
第一階段技術決策
| 項目 | 決策 |
| .NET 版本 | .NET 5.0 |
| 測試框架 | xUnit |
| 第一階段 Host | ConsoleHost |
| 第一階段設備 | Mock Adapter |
| 第一階段 Log | Interface + FileLogWriter / ConsoleLogWriter / MemoryLogWriter |
| 代表流程 | 燈號導引 + Sensor 驗證 |
第一階段範圍
第一階段包含:
- C# Solution 與基本專案結構
HS.DeviceControl.CoreHS.DeviceControl.AdaptersHS.DeviceControl.ConsoleHostHS.DeviceControl.Core.TestsHS.DeviceControl.Adapters.TestsHS.DeviceControl.WorkflowSimulation.Tests- WorkflowNode / WorkflowEngine
- StateMachine / TaskEngine
- IDeviceAdapter 與 Mock Adapter
- Result / ErrorInfo / ErrorCode
- FileLogWriter / ConsoleLogWriter / MemoryLogWriter
- devices.json / workflows.json / appsettings.json 範例
- Config Validator
- Config Loader
- Config Mapper
- 單元測試與流程模擬測試
第一階段不包含:
- 不接真實硬體
- 不做完整 WinForms Debug Tool
- 不做正式 Web UI
- 不做中央 Server
- 不做多案場管理
- 不做報表與統計分析
- 不導入正式資料庫
- 不做完整權限系統
- 不把案場客製邏輯寫入共用 Core
主要文件入口
| 文件 | 說明 |
| 文件首頁 | 靜態網站入口 |
| 架構方向 | 架構目標、分層方向、長期路線 |
| 第一階段開工規格 | MVP 範圍、交付成果、測試矩陣與驗收標準 |
| 前導完成檢查表 | 開工前確認項目 |
| AGENTS.md | AI / Codex 協作規則 |
| 開發進度總覽 | 目前進度與下一步 |
docs 文件索引
協作規則
- 修改前需先閱讀並遵守 AGENTS.md。
- Commit 訊息需使用繁體中文。
- Commit 訊息需清楚描述本次變更目的。
- 避免使用
update、fix、change等過於籠統的訊息。 - 未經確認,不得任意改變既有架構、資料模型、API 路由、資料庫欄位、public method 簽章與專案啟動方式。