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 新增 TaskTraceQueryRequestTaskTraceQueryResultTaskTraceItem待確認
3方法型態第一版採同步 Query(TaskTraceQueryRequest request)待確認
4分頁策略第一版不做 TotalCount,改用 HasMore待確認
5查詢安全第一版不允許無條件全表查詢待確認

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

同意後的程式實作範圍

區域預計新增 / 修改說明
Core LoggingITaskTraceStoreTrace read-side 查詢入口。
Core LoggingTaskTraceQueryRequest查詢條件 DTO。
Core LoggingTaskTraceQueryResult專用查詢結果,內含 SuccessItemsLimitOffsetHasMoreErrorTimeTakenMs
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 條件組合測試確認 TaskIdNodeIdDeviceIdCommandNameLevelStatusErrorCode、時間範圍都用參數化 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。