3D Plugin / 多設備單元決策確認表
1. 文件定位
本文件承接 3D Plugin / 多設備單元邊界分析,將第三階段 3D 進入後續 contract 草案前需要使用者確認的決策整理成七項確認表。
本文件只做決策確認,不代表已同意載入外部 DLL、新增 Plugin Loader、修改 IDeviceAdapter public contract、導入 plugin / queue 套件、修改 config schema、新增 ServiceHost / WebApi、執行 DB DDL 或接真實硬體。
2. 確認狀態
| 項目 | 內容 |
| 文件狀態 | 已確認 |
| 整理日期 | 2026-06-05 |
| 確認日期 | 2026-06-05 |
| 對應階段 | 第三階段 3D Plugin / 多設備單元 |
| 前置文件 | 3D Plugin / 多設備單元邊界分析 |
| 本次目標 | 已取得 3D 後續 contract 草案前的七項決策確認 |
| 本次不做 | 不改程式、不載入 DLL、不新增 Plugin Loader、不改 Adapter contract、不改 config schema、不新增 ServiceHost / WebApi |
| 使用者回覆 | 3D 決策確認:1. 同意 ... 7. 同意,視為七項全數同意 |
3. 七項決策確認結果
| 編號 | 決策項 | 定案結果 | 同意後可進入 | 停止線 | 確認結果 |
| 1 | 3D 第一版範圍 | 第一版先做邊界、命名與 contract 草案,不載入外部 DLL。 | 可整理後續 3D contract 實作前確認。 | 不建立 Plugin Loader、不掃描 DLL、不執行 plugin 程式。 | 同意 |
| 2 | 多設備單元命名 | 採 ControlUnitId / StationId / DeviceId 三層語意作為後續草案命名基礎。 | 可整理多設備單元 DTO 與 Log / Trace 命名候選。 | 不立即修改 devices.json / workflows.json / appsettings.json schema。 | 同意 |
| 3 | Resource Lock 邊界 | Resource Lock 第一版先做 Application 層 contract 候選,不新增 DB table。 | 可整理 lock request / result / service contract 草案。 | 不導入分散式鎖、不寫 DB、不改 TaskStore schema。 | 同意 |
| 4 | Command Queue 邊界 | Command Queue 第一版先做 fake / in-memory contract 候選,不導入 queue 套件。 | 可整理 queue request / result / service contract 草案與測試策略。 | 不導入外部 queue framework、不改啟動方式、不讓 WebApi request 長時間阻塞。 | 同意 |
| 5 | Plugin 第一版策略 | Plugin 第一版先做 metadata / manifest 邊界,不建立 Loader。 | 可整理 plugin id、version、capability、checksum 與相容性欄位候選。 | 不載入 DLL、不從任意路徑掃描、不保存正式 DLL 路徑。 | 同意 |
| 6 | Adapter contract 穩定性 | 維持 IDeviceAdapter public contract 不變,後續用 wrapper / factory 承接 plugin。 | 可降低對既有 Mock / Modbus Adapter 的破壞風險。 | 未確認前不新增或改動 Adapter public method。 | 同意 |
| 7 | 3D 停止線 | 未確認前不改 config schema、不改啟動方式、不新增 ServiceHost / WebApi、不保存敏感資訊。 | 可保留 3D 為安全、可回退的文件與 contract 前置節點。 | 不保存密碼、Token、IP、Port、完整 connection string 或正式環境資訊。 | 同意 |
4. 已確認回覆
使用者已回覆:
3D 決策確認:1. 同意 ... 7. 同意
本回覆視為第 1 至第 7 項全數同意,可進入「3D contract 草案 / 實作前確認表」整理。
5. 同意後的可執行下一步
七項均已同意,建議下一步不是直接修改程式,而是先整理「3D contract 草案 / 實作前確認表」,範圍包含:
| 項目 | 草案方向 | 是否立即實作 |
| 多設備單元 DTO | ControlUnitId、StationId、DeviceId、ResourceKey 命名與資料邊界 | 否 |
| Resource Lock contract | lock request、lock result、release reason、timeout 與 owner 欄位 | 否 |
| Command Queue contract | queue request、queue status、priority 候選、cancel 與 error code | 否 |
| Plugin metadata | plugin id、version、capability、checksum、adapter factory 對應 | 否 |
| 測試策略 | fake / in-memory 測試,不連 DB、不載入 DLL | 否 |
| 停止線 | DLL、DB、config schema、Adapter public contract、ServiceHost / WebApi | 持續保留 |
6. 仍需停止的項目
即使七項已全部同意,除非使用者另行明確授權,仍不得自動執行:
- 不載入外部 DLL。
- 不掃描 plugin 目錄。
- 不新增 Plugin Loader 程式。
- 不新增或更換 plugin framework、queue framework、DI / Host framework。
- 不修改
IDeviceAdapter、Core、Adapters、Infrastructure public method 簽章。 - 不修改既有 config schema 或啟動方式。
- 不新增 ServiceHost / WebApi 專案。
- 不新增 API route、controller、endpoint 或 middleware。
- 不執行 DB 寫入、DDL、ALTER TABLE 或正式 Apply。
- 不保存密碼、Token、IP、Port、完整 connection string、正式 DLL 路徑或正式環境資訊。
- 不把案場客製流程、藥局專用規則或特定設備邏輯寫入 Core。
7. 建議下一步
七項決策已確認。建議下一步進入「3D contract 草案 / 實作前確認表」,仍以文件與候選 contract 為主,不直接進入程式實作。