thread-master/docs/product/scout-topic-quality/tasks/T044-run-atomic-publish.md

58 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
- 既有能力 / APIstaged 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
```
驗收結果StageRunPostsPublishRunFailRun 以 run status 作 visibility barrier成功後才 guarded succeeded、失敗結果頁保持空結果回傳改為 score、posted_at、created_at、id 穩定排序。
## Notes
可用 run status 作 visibility barrier不要求部署環境一定支援多文件 transaction。