1.6 KiB
1.6 KiB
T750 — product watch create assign lifecycle api
Status:
done
Milestone:M5· Phase C
Kind:feat· Est. change:~190 lines
Goal
真 API 可建立 product watch、一次補綁 generic、正確套用 ServiceProfile 門檻與 lifecycle guard。
Depends on
- T734、T740、T741
Inputs
apps/backend/internal/module/radar/usecase/watch.go- create/update/pause/resume/assign logics
../spec.md§3.1、§3.5、§4.1
Outputs
| 路徑 | 動作 | 說明 |
|---|---|---|
apps/backend/internal/module/radar/usecase/watch.go |
edit | product create、assign once、readiness、resume guards |
apps/backend/internal/logic/radar/*watch*_logic.go |
edit | request mapping、owner errors、public response |
| watch tests | edit/add | product/generic/profile/ownership/lifecycle |
Behavior
- product IDs 成對且合法;product watch 無 ServiceProfile 也可 active。
- generic active 維持舊 profile gate。
- assign 只一次;product watch 不可 PUT 換產品。
- product_unavailable resume 回 conflict。
Out of scope
- 排程處理無效產品(T751/T755)
- Product delete
Acceptance
- spec #1、#10、#13 API cases 通過。
cd apps/backend && go test ./internal/module/radar/... ./internal/logic/radar/... -count=1
Implementation result (2026-08-10): create and assign routes now accept paired owned Brand/Product IDs, snapshot their context, allow active product watches without a ServiceProfile, and keep generic profile/quota gates. Assignment is one-way and update routes cannot replace a bound product.