# T547 — opportunity-accept-dismiss-override-api

> Status: `done`  
> Milestone: `M3`  
> Kind: `feat`  
> Est. change: `~160 lines`

## Goal

完成後系統應：商機可 accept／dismiss／override，覆寫留痕（原值、新值、時間、操作者）。

## Depends on

- T546

## Inputs

- Spec：`../spec.md` §3.2、§4.4.3、§5.2、§9.2（OP-07）

## Outputs

### 程式變更（預期路徑）

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/generate/api/radar.api` | edit | accept／dismiss／override req／resp |
| `apps/backend/internal/logic/radar/acceptOpportunityLogic.go` | edit | 狀態轉 `accepted` |
| `apps/backend/internal/logic/radar/dismissOpportunityLogic.go` | edit | 狀態轉 `dismissed` |
| `apps/backend/internal/logic/radar/overrideOpportunityLogic.go` | edit | 覆寫 band 或 `rejected → qualified` |

### 行為變更

- 非法轉移（例：`accepted → dismissed`）回明確錯誤。
- override 一律寫 `override` 記錄，供判定校準使用。
- 本 task 的 accept **只改狀態**；建立／綁定 Contact 在 T567 接上（屆時同一端點行為擴充，回應加 `contact_id`）。

## Out of scope

- Contact 綁定（T567）
- 前端動作 UI（T552）

## Acceptance

- [x] OP-07：覆寫 band 生效且 `override` 完整
- [x] `rejected` 可拉回 `qualified` 並出現在今日頁查詢
- [x] 指令：

```bash
cd apps/backend && make gen-api && go test ./internal/logic/radar/... -count=1
```
