59 lines
1.8 KiB
Markdown
59 lines
1.8 KiB
Markdown
|
|
# T852 — judge structured result cache
|
|||
|
|
|
|||
|
|
> Status: `done`(2026-08-11)
|
|||
|
|
> Milestone: `M5`
|
|||
|
|
> Est. change: `~200 lines`
|
|||
|
|
|
|||
|
|
## Goal
|
|||
|
|
|
|||
|
|
完成後 AI 深判只處理 shortlist/不確定候選,輸出可驗證 evidence/basis/risk,並以版本唯一鍵復用有效 accepted/rejected 結果。
|
|||
|
|
|
|||
|
|
## Depends on
|
|||
|
|
|
|||
|
|
- T850、T851、T843
|
|||
|
|
|
|||
|
|
## Inputs
|
|||
|
|
|
|||
|
|
- `apps/backend/internal/module/radar/usecase/product_fit_ai.go`
|
|||
|
|
- `apps/backend/internal/module/radar/usecase/judge.go`
|
|||
|
|
- `apps/backend/internal/module/radar/domain/product_match.go`
|
|||
|
|
- Spec §4.4、§5.3、驗收 #10、#16–#18
|
|||
|
|
|
|||
|
|
## Outputs
|
|||
|
|
|
|||
|
|
### 程式變更(預期路徑)
|
|||
|
|
|
|||
|
|
| 路徑 | 動作 | 說明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `apps/backend/internal/module/radar/domain/judgment_result.go` | add | versioned valid/invalid result domain |
|
|||
|
|
| `apps/backend/internal/module/radar/repository/judgment_result_memory.go` | add | memory cache/unique key |
|
|||
|
|
| `apps/backend/internal/module/radar/usecase/judge_pipeline.go` | add/edit | shortlist、structured validation、reuse |
|
|||
|
|
| `apps/backend/internal/module/radar/usecase/judge_pipeline_test.go` | add | valid/invalid/rejected/reuse tests |
|
|||
|
|
|
|||
|
|
### 行為變更
|
|||
|
|
|
|||
|
|
- provider/公告/純名不進 high;完整 accepted 或 rejected 結果均可快取。
|
|||
|
|
- 無法驗證的 evidence/basis 不形成有效快取。
|
|||
|
|
|
|||
|
|
### API / 契約(若有)
|
|||
|
|
|
|||
|
|
- 唯一鍵 owner+source+product+input/map version+judge kind。
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
|
|||
|
|
- 不接每日 Sweep checkpoint、不做 Mongo cache migration。
|
|||
|
|
|
|||
|
|
## Acceptance
|
|||
|
|
|
|||
|
|
- [x] 同候選跨 watch/query 重跑不再次呼叫 judge。
|
|||
|
|
- [x] provider 結構成功但判定 rejected 正常計入有效結果。
|
|||
|
|
- [ ] 指令:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd apps/backend && go test ./internal/module/radar/usecase -run 'Judge|Judgment' -count=1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Notes
|
|||
|
|
|
|||
|
|
AI 不能從品牌/產品名稱自行補痛點或作者背景。
|