3C Service / API 決策確認表
本文件承接 3C Service / API 邊界分析,把進入任何程式實作前需要使用者確認的 7 項決策整理成可逐項回覆的確認表。
本文件只做決策確認與後續回填,不代表已同意新增 ServiceHost 專案、WebApi 專案、API route、認證授權套件、背景服務、佇列套件、DB DDL、正式 Apply 或修改 public method 簽章。
0. 確認狀態
| 項目 | 內容 |
| 確認狀態 | 已確認 |
| 整理日期 | 2026-06-04 |
| 確認日期 | 2026-06-04 |
| 使用者回覆 | 7 項皆同意 |
| 後續狀態 | 已完成 3C 程式 repo 結構檢查與實作前確認;尚未進入程式實作 |
| 仍不得執行 | 新增 ServiceHost / WebApi 專案、API route、認證授權套件、背景服務、佇列套件、public method 簽章調整、DB DDL、正式 Apply、敏感連線資訊保存 |
1. 建議確認方式
使用者可直接回覆以下格式:
3C 決策確認:
1. 同意
2. 同意
3. 同意
4. 同意
5. 同意
6. 同意
7. 同意
備註:若有需要調整的項目,請寫在這裡。
若任一項不同意,建議寫成:
第 N 項不同意,改為:...
2. 七項決策確認表
| 編號 | 決策項 | 建議定案 | 若同意的影響 | 若不同意需補充 |
| 1 | Application Service 優先 | 先整理共用 Application Service contract 草案,不直接建立 WebApi controller | 可先釐清 TaskControl、Trace 查詢、DeviceStatus、SchemaPreview、Health 的共用協調層;仍不得直接新增 public method | 需說明是否要直接從 WebApi 或 ServiceHost 開始,以及如何避免重複流程邏輯 |
| 2 | ServiceHost 第一版邊界 | ServiceHost 第一版只做背景任務協調、adapter lifecycle、log / trace 與 health 摘要,不處理 HTTP | 可保持 ServiceHost 是正式背景執行入口,不把 API controller 混入 Host | 需說明是否要讓 ServiceHost 同時提供 HTTP,以及部署與責任邊界如何切分 |
| 3 | WebApi 第一版邊界 | WebApi 第一版只做 request / response、權限、DTO mapping、查詢與控制請求轉交,不直接執行 workflow | Controller 不寫 node 邏輯、不操作 Adapter、不直接碰 DB gateway | 需說明 WebApi 是否允許直接呼叫 Core / Adapter / DB,以及錯誤與 Log 如何保留 |
| 4 | Task Control 模式 | Task Control API 採建立任務後回傳 TaskId,後續用查詢 API 取得狀態與結果 | 避免長時間 workflow 阻塞 HTTP request,可支援取消、輪詢與狀態追蹤 | 需定義同步等待時間、timeout、取消與失敗回報方式 |
| 5 | Device Status 邊界 | Device Status API 第一版只讀狀態,不下設備控制命令 | 可查 DeviceId、連線狀態、最後錯誤與摘要,不改變硬體狀態 | 需定義哪些命令可直接由 API 下達,以及如何避免繞過 Task / Adapter 邊界 |
| 6 | Schema Preview API 邊界 | Schema Preview API 只回傳 ManualApplyPreview、風險與 PlanHash,不得 Apply | 可供管理者檢視 schema 差異,但不執行 DDL、不修改 DB | 需定義何時允許 Apply、gate、權限、history table、備份與 rollback |
| 7 | 實作前停止線 | 未確認前不新增專案、不導入套件、不改 public method 簽章、不新增 route | 可先做文件、contract 草案與實作前確認,避免範圍過早擴大 | 需明確指定允許新增的專案、套件、route 或 public method 範圍 |
3. 本次確認結果
| 編號 | 決策項 | 確認結果 |
| 1 | Application Service 優先 | 同意,先整理共用 Application Service contract 草案,不直接建立 WebApi controller。 |
| 2 | ServiceHost 第一版邊界 | 同意,ServiceHost 第一版只做背景任務協調、adapter lifecycle、log / trace 與 health 摘要,不處理 HTTP。 |
| 3 | WebApi 第一版邊界 | 同意,WebApi 第一版只做 request / response、權限、DTO mapping、查詢與控制請求轉交,不直接執行 workflow。 |
| 4 | Task Control 模式 | 同意,Task Control API 採建立任務後回傳 TaskId,後續用查詢 API 取得狀態與結果。 |
| 5 | Device Status 邊界 | 同意,Device Status API 第一版只讀狀態,不下設備控制命令。 |
| 6 | Schema Preview API 邊界 | 同意,Schema Preview API 只回傳 ManualApplyPreview、風險與 PlanHash,不得 Apply。 |
| 7 | 實作前停止線 | 同意,未確認前不新增專案、不導入套件、不改 public method 簽章、不新增 route。 |
4. 已確認結論
本次已採用以下結論:
- 同意先整理共用 Application Service contract 草案。
- 同意 ServiceHost 第一版只做背景任務協調,不處理 HTTP。
- 同意 WebApi 第一版只做 request / response、權限、DTO mapping、查詢與控制請求轉交。
- 同意 Task Control API 採建立任務後回傳
TaskId的模式。 - 同意 Device Status API 第一版只讀狀態,不下設備控制命令。
- 同意 Schema Preview API 只回傳
ManualApplyPreview、風險與PlanHash,不得 Apply。 - 同意未確認前不新增專案、不導入套件、不改 public method 簽章、不新增 route。
採用此結論後,已整理 3C 程式 repo 結構檢查與實作前確認;這仍不是程式實作授權,也不代表允許新增 ServiceHost / WebApi 專案。
5. 確認後可進入的工作
| 順序 | 工作 | 範圍 |
| 1 | 3C 程式 repo 結構檢查 | 已完成,只盤點現有 Solution、Core、Infrastructure、ConsoleHost、Tests 與可放置 Application Service contract 的位置。 |
| 2 | 3C 實作前確認 | 已完成,整理候選新增或修改檔案、contract 草案方向、測試策略與停止線。 |
| 3 | 小步 contract 草案 | 若使用者確認,才可進入最小 contract / DTO 草案;仍不得同時建立 WebApi / ServiceHost。 |
| 4 | 驗證節點設計 | 針對 Task Control、Device Status、Schema Preview、Health 分別定義何時需要人工驗證。 |
6. 仍需停止的項目
即使七項決策全部同意,仍不得自動執行以下項目,除非使用者另外明確授權:
- 不新增
ServiceHost專案。 - 不新增
WebApi專案。 - 不新增 API route、controller、endpoint 或 middleware。
- 不新增或更換認證授權、佇列、背景服務、Web framework 套件。
- 不修改 Core / Adapter / Infrastructure public method 簽章。
- 不執行 DB 寫入、DDL、ALTER TABLE 或正式 Apply。
- 不保存密碼、Token、完整 connection string 或正式環境資訊。
- 不改程式啟動方式。
- 不導入外部 DLL、Plugin Loader 或真實硬體控制。
7. 建議下一步
七項決策已確認,且 3C 程式 repo 結構檢查與實作前確認、3C Application Service contract 草案 / 實作前確認表 與 3C Application contract 決策確認紀錄 已完成。建議下一步進入 Application contract 第一版程式實作,仍先不新增 ServiceHost / WebApi 專案。