thread-master/docs/product/scout-topic-quality/tasks/T032-mongo-run-store.md

1.7 KiB
Raw Permalink Blame History

T032 — Mongo Run store 與索引

Status: done Milestone: M3 Est. change: ~200 lines

Goal

完成後MonStore 能持久化獨立 run、guarded 更新並用可索引查詢提供批次分頁。

Depends on

  • T031

Inputs

  • 讀取 / 依賴:
    • 檔案:apps/backend/internal/module/scout/repository/mongo.go
    • 既有能力 / APIgo-zero mon.Model、Mongo options、Run repository contract
    • Spec 段落§3、§7、§8

Outputs

程式變更(預期路徑)

路徑 動作 說明
apps/backend/internal/module/scout/repository/mongo.go edit 加入 scout_runs model、create/get/list、guarded status/count updates、owner filters。
apps/backend/internal/module/scout/repository/mongo_indexes.go add 建立 run list、run posts、owner identity 唯一性所需索引。
apps/backend/internal/module/scout/repository/mongo_run_test.go add 在可控 Mongo 環境驗證 guard、sort 與 uniqueness。

行為變更

  • 每個更新同時限定 owner、run ID 與 expected status未命中回明確 conflict/not found。

API / 契約(若有)

  • run list sort 為 created_at desc、_id descpageSize 最大 50。

Out of scope

  • 不修改其他 module collection不清洗所有歷史 duplicates。

Acceptance

  • 必要索引透過既有 cmd/init 冪等建立;無可用 Mongo 時測試明確 skip。
  • 指令:
cd apps/backend && go test ./internal/module/scout/repository -run MongoRun -count=1

驗收結果MongoRun integration test 在未設定 Mongo 時明確 skipcmd/init build 通過。

Notes

若專案既有 index bootstrap 機制,沿用它,不在 request path 每次建索引。