コンテンツにスキップ

技術引き継ぎ書

概要

リツビ BtoB ECサイトの技術的な引き継ぎ情報をまとめた文書です。

システム概要

アーキテクチャ

  • バックエンド: Vendure (Node.js/TypeScript)
  • フロントエンド: Next.js (React/TypeScript)
  • データベース: PostgreSQL
  • キャッシュ: Redis (Upstash)
  • ホスティング:
  • Vendure: Fly.io
  • Next.js: Vercel
  • Database: Fly.io Postgres

主要技術スタック

Vendure プラグイン

  • @ritsubi/b2b-customer-plugin: B2B顧客管理
  • @ritsubi/pricing-plugin: 顧客別価格設定
  • @ritsubi/campaign-plugin: キャンペーン管理
  • @ritsubi/direct-shipping-plugin: 直送モード
  • @ritsubi/monthly-rebate-plugin: 月次割戻金計算
  • @ritsubi/smile-integration-plugin: SMILE連携

Next.js 構成

  • app/ ディレクトリ構成(App Router)
  • Server Components + Client Components
  • GraphQL クライアント (Apollo Client)
  • 状態管理: Zustand
  • UI コンポーネント: Tailwind CSS + shadcn/ui

開発環境

セットアップ手順

# プロジェクトクローン
git clone [リポジトリURL]
cd ritsubi-vendure

# 依存関係インストール
pnpm install

# 環境変数設定
cp .env.example .env.local

# Vendure開発サーバー起動
pnpm run dev:vendure

# Next.js開発サーバー起動

pnpm run dev:storefront

環境変数

# Vendure
DATABASE_URL=postgresql://...
REDIS_URL=redis://...
JWT_SECRET=...

# Next.js
NEXT_PUBLIC_GA_TRACKING_ID=...
VENDURE_BASE_URL=...
VENDURE_API_URL=...

デプロイメント

Vendure (Fly.io)

# デプロイ
fly deploy -c fly.vendure.toml


# ログ確認
fly logs -a ritsubi-vendure

Next.js (Vercel)

# Vercel CLI でデプロイ

vercel --prod

# または Git Push で自動デプロイ
git push origin main

データベース移行

# Vendure マイグレーション
pnpm run migration:run


# データシーディング
pnpm run seed

重要な設定ファイル

Vendure 設定

  • packages/vendure-server/src/vendure-config.ts: メイン設定
  • packages/vendure-plugins/: カスタムプラグイン
  • migrations/: データベースマイグレーション

Next.js 設定

  • apps/storefront/next.config.js: Next.js設定
  • apps/storefront/src/lib/vendure.ts: GraphQL設定
  • apps/storefront/src/stores/: 状態管理

カスタムプラグイン仕様

B2B 顧客管理プラグイン

// 顧客ステータス管理
enum CustomerStatus {
  PREMIUM = 'premium',
  STANDARD = 'standard',
  LIMITED = 'limited',
  // ... 他12種類
}

// 掛率設定
interface DiscountRate {
  customerId: string;
  productCategoryId?: string;
  rate: number; // 0.1 = 10%割引
}

キャンペーンプラグイン

// キャンペーンタイプ
enum CampaignType {
  PERCENTAGE_DISCOUNT = 1,
  FIXED_AMOUNT_DISCOUNT = 2,
  FREE_SHIPPING = 3,
  GIFT_PRODUCT = 4,
  VOLUME_DISCOUNT = 5,
  LOYALTY_POINTS = 6,
}

外部システム連携

SMILE ERP 連携

  • エンドポイント: /api/smile-integration
  • 認証: API Key
  • 同期頻度:
  • 在庫: 10分毎
  • 価格: 1時間毎
  • 商品: 日次
  • 顧客: 日次

決済システム

  • プライマリ: GMOペイメントゲートウェイ
  • セカンダリ: PayPal

  • 設定場所: vendure-config.ts の paymentOptions

監視・ログ

アプリケーションログ

# Vendure ログ
fly logs -a ritsubi-vendure

# Next.js ログ
vercel logs [デプロイメントID]

エラー追跡

  • Vendure: Winston + Fly.io ログ
  • Next.js: Vercel Analytics + Console

パフォーマンス監視

  • レスポンス時間: Vendure内蔵メトリクス
  • データベース: PostgreSQL slow query log
  • Redis: Upstash ダッシュボード

トラブルシューティング

よくある問題

Vendure が起動しない

  1. データベース接続を確認
  2. Redis接続を確認

  3. 環境変数の設定を確認

  4. マイグレーションの実行

Next.js ビルドエラー

  1. TypeScript エラーの確認
  2. 環境変数の設定確認
  3. 依存関係の更新
  4. キャッシュクリア

SMILE連携エラー

  1. API Key の確認
  2. エンドポイントの疎通確認
  3. データ形式の確認
  4. ログでエラー詳細を確認

セキュリティ考慮事項

認証・認可

  • JWT Token による認証
  • 顧客ステータスベースの認可
  • API Rate Limiting

データ保護

  • パスワード暗号化(bcrypt)

  • PII データの適切な取り扱い

  • HTTPS通信の強制

バックアップ・復旧

データベースバックアップ

# 手動バックアップ
pg_dump $DATABASE_URL > backup.sql


# 復元
psql $DATABASE_URL < backup.sql

アプリケーションバックアップ

  • Git リポジトリでのコード管理
  • 環境変数の安全な保存
  • 設定ファイルのバージョン管理

連絡先・エスカレーション

開発チーム

  • リードエンジニア: [連絡先]
  • Vendure専門: [連絡先]

  • Next.js専門: [連絡先]

インフラ・運用

  • Fly.io担当: [連絡先]
  • Vercel担当: [連絡先]
  • DB管理者: [連絡先]

緊急時対応

  1. システム障害: 即座に開発チームに連絡

  2. セキュリティインシデント: セキュリティ担当に連絡

  3. データ問題: DB管理者に連絡

今後の改善計画

短期(1-3ヶ月)

  • 監視システムの強化
  • 自動テストの拡充
  • パフォーマンス最適化

中期(3-6ヶ月)

  • 新機能の追加
  • UI/UX改善
  • セキュリティ強化

長期(6ヶ月-1年)

  • モバイルアプリ対応
  • AI機能の導入
  • 国際展開対応

参考資料