58 lines
1.9 KiB
Markdown
58 lines
1.9 KiB
Markdown
# T044 — Run 原子可見與 score 排序
|
||
|
||
> Status: `done`
|
||
> Milestone: `M4`
|
||
> Est. change: `~180 lines`
|
||
|
||
## Goal
|
||
|
||
完成後,搜尋結果只有在整批成功時可見,失敗不留下可瀏覽半套資料,所有模式依 score 排序。
|
||
|
||
## Depends on
|
||
|
||
- T033、T043
|
||
|
||
## Inputs
|
||
|
||
- 讀取 / 依賴:
|
||
- 檔案:`apps/backend/internal/module/scout/usecase/service.go`、repository contracts
|
||
- 既有能力 / API:staged post、PublishRun、CleanupRun、run status
|
||
- Spec 段落:§3、§4 流程 A/E、§7 原子可見性
|
||
|
||
## Outputs
|
||
|
||
### 程式變更(預期路徑)
|
||
|
||
| 路徑 | 動作 | 說明 |
|
||
|------|------|------|
|
||
| `apps/backend/internal/module/scout/usecase/run_publish.go` | add | 保存 staging、計數、guarded publish 與 failure cleanup。 |
|
||
| `apps/backend/internal/module/scout/usecase/service.go` | edit | 移除 activity momentum 最終排序,交由 run results query。 |
|
||
| `apps/backend/internal/module/scout/usecase/run_publish_test.go` | add | 驗證成功可見、失敗不可見、retry 不重複。 |
|
||
|
||
### 行為變更
|
||
|
||
- completed membership 固定;posted_at 未知不以 created_at 冒充,score 主排序、status 不重排。
|
||
|
||
### API / 契約(若有)
|
||
|
||
- failed run 可保留 diagnostics,但公開 posts page 為不可用而非半套 list。
|
||
|
||
## Out of scope
|
||
|
||
- 不改 Mongo transaction topology,不處理 job lifecycle。
|
||
|
||
## Acceptance
|
||
|
||
- [x] 任一步保存失敗時 run 不成功、結果不公開;retry 不產生 duplicate。
|
||
- [x] 指令:
|
||
|
||
```bash
|
||
cd apps/backend && go test ./internal/module/scout/usecase -run RunPublish -count=1
|
||
```
|
||
|
||
驗收結果:StageRunPosts/PublishRun/FailRun 以 run status 作 visibility barrier,成功後才 guarded succeeded、失敗結果頁保持空;結果回傳改為 score、posted_at、created_at、id 穩定排序。
|
||
|
||
## Notes
|
||
|
||
可用 run status 作 visibility barrier,不要求部署環境一定支援多文件 transaction。
|