59 lines
1.7 KiB
Markdown
59 lines
1.7 KiB
Markdown
|
|
# T843 — demand map enrichment metering byok
|
|||
|
|
|
|||
|
|
> Status: `done`(2026-08-11)
|
|||
|
|
> Milestone: `M4`
|
|||
|
|
> Est. change: `~190 lines`
|
|||
|
|
|
|||
|
|
## Goal
|
|||
|
|
|
|||
|
|
完成後使用者確認 CostPreview 後才可用 AI 擴充 DemandMap,成功才切換版本並正確記錄 platform/BYOK 用量。
|
|||
|
|
|
|||
|
|
## Depends on
|
|||
|
|
|
|||
|
|
- T840、T841、T842
|
|||
|
|
|
|||
|
|
## Inputs
|
|||
|
|
|
|||
|
|
- `apps/backend/internal/module/radar/usecase/suggest.go`
|
|||
|
|
- `apps/backend/internal/module/usage/domain/**`
|
|||
|
|
- `apps/backend/internal/logic/radar/**`
|
|||
|
|
- Spec §4.1、§5.1–§5.3、驗收 #17、#20、#22
|
|||
|
|
|
|||
|
|
## Outputs
|
|||
|
|
|
|||
|
|
### 程式變更(預期路徑)
|
|||
|
|
|
|||
|
|
| 路徑 | 動作 | 說明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `apps/backend/internal/module/radar/usecase/demand_map_enrich.go` | add | preview gate、AI output validation、merge |
|
|||
|
|
| `apps/backend/internal/logic/radar/enrich_demand_map_logic.go` | add | authenticated action |
|
|||
|
|
| `apps/backend/internal/module/radar/usecase/demand_map_enrich_test.go` | add | success、invalid output、retry、BYOK |
|
|||
|
|
| `apps/backend/internal/module/usage/**` | edit | 沿用 meter、source=`radar.demand_map` |
|
|||
|
|
|
|||
|
|
### 行為變更
|
|||
|
|
|
|||
|
|
- provider 未完成有效結構時不切 current map;依既有失敗退點規則處理。
|
|||
|
|
- BYOK platform credits=0,count/source 仍增加。
|
|||
|
|
|
|||
|
|
### API / 契約(若有)
|
|||
|
|
|
|||
|
|
- POST enrichment 必須帶 preview_id、credit_ceiling、context version。
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
|
|||
|
|
- 不做每日 sweep、不改產品真相、不新增第五 meter。
|
|||
|
|
|
|||
|
|
## Acceptance
|
|||
|
|
|
|||
|
|
- [x] enrichment 成功、失敗、重試與版本衝突行為可對帳。
|
|||
|
|
- [x] AI token 不回前端。
|
|||
|
|
- [ ] 指令:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd apps/backend && go test ./internal/module/radar/... ./internal/module/usage/... -run 'DemandMap|Enrich|Meter' -count=1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Notes
|
|||
|
|
|
|||
|
|
AI phrases 必須帶 basis,不得把模型推測當產品承諾。
|