3D Application contract 決策確認表
本文件承接 3D Application contract 草案 / 實作前確認表,記錄使用者對 3D Application contract 七項決策的確認結果。
本文件只做決策確認,不代表已修改程式 repo,不代表已建立 Plugin Loader、不代表已載入外部 DLL,也不代表已同意修改 Adapter public contract、config schema、ServiceHost、WebApi、API route、DB DDL 或正式 Apply。
0. 確認狀態
| 項目 | 內容 |
| 文件狀態 | 已確認 |
| 整理日期 | 2026-06-06 |
| 確認日期 | 2026-06-06 |
| 對應階段 | 第三階段 3D Plugin / 多設備單元 |
| 前置文件 | 3D Application contract 草案 / 實作前確認表 |
| 程式 repo | hs-device-control-template |
| 程式 branch | poc/nmodbus-tcp |
| 程式 commit | aee6ab6a2c3818ecdd244ce7f1db01d763ed4a14 |
| 本次確認範圍 | Application 層放置位置、ControlUnits、Resources、Commands、Plugins、Application error code / tests 與停止線 |
| 確認結果 | 使用者已回覆 1 至 7 全部同意 |
| 確認後可進入 | 3D Application contract 第一版實作前最後確認,或在同一停止線內進入最小 Application contract 程式實作 |
| 本次仍不做 | 不改 Core / Adapters public contract、不新增 ServiceHost / WebApi、不新增 route、不載入 DLL、不建立 Plugin Loader、不改 config schema、不連 DB、不執行 DDL 或正式 Apply |
1. 使用者確認內容
使用者已於 2026-06-06 回覆:
3D Application contract 確認:
1. 同意
2. 同意
3. 同意
4. 同意
5. 同意
6. 同意
7. 同意
2. 七項決策定案
| 編號 | 決策項 | 定案結果 | 可進入項目 | 仍需停止 |
| 1 | Application 層放置位置 | 同意 3D 第一版只新增於 HS.DeviceControl.Application 與 HS.DeviceControl.Application.Tests。 | 可新增 ControlUnits / Resources / Commands / Plugins 資料夾。 | 不改 Core、Adapters、Infrastructure、ConsoleHost。 |
| 2 | ControlUnits contract | 同意以 ControlUnitDefinition、ControlUnitDeviceBinding、ControlUnitStatusResult 作為第一版命名。 | 可實作 read-only catalog / status contract。 | 不改 config schema、不保存連線資訊。 |
| 3 | Resources contract | 同意新增 IResourceLockService 與 lock / release request-result DTO。 | 可實作 fake / in-memory resource lock 測試。 | 不建立 DB table、不做跨 process lock。 |
| 4 | Commands contract | 同意第一版只做 DeviceCommandPlan,不建立正式 Command Queue。 | 可實作 command plan / validation contract。 | 不呼叫 Adapter Execute()、不新增背景 worker。 |
| 5 | Plugins contract | 同意第一版只做 PluginDescriptor / catalog metadata。 | 可實作 read-only plugin catalog contract。 | 不建立 Plugin Loader、不載入 DLL、不掃描資料夾。 |
| 6 | Error code / tests | 同意只補 Application 層錯誤碼與 Application.Tests。 | 可新增 APP-03xx 錯誤與單元測試。 | 不改 Core error contract、不連 DB、不接硬體。 |
| 7 | 停止線 | 同意本批仍不新增 ServiceHost / WebApi、不改 Adapter public contract、不改 config schema。 | 可安全進入最小 Application contract 程式實作。 | 不保存 secret、不改啟動方式、不導入新套件。 |
3. 實作邊界定案
| 邊界 | 定案 |
| 程式放置位置 | 僅限 src/HS.DeviceControl.Application 與 tests/HS.DeviceControl.Application.Tests。 |
| ControlUnits | 只做 read-only catalog / status contract,不持有硬體連線資訊。 |
| Resources | 只做 fake / in-memory lock contract,不建立 DB table 或分散式鎖。 |
| Commands | 只做 command plan / validation,不建立正式 queue、不呼叫 Adapter Execute()。 |
| Plugins | 只做 metadata catalog,不建立 Loader、不掃描或載入 DLL。 |
| Error code | 僅補 Application 層 APP-03xx 錯誤碼,不改 Core error contract。 |
| Tests | 僅使用 xUnit、fake / in-memory 測試,不連 DB、不接硬體、不載入 DLL。 |
4. 實作前仍需遵守
即使七項全部同意,除非使用者另行明確授權,仍不得自動執行:
- 不新增
ServiceHost專案。 - 不新增
WebApi專案。 - 不新增 API route、controller、endpoint 或 middleware。
- 不新增或更換 plugin framework、queue framework、DI / Host framework。
- 不修改
IDeviceAdapter、DeviceCommand、ExecuteResultpublic contract。 - 不修改 Core / Adapters / Infrastructure public method 簽章。
- 不修改
devices.json/workflows.json/appsettings.jsonschema。 - 不建立 Plugin Loader。
- 不掃描 plugin folder。
- 不載入外部 DLL。
- 不保存密碼、Token、IP、Port、完整 connection string、正式 DLL 路徑或正式環境資訊。
- 不執行 DB 寫入、DDL、ALTER TABLE 或正式 Apply。
- 不改程式啟動方式。
5. 建議下一步
3D Application contract 七項決策已確認。建議下一步進入「3D Application contract 第一版實作前最後確認」或直接依本文件停止線執行最小 Application contract 程式實作;實作範圍仍限於 HS.DeviceControl.Application 與 HS.DeviceControl.Application.Tests。