コンテンツへスキップ
オンライン
jav0.46.1 · 1d135e2
アクティブ

Karuselle

厳選された中古デザイナーズファッションの多言語マーケットプレイス。成長を続けるLaravelのコードベース上で、セマンティック検索、柔軟な出品者手数料、EUの税務報告、新しい決済手段を実現。

Karuselleのトップページ:厳選されたデザイナーズファッションの再販サイト。シルバーのハンドバッグの全幅写真、「Sell with us」ボタン、ブランド別・カテゴリ別のメニュー、検索、言語切り替え

課題

多数の出品者と複数の外部販売チャネルを持つ多言語のファッションマーケットプレイスは、古くなりつつあるコードベースの上で成長を続ける必要がありました。より賢い検索、公平で柔軟な手数料、EUの税務報告、より多くの決済手段、そして速く安全なストアが求められていました。

解決策

唯一の開発者として3年間:

  • フレームワークのアップグレード:すべてのパッケージとともにLaravel 5.8 → 6 → 7 → 8 → 9 → 10 → 11、PHP 7.4 → 8.xへの移行を2週間で実施し、新しいサーバーへの移転も。
  • 4言語のセマンティック検索:セルフホストの埋め込みサービスとベクトルデータベース、キューによるインデックスの差分同期、サーキットブレーカー付きの通常検索へのフォールバック、デプロイ不要の管理画面スイッチ、決定的なカラー/カテゴリ/素材フィルター、類義語、診断用コマンド。
  • カタログとストアフロント:件数表示付きのドロワー内のリアルタイムAJAXフィルター、EUサイズと国別サイズへの換算、割引と出品者のフィルター、SEOに適したURL、カード・ヘッダー・フッター・メガメニューの全面リデザイン、ドラッグ&ドロップで管理できるトップページのバナーとスライダー。
  • 価格交渉:購入者が価格を提案し、管理者はゲストに対してもメールで逆提案。1人あたりの上限、有効期限、ダブルクリック対策。
  • チェックアウトと決済:カート、チェックアウト、メール、VATインボイス全体でのBuyer Protection手数料。クーポン、国に応じた配送料。3D Secure対応のStripe、Apple PayとGoogle Pay、PayPal REST、金額検証付きのPaysera。
  • 出品者とお金:独自の手数料とインボイスを持つ販売チャネル、1つの注文内で出品者ごとに分かれたインボイス、出品者への支払日、XML形式のEU DAC7税務報告、データベースロック下で発行するインボイス番号。さらに、単一のリゾルバー、チャネル別の料率、出品期間に応じたルール、プレビュー、ドラッグでの並べ替え、変更履歴を備えたCommission Rulesモジュール。
  • フィードとマーケティング:Google Merchant、Facebook、CSVでのパートナーマーケットプレイス連携、Mailchimpのeコマース同期、consent mode v2。
  • SEOとGEO:商品、パンくずリスト、FAQの構造化データ、既存の翻訳に限ったcanonicalとhreflang、ファセットへのnoindex、AIクローラー向けのrobotsルールとllms.txt、毎日のサイトマップ、SEOチェック用コマンド。
  • 言語:LT、EN、PL、RU。保存時の翻訳と毎週の同期コマンド付き。
  • 管理画面と運用:ワーカーのハートビート付きのキューとジョブのパネル、バックグラウンドでのエクスポート、入力中のテキストを保持するセッション復旧、放置された下書き商品のクリーンアップ。
  • セキュリティ:セキュリティレビューでアクセス制御とファイルアクセスの穴をふさぎ、アカウント別・IP別のログイン制限を追加し、パスワード変更時にセッションを終了させ、アップロードできるファイル形式を制限しました。
  • テスト:テストスイートをゼロから239件まで整備し、本番環境での実行を防ぐガードも追加。

成果

  • 50商品の手数料計算:データベースクエリを101件から2件に。
  • オファー一覧:1ページあたり169 → 121クエリ。オファーが35件ある商品:92 → 64。
  • 商品サムネイル:1枚あたり136 KB → 20 KB(カテゴリページあたり60枚)。1商品の画像は2.5 MB → 0.5 MB。
  • 販売履歴の出品者収益に、実際に請求された金額が表示されるようになりました。過去の行の大半に影響していたエラーを発見し、修正しました。
  • セマンティック検索は本番環境で約9,000商品をカバーしています。

スクリーンショット