# 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 logic/repository - 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 | count/pause active watches、notification payload | | service wiring | edit | 以小介面接兩個 module,不反向耦合 repository | | lifecycle tests | add | zero/many/retry/partial failure/history | ## Behavior - 先 pause 成功才 delete;重試不重複通知或破壞 archived watch。 - 失敗不回刪除成功;已暫停但產品尚在是安全可重試狀態。 - 不自動改綁;舊 Opportunity/Contact/Outcome 不刪。 ## Out of scope - Brand 刪除規則改寫 - 前端提示(T713/T761) ## Acceptance - [x] spec #9 integration case 通過。 ```bash 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.