# T531 — daily-quota-truncation-and-metering > Status: `done` > Milestone: `M2` > Kind: `feat` > Est. change: `~160 lines` ## Goal 完成後系統應:當日商機達方案上限時依分數保留高分、記 `truncated_count` 且**不視為錯誤**;巡的耗用以既有 meter+`radar.` source 記帳。 ## Depends on - T530 ## Inputs - Spec:`../spec.md` §4.2.6、§4.9、§5.5、§9.5(QT-01、QT-02)、§6(RG-04 不新增 meter) - 既有:`apps/backend/internal/module/usage/**`(meter、`source`、BYOK 與 platform gate) ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/backend/internal/module/radar/usecase/quota.go` | add | 讀當日已建立數+方案 `max_daily_opportunities`,回可建立額度 | | `apps/backend/internal/module/radar/usecase/judge_persist.go` | edit | 判定完成後依 `intent_score` 由高至低取前 N 建立,其餘計入 `truncated_count` | | `apps/backend/internal/module/radar/usecase/metering.go` | add | `web_search/radar.sweep`、`ai_research/radar.judge` 記帳;累加 Sweep `credits_used` | ### 行為變更 - 截斷是**正常結果**:Sweep 成功、回應帶 `truncated_count`,今日頁顯示提示(T545/T551)。 - 平台點數耗盡(非 BYOK):沿用既有 platform gate 錯誤行為;**watch 不被刪除或停用**(QT-02)。 - 為了先判分再截斷,判定筆數的硬上限為方案每日上限(spec §7 效能邊界)。 ## Out of scope - 用量頁的 source 聚合呈現(T590) - 前端提示文案(T551) ## Acceptance - [x] SW-05:命中 40、上限 30 → 建立 30 筆最高分、`truncated_count=10` - [x] QT-01:已達上限再 sweep → 不新增、回應帶 `truncated_count`、**非錯誤** - [x] RG-04:`soft_caps` 四分項加總仍等於 `monthly_credits` - [x] 指令: ```bash cd apps/backend && go test ./internal/module/radar/... ./internal/module/usage/... -count=1 ```