Skip to content

Latest commit

 

History

History
89 lines (64 loc) · 4.28 KB

File metadata and controls

89 lines (64 loc) · 4.28 KB

Work Item API Repository Instruction

適用範圍

本文件適用於整個 Repository。若任務另有更小範圍的工作單,以工作單為準。

專案事實

  • 技術線為 .NET 10、ASP.NET Core Controller API、EF Core 10 與 SQLite。
  • Solution 只有 src/WorkItems.Api 與對應測試,沒有前端、登入、微服務或雲端部署。
  • API 使用 DTO,不直接輸出 EF Core Entity。
  • DueAtUtcCreatedAtUtc 以 Unix milliseconds 儲存,維持 UTC 語意。
  • V2 的共同起點稱為「系列行為基準」,預定 Tag 為 series-behavior-baseline-v1
  • day-05-* Tag 與 Branch 是歷史座標,不得移動、改名或覆蓋。

系列行為基準

系列行為基準刻意保留重複通知、通知早於資料儲存、字串狀態、字串優先序與 Controller 多重責任。這些行為由契約與 Characterization Test 固定,除非工作單明列新舊行為與驗收方式,不得順手修正。

固定時間來源、可控制通知結果與獨立 SQLite 資料庫用來維持實驗條件。它們不代表最終架構,也不能作為提前加入 Service、Repository、Outbox 或其他 Pattern 的理由。

外部契約

修改前先確認並保留下列可觀察行為:

  • HTTP Route、Method 與 Status Code。
  • Request/Response DTO 與 JSON 欄位名稱。
  • Validation Problem Details 的欄位與繁體中文訊息。
  • 逾期處理的統計語意、通知次數與既有副作用順序。

工作單需要改變外部契約時,必須列出舊行為、新行為、理由與驗收方式。

正式 AI 實驗規約

  • 執行環境固定為 Codex。
  • 模型固定為 gpt-5.6-sol
  • Reasoning effort 固定為 high
  • 正式顯示名稱為「Codex GPT-5.6 Sol(high)」。
  • 每次 Run 從指定的系列行為基準 Commit 建立隔離 Branch 或 Worktree。
  • 保存執行日期、工具版本、起始 Commit SHA、完整 Prompt、原始輸出、完整 Diff、驗證輸出與人工決策。
  • 無法確認模型、推理強度或起始 Commit 時,該 Run 只能作歷史試跑,不能作為正式文章證據。
  • 模型不可用時停止實驗,不得自行替換成其他模型。

C# 慣例

  • 維持 Nullable Reference Types 與 TreatWarningsAsErrors。
  • I/O 使用 asyncawait,接受並向下傳遞 CancellationToken
  • 公開 API、必要型別與屬性使用繁體中文 XML 文件,不加入逐行重述程式碼的註解。
  • 名稱表達領域意圖,避免只用 dataresultitem 等無法區分角色的名稱。
  • 不因為「更 Clean」就預設新增 Layer、Interface、Service、Pattern 或套件。

修改流程

  1. 先定位真實檔案、符號、呼叫端、資料流與副作用。
  2. 固定起始 Commit、允許修改範圍、保留行為與驗證方式。
  3. 從系列行為基準建立隔離候選後才修改檔案。
  4. 每個 Diff 只處理一個能說清楚的理由;發現第二個問題時另列工作單。
  5. 重構前先確認能描述既有行為的測試,不為了讓重構通過而改寫期待值。

驗證指令

在 Repository 根目錄執行:

dotnet restore .\AiCleanCode.sln --locked-mode
dotnet build .\AiCleanCode.sln --no-restore --configuration Release
dotnet test .\AiCleanCode.sln --no-build --configuration Release
dotnet format .\AiCleanCode.sln --verify-no-changes --no-restore
dotnet list .\src\WorkItems.Api\WorkItems.Api.csproj package --vulnerable --include-transitive
.\scripts\run-series-baseline-smoke.ps1

禁止事項

  • 不修改工作單未授權的 Production 檔案。
  • 不提前新增高優先升級策略、第二通知 Provider、並行控制、Outbox 或最終架構。
  • 不新增產品功能、資料庫 Schema、套件或架構層來完成單純重構。
  • 不用 Formatter、Analyzer 或大量重新命名製造無關 Diff。
  • 不把 Build、Test 或 Smoke 全綠直接解讀成需求、設計與全部行為正確。

停止條件

遇到以下任一情況,停止修改並回報:

  • 需求中的名詞、行為或相容性邊界無法從 Repository 與工作單確認。
  • 必須超出允許檔案或改變外部契約才能完成。
  • 現有測試、工作單與 Production Code 描述的行為互相矛盾。
  • 正式實驗無法確認指定模型、推理強度或起始 Commit。
  • 驗證失敗的原因尚未確認。