Collection(コレクション)
シナリオコレクション (キュレーション集) を見ているユーザーに、そのコレクションの作品群と相性が良さそうなシナリオを推す枠。まだ Strategy が無い stub 状態。
WARNING
Recommender.Recommend(CollectionRequest) を呼ぶと Registry.Build が Collection strategy not implemented yet でエラーを返す。本番呼び出しも Admin Preview も無い。実装に手をつけるときはこの doc も更新する。
0. レコメンドの概要
| 項目 | 内容 |
|---|---|
| 入力 | CollectionRequest{ CollectionID, ViewerID, Common{ K, Candidates?, ExcludeAlreadyPlayed } } |
| 出力 | Response{ Items, ModelVersion, RecommendationID } |
| mobile / web 画面 | 未定 (コレクション詳細で「このコレクションの他シナリオ」枠を想定) |
| 本番経路 | ❌ resolver 未追加 |
| Admin Preview | ❌ adminCollectionScenarios query 未追加 |
| 実装ステータス | CollectionStrategy 未着手。registry.go が not implemented yet を返す |
1. 評価関数の設計 (spec での想定)
spec §3.3 の想定式は collection_score(u, s) = mean(score(u, s'), s' ∈ CollectionScenarios)。
- コレクションの作品集合のスコア平均を「コレクション全体への親和性」として使う
- Author が
topK_meanなのに Collection はmeanを採るのは、キュレーションされた集合はノイズが少ない前提で、上位 K 件だけを見る必要が薄いから (理由は spec 参照)
今は Strategy.Aggregate 自体が無いのでエラーが返るだけ。
2. 現状の実装ファイル
| 関心 | ファイル |
|---|---|
共通型 (CollectionRequest) | backend/internal/usecase/recommendation/types.go |
| Registry の stub 分岐 | backend/internal/usecase/recommendation/surfaces/registry.go |
| Surface enum | backend/internal/adapters/graph/schema/recommended_scenarios.gql (RecommendationSurface.COLLECTION) |
3. 既知の課題 / 未実装項目
- [ ]
CollectionStrategy.Aggregateを実装する (collection_score = mean、spec §3.3) - [ ]
CollectionStrategy.PreFilterを実装する (CollectionScenarios で絞り込み) - [ ]
adminCollectionScenariosadmin query を足す - [ ] コレクション詳細ページ mobile / web の resolver から呼び出す