58 lines
1.7 KiB
Markdown
58 lines
1.7 KiB
Markdown
|
|
# 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`
|
|||
|
|
- 既有能力 / API:go-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 desc;pageSize 最大 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 時明確 skip;cmd/init build 通過。
|
|||
|
|
|
|||
|
|
## Notes
|
|||
|
|
|
|||
|
|
若專案既有 index bootstrap 機制,沿用它,不在 request path 每次建索引。
|