1.6 KiB
1.6 KiB
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.6(PR-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
- PR-01:promote 後新 Opportunity 存在且
source_scout_post_id正確,原 ScoutPost 狀態不變 - PR-02:CRM 推進不影響
outreach_status - 指令:
cd apps/backend && make gen-api && go test ./internal/logic/scout/... ./internal/module/radar/... -count=1