# T772 — outcome event product attribution

> Status: `todo`  
> Milestone: `M7` · Phase D  
> Kind: `feat` · Est. change: `~160 lines`

## Goal

成交回報保存成交當下 Product 歸屬，沿用既有 OutcomeEvent 且不改寫舊成交。

## Depends on

- T762、T771

## Inputs

- growth OutcomeEvent domain／radar conversion flow
- `../spec.md` §4.5、§6

## Outputs

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/internal/module/growth/domain/domain.go` | edit | optional product_id／brand_id attribution |
| radar/crm conversion usecase | edit | won 當下取 primary snapshot IDs |
| `apps/backend/internal/module/growth/repository/{memory,mongo}.go` | edit | optional fields backward compatible |
| `apps/backend/internal/logic/growthmap/map.go` | edit | public outcome mapping |
| conversion tests | edit/add | product、legacy、amend/delete audit |

## Behavior

- 只有人可回報成交；不自動推進或另建成交帳。
- 後續 Product 刪除／primary 改變不改舊 OutcomeEvent。
- legacy outcome 欄位可空，既有彙總不受影響。

## Out of scope

- 產品成交率頁與自動調校（P1）
- 金額規則重做

## Acceptance

- [ ] 既有 growth tests 全綠，product attribution 可讀可稽核。

```bash
cd apps/backend && go test ./internal/module/growth/... ./internal/module/crm/... ./internal/module/radar/... -count=1
```
