TaskTraceStore 第一版 public contract 決策紀錄

本頁為專案文件網站產出的閱讀版。

返回 docs

TaskTraceStore 第一版 public contract 決策紀錄

本文件承接 TaskTraceStore 介面命名與 DTO 位置盤點 與 TaskTraceStore public 查詢介面實作前確認,整理第三階段 3A Trace 查詢能力在進入程式實作前必須由使用者確認的 public contract 決策。

本文件只做決策紀錄,不代表已同意新增 public interface、DTO、錯誤碼、MySQL 查詢實作、真實 DB 查詢、WebApi、ServiceHost 或啟動流程變更。

決策狀態

項目狀態
決策日期2026-06-03
目前狀態待使用者確認
是否已可改程式 repo public contract否
是否可新增 ITaskTraceStore尚未確認
是否可新增 DTO尚未確認
是否可執行真實 DB 查詢否

需使用者確認的 5 點

順序決策項建議確認狀態
1新增 public interface允許新增 ITaskTraceStore待確認
2DTO namespace允許在 HS.DeviceControl.Core.Logging 新增 TaskTraceQueryRequest、TaskTraceQueryResult、TaskTraceItem待確認
3方法型態第一版採同步 Query(TaskTraceQueryRequest request)待確認
4分頁策略第一版不做 TotalCount,改用 HasMore待確認
5查詢安全第一版不允許無條件全表查詢待確認

使用者未明確同意前,Codex 不得新增上述 public interface、DTO 或 method 簽章。

同意後的程式實作範圍

區域預計新增 / 修改說明
Core LoggingITaskTraceStoreTrace read-side 查詢入口。
Core LoggingTaskTraceQueryRequest查詢條件 DTO。
Core LoggingTaskTraceQueryResult專用查詢結果,內含 Success、Items、Limit、Offset、HasMore、Error、TimeTakenMs。
Core LoggingTaskTraceItem查詢回傳 item,對應 task_log_traces 已摘要與遮罩後欄位。
Core Common視需要新增 Trace 查詢錯誤碼例如 query 條件不合法或資料庫查詢失敗;若新增 constant,仍需清楚說明。
Infrastructure.MySql.LoggingMySqlTaskTraceStoreMySQL read-side store。
Infrastructure.MySql.LoggingMySqlTaskTraceStoreOptions / validator查詢連線、table name、limit 上限等設定。
Infrastructure.MySql.LoggingSQL builder / gateway / row mapper參數化查詢、fake gateway 測試與資料列映射。
TestsCore / MySQL fake gateway 測試不連真實 DB 驗證 public DTO、validator、SQL builder、row mapper 與 HasMore。

不納入第一批實作

不納入項目原因
WebApi endpoint屬第三階段 3C,需另行確認 API route 與權限。
ServiceHost會改正式執行入口與啟動方式,需另行確認。
WinForms Debug Tool屬後續現場工具,不納入 3A 第一批。
真實 DB manual-only 查詢需等 fake gateway 與單元測試完成後,再由使用者授權 DB 資訊與 gate。
正式 DB DDL / ALTER TABLEtask_log_traces schema 已存在;3A 查詢不應執行 DDL。
外部 DLL / Plugin Loader屬第三階段 3D,不屬 Trace 查詢第一版。
Result<T> 泛型結果型別會新增額外 public contract;3A 第一版採專用 result 即可。

建議第一批測試清單

測試目的
TaskTraceQueryRequest 空條件驗證確認不允許無條件全表查詢。
Limit 預設與上限驗證確認預設 100、最大 500,超過上限會失敗。
Offset 驗證確認不可小於 0。
CreatedFrom / CreatedTo 驗證確認結束時間不可早於開始時間。
SQL builder 條件組合測試確認 TaskId、NodeId、DeviceId、CommandName、Level、Status、ErrorCode、時間範圍都用參數化 SQL。
HasMore 測試使用 Limit + 1 查詢策略,不做 COUNT(*)。
Row mapper 測試確認 DB row 可映射成 TaskTraceItem。
fake gateway query 測試不連 DB 驗證 MySqlTaskTraceStore.Query(...) 流程。
錯誤遮罩測試查詢結果或錯誤訊息不得洩漏 password、token、secret、authorization、connection string。

驗收標準

建議下一步

請使用者確認是否同意本文件的 5 點 public contract 決策。

同意後,Codex 可開始「ITaskTraceStore 第一版 fake gateway 查詢實作」;未同意前只能繼續整理文件,不得新增 public contract。