3D Application contract 決策確認表

記錄 3D Application contract 七項決策確認結果與後續實作停止線。

返回 docs

3D Application contract 決策確認表

本文件承接 3D Application contract 草案 / 實作前確認表,記錄使用者對 3D Application contract 七項決策的確認結果。

本文件只做決策確認,不代表已修改程式 repo,不代表已建立 Plugin Loader、不代表已載入外部 DLL,也不代表已同意修改 Adapter public contract、config schema、ServiceHostWebApi、API route、DB DDL 或正式 Apply。

0. 確認狀態

項目內容
文件狀態已確認
整理日期2026-06-06
確認日期2026-06-06
對應階段第三階段 3D Plugin / 多設備單元
前置文件3D Application contract 草案 / 實作前確認表
程式 repohs-device-control-template
程式 branchpoc/nmodbus-tcp
程式 commitaee6ab6a2c3818ecdd244ce7f1db01d763ed4a14
本次確認範圍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. 七項決策定案

編號決策項定案結果可進入項目仍需停止
1Application 層放置位置同意 3D 第一版只新增於 HS.DeviceControl.ApplicationHS.DeviceControl.Application.Tests可新增 ControlUnits / Resources / Commands / Plugins 資料夾。不改 Core、Adapters、Infrastructure、ConsoleHost。
2ControlUnits contract同意以 ControlUnitDefinitionControlUnitDeviceBindingControlUnitStatusResult 作為第一版命名。可實作 read-only catalog / status contract。不改 config schema、不保存連線資訊。
3Resources contract同意新增 IResourceLockService 與 lock / release request-result DTO。可實作 fake / in-memory resource lock 測試。不建立 DB table、不做跨 process lock。
4Commands contract同意第一版只做 DeviceCommandPlan,不建立正式 Command Queue。可實作 command plan / validation contract。不呼叫 Adapter Execute()、不新增背景 worker。
5Plugins contract同意第一版只做 PluginDescriptor / catalog metadata。可實作 read-only plugin catalog contract。不建立 Plugin Loader、不載入 DLL、不掃描資料夾。
6Error 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.Applicationtests/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. 實作前仍需遵守

即使七項全部同意,除非使用者另行明確授權,仍不得自動執行:

5. 建議下一步

3D Application contract 七項決策已確認。建議下一步進入「3D Application contract 第一版實作前最後確認」或直接依本文件停止線執行最小 Application contract 程式實作;實作範圍仍限於 HS.DeviceControl.ApplicationHS.DeviceControl.Application.Tests