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

1.9 KiB
Raw Permalink Blame History

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

  • 任一步保存失敗時 run 不成功、結果不公開retry 不產生 duplicate。
  • 指令:
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。