thread-master/docs/product/demand-radar/tasks/T600-scout-promote-to-oppor...

51 lines
1.6 KiB
Markdown
Raw Normal View History

2026-08-03 05:52:02 +00:00
# T600 — scout-promote-to-opportunity
> Status: `done`
> Milestone: `M6`
> Kind: `feat`
> Est. change: `~170 lines`
## Goal
完成後系統應:`POST /api/v1/scout/posts/:id/promote` 以**複製**方式建立新 Opportunity 並記 `source_scout_post_id`,原 ScoutPost 狀態不變。
## Depends on
- T530、T567
## Inputs
- Spec`../spec.md` §4.10、§9.6PR-01、PR-02
- 既有:`apps/backend/internal/logic/scout/**`、`internal/module/scout/domain``outreach_status`
## Outputs
### 程式變更(預期路徑)
| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/generate/api/radar.api` 或既有 scout 契約 | edit | promote route掛既有 `scout` group |
| `apps/backend/internal/logic/scout/promotePostLogic.go` | add | 讀 ScoutPost → 組 Opportunity 輸入 → 跑同一套判定 → 回 `opportunity_id` |
| `apps/backend/internal/module/radar/usecase/promote.go` | add | `source=scout_promote``source_scout_post_id` |
### 行為變更
- 兩邊狀態機**完全不共用**promote 後推進 CRM 不影響 `outreach_status`
- 同一 ScoutPost 重複 promote`external_id` 去重,回既有 `opportunity_id`
- 跑同一套五問判定與配額/計費規則(受當日上限約束)。
## Out of scope
- 前端動作T601
- 修改既有海巡三模式行為(必須不變)
## Acceptance
- [x] PR-01promote 後新 Opportunity 存在且 `source_scout_post_id` 正確,原 ScoutPost 狀態不變
- [x] PR-02CRM 推進不影響 `outreach_status`
- [x] 指令:
```bash
cd apps/backend && make gen-api && go test ./internal/logic/scout/... ./internal/module/radar/... -count=1
```