thread-master/docs/product/brand-product-radar/tasks/T755-product-delete-pauses-...

1.7 KiB
Raw Permalink Blame History

T755 — product delete pauses watches

Status: done
Milestone: M5 · Phase C
Kind: feat · Est. change: ~180 lines

Goal

刪除 Product 前冪等暫停相關 active watch保留歷史並在部分失敗時拒絕回成功。

Depends on

  • T730、T750

Inputs

  • Scout RemoveProduct logicrepository
  • RadarWatch guarded pause repository
  • ../spec.md §3.5、§4.1、驗收 #9

Outputs

路徑 動作 說明
apps/backend/internal/module/scout/usecase/service.go edit RemoveProduct 在 delete 前呼叫 radar lifecycle port
apps/backend/internal/logic/scout/remove_product_logic.go edit 保持既有路由與誠實錯誤回應
apps/backend/internal/module/radar/usecase/product_lifecycle.go add countpause active watches、notification payload
service wiring edit 以小介面接兩個 module不反向耦合 repository
lifecycle tests add zero/many/retry/partial failure/history

Behavior

  • 先 pause 成功才 delete重試不重複通知或破壞 archived watch。
  • 失敗不回刪除成功;已暫停但產品尚在是安全可重試狀態。
  • 不自動改綁;舊 OpportunityContactOutcome 不刪。

Out of scope

  • Brand 刪除規則改寫
  • 前端提示T713/T761

Acceptance

  • spec #9 integration case 通過。
cd apps/backend && go test ./internal/module/scout/... ./internal/module/radar/... -count=1

Implementation result (2026-08-10): Scout product deletion now calls a narrow Radar lifecycle port first; active product watches are idempotently paused with product_unavailable, archived history is untouched, and any pause failure blocks deletion so retry remains safe.