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

58 lines
1.7 KiB
Markdown
Raw Normal View History

2026-08-13 02:22:24 +00:00
# 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
- [x] 必要索引透過既有 cmd/init 冪等建立;無可用 Mongo 時測試明確 skip。
- [ ] 指令:
```bash
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 每次建索引。