購入共起レコメンドプラグイン¶
商品詳細ページなどで「関連商品」を提供するための、購入共起ベースのレコメンドプラグインです。
目的¶
- 注文内の同時購入データから関連商品を自動で抽出する
- 任意の画面(商品詳細以外も含む)で再利用できる取得APIを提供する
- データが少ない場合は空配列を返し、表示側でのフォールバックを可能にする
表示文言¶
- 商品詳細ページの見出しは「関連商品」
仕組み(概要)¶
- 注文確定イベントをフックし、同一注文内の商品の組み合わせを集計する
- 集計結果は専用テーブルに累積し、関連商品の候補を返す
- Shop API に取得クエリを追加し、表示側から任意の件数で取得する
データモデル¶
- テーブル:
ritsubi_co_purchase_recommendation - カラム:
productId: 基準商品IDrelatedProductId: 関連商品IDcount: 共起カウント
※ productId + relatedProductId の組をユニーク制約で管理します。
イベントと集計¶
OrderPlacedEventを購読し、注文内の重複商品IDを除外して組み合わせを作成- 同一注文内の全組み合わせを、基準商品 → 関連商品 の方向で加算
API¶
Shop API クエリ¶
coPurchaseRecommendations(productId: ID!, take: Int): [Product!]!
take未指定時はプラグイン設定のデフォルト値を使用takeは上限設定を超えない範囲で正規化
実装ファイル¶
- プラグイン:
packages/plugins/co-purchase-recommendation/src/index.ts - エンティティ:
packages/plugins/co-purchase-recommendation/src/entities/co-purchase-recommendation.entity.ts - サービス:
packages/plugins/co-purchase-recommendation/src/services/co-purchase-recommendation.service.ts - リスナー:
packages/plugins/co-purchase-recommendation/src/listeners/co-purchase-order.listener.ts - リゾルバ:
packages/plugins/co-purchase-recommendation/src/api/co-purchase-recommendation.resolver.ts
運用・注意点¶
- 新規エンティティ追加のため、マイグレーション生成・実行が必要
packages/pluginsはビルド前提運用のため、Vendure 起動前にpnpm -C packages/plugins buildを実行する- 取得結果が空の場合は表示側で非表示・代替ロジックなどの扱いを決める
設定¶
CoPurchaseRecommendationPlugin.init({...})で件数のデフォルト値や上限を指定できる- 設定値は
packages/plugins/co-purchase-recommendation/src/types.tsを参照