57 lines
1.7 KiB
Markdown
57 lines
1.7 KiB
Markdown
|
|
# T040 — 話題簽章與必要概念群
|
|||
|
|
|
|||
|
|
> Status: `done`
|
|||
|
|
> Milestone: `M4`
|
|||
|
|
> Est. change: `~180 lines`
|
|||
|
|
|
|||
|
|
## Goal
|
|||
|
|
|
|||
|
|
完成後,所有候選都以原始 intent 的必要實體與概念群判定,泛用搜尋錨點不能單獨使結果入選。
|
|||
|
|
|
|||
|
|
## Depends on
|
|||
|
|
|
|||
|
|
- T001、T034
|
|||
|
|
|
|||
|
|
## Inputs
|
|||
|
|
|
|||
|
|
- 讀取 / 依賴:
|
|||
|
|
- 檔案:`apps/backend/internal/module/scout/usecase/activity_terms.go`、`service.go`
|
|||
|
|
- 既有能力 / API:normalizeSignal、searchAnchors、selected scan terms
|
|||
|
|
- Spec 段落:§4 流程 C、§9 #3/#4
|
|||
|
|
|
|||
|
|
## Outputs
|
|||
|
|
|
|||
|
|
### 程式變更(預期路徑)
|
|||
|
|
|
|||
|
|
| 路徑 | 動作 | 說明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `apps/backend/internal/module/scout/usecase/topic_signature.go` | add | 從 intent/terms 建立必要實體、概念群、alias 與 match 結果。 |
|
|||
|
|
| `apps/backend/internal/module/scout/usecase/topic_signature_test.go` | add | 覆蓋作品名、多詞意圖、錨點、CJK 與英文大小寫。 |
|
|||
|
|
|
|||
|
|
### 行為變更
|
|||
|
|
|
|||
|
|
- 候選需命中每個必要概念群;「推薦/分享/工程師」等泛詞不能取代明確主題。
|
|||
|
|
|
|||
|
|
### API / 契約(若有)
|
|||
|
|
|
|||
|
|
- Match 結果提供命中核心,供 match_reason 使用;不暴露內部 tokenization。
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
|
|||
|
|
- 不做 embedding、個人化或 provider ranking。
|
|||
|
|
|
|||
|
|
## Acceptance
|
|||
|
|
|
|||
|
|
- [x] 外包後端與鬼滅案例阻擋同字不同題內容。
|
|||
|
|
- [x] 指令:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd apps/backend && go test ./internal/module/scout/usecase -run TopicSignature -count=1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
驗收結果:新增 TopicSignature/TopicConcept 必要概念群、核/別名匹配與 anchor 排除;多概念、作品名、拆詞、CJK 與英文大小寫案例通過。
|
|||
|
|
|
|||
|
|
## Notes
|
|||
|
|
|
|||
|
|
優先重用目前 normalize 與 intent-aware terms,不建立平行規則。
|