ウィッシュリスト商品管理

説明

ウィッシュリスト商品管理機能は、公式ウィッシュリストコンテキスト内での包括的な商品管理機能を提供し、ユーザーがウィッシュリストグループに関連付けられた商品を表示、分析、管理できるようにします。このシステムは最適化されたデータアクセスのためのサマリーテーブルと統合し、商品分析と追跡のための専用ビューを提供します。

一時商品管理とは異なり、この機能は以下を備えた本番対応の商品分析に焦点を当てています:

  • 高度なフィルタリング付きウィッシュリストコンテキスト内での商品一覧表示
  • 包括的な商品概要のための登録商品テーブル
  • 最適化されたパフォーマンスのためのサマリーテーブルとの統合
  • ビジネスインテリジェンスのための商品分析統合
  • 商品処理のためのスケジュールと優先度管理
  • リアルタイム商品ステータス追跡と更新

システムは適切な関係管理を通じてデータ整合性を確保し、分析とレポート目的での商品データへの効率的なアクセスを提供します。

アクティビティ図

---
config:
  theme: base
  layout: dagre
  flowchart:
    curve: linear
    htmlLabels: true
  themeVariables:
    edgeLabelBackground: "transparent"
---
flowchart TB
    %% Main components
    UserRequest[ユーザーリクエスト]
    Database[(Database)]
    
    subgraph Controllers
        ProductController[WishlistProductController]
    end
    
    subgraph Services
        ProductService(WishlistProductService)
        AnalysisService(ProductAnalysisService)
    end
    
    subgraph Repositories
        ProductRepo[[WishlistProductRepository]]
        SummaryRepo[[SummaryWishlistProductRepository]]
    end
    
    subgraph Middleware
        AuthMiddleware{AuthMiddleware}
    end
    
    UserRequest --- Step1[
        <div style='text-align: center'>
            <span style='display: inline-block; background-color: #6699cc !important; color:white; width: 28px; height: 28px; line-height: 28px; border-radius: 50%; font-weight: bold'>1</span>
            <p style='margin-top: 8px'>認証・ウィッシュリスト検証</p>
        </div>
    ]
    Step1 --> AuthMiddleware
    AuthMiddleware --> ProductController

    ProductController --- Step2[
        <div style='text-align: center'>
            <span style='display: inline-block; background-color: #6699cc !important; color:white; width: 28px; height: 28px; line-height: 28px; border-radius: 50%; font-weight: bold'>2</span>
            <p style='margin-top: 8px'>商品データ取得・サマリー統合</p>
        </div>
    ]
    Step2 --> ProductService
    ProductService --> ProductRepo
    ProductService --> SummaryRepo

    ProductRepo --- Step3[
        <div style='text-align: center'>
            <span style='display: inline-block; background-color: #6699cc !important; color:white; width: 28px; height: 28px; line-height: 28px; border-radius: 50%; font-weight: bold'>3</span>
            <p style='margin-top: 8px'>分析統合・ビジネスインテリジェンス</p>
        </div>
    ]
    Step3 --> AnalysisService
    ProductRepo --> Database
    SummaryRepo --> Database

    AnalysisService --- Step4[
        <div style='text-align: center'>
            <span style='display: inline-block; background-color: #6699cc !important; color:white; width: 28px; height: 28px; line-height: 28px; border-radius: 50%; font-weight: bold'>4</span>
            <p style='margin-top: 8px'>データフォーマット・レスポンス生成</p>
        </div>
    ]
    Step4 --> ProductController

    %% Styling
    style UserRequest fill:#e6f3ff,stroke:#0066cc,stroke-width:2px
    style Database fill:#ffe6cc,stroke:#ff9900,stroke-width:2px
    style Controllers fill:#e6f3ff
    style Services fill:#f0f8e6
    style Repositories fill:#fff0f5
    style Middleware fill:#f5f0ff
    style Step1 fill:transparent,stroke:transparent,stroke-width:1px
    style Step2 fill:transparent,stroke:transparent,stroke-width:1px
    style Step3 fill:transparent,stroke:transparent,stroke-width:1px
    style Step4 fill:transparent,stroke:transparent,stroke-width:1px

詳細データフロー依存関係

ステップバイステッププロセス

ステップ1: 認証・ウィッシュリスト検証

  • 説明: 商品操作のためのユーザー認証とウィッシュリストアクセスを検証
  • アクション: ユーザーセッション認証、ウィッシュリスト所有権検証、グループメンバーシップチェック
  • 入力: ユーザー認証情報、ウィッシュリストスラッグ、グループメンバーシップデータ
  • 出力: ウィッシュリストアクセス確認付きの検証されたユーザーコンテキスト
  • 依存関係: ユーザー認証サービス、ウィッシュリストリポジトリ、グループ検証
  • 外部サービス: 認証プロバイダー、グループ管理サービス

ステップ2: 商品データ取得・サマリー統合

  • 説明: 最適化されたパフォーマンスのためのサマリーテーブル統合で商品データを取得
  • アクション: ウィッシュリスト商品クエリ、サマリーデータ読み込み、関係結合適用
  • 入力: ウィッシュリストコンテキスト、クエリパラメータ、フィルタ条件
  • 出力: サマリー情報と関係を持つ商品データ
  • 依存関係: 商品リポジトリ、サマリーテーブルサービス、関係管理
  • 外部サービス: データベースクラスター、キャッシュサービス

ステップ3: 分析統合・ビジネスインテリジェンス

  • 説明: 商品分析データとビジネスインテリジェンスメトリクスを統合
  • アクション: 分析結果読み込み、メトリクス計算、ビジネスインテリジェンスデータ処理
  • 入力: 商品データ、分析パラメータ、ビジネスルール
  • 出力: 分析インサイトとメトリクス付きの拡張商品データ
  • 依存関係: 分析サービス、ビジネスインテリジェンス処理、メトリクス計算
  • 外部サービス: 分析API、ビジネスインテリジェンスサービス

ステップ4: データフォーマット・レスポンス生成

  • 説明: 適切な構造とページネーション付きのAPIレスポンス用に商品データをフォーマット
  • アクション: データをAPI形式に変換、ページネーション適用、レスポンス構造生成
  • 入力: 拡張商品データ、ページネーションパラメータ、レスポンス形式要件
  • 出力: ページネーションとメタデータ付きのフォーマットされたAPIレスポンス
  • 依存関係: データ変換サービス、ページネーション処理、レスポンスフォーマット
  • 外部サービス: APIレスポンスサービス、データシリアライゼーション

データベース関連テーブル・フィールド

データベース: gb_console

erDiagram
    wishlist_products {
        bigint id PK
        bigint group_id FK
        bigint wishlist_to_group_id FK
        bigint summary_wishlist_product_id FK
        integer status "0: 非アクティブ, 1: アクティブ"
    }
    
    summary_wishlist_products {
        bigint id PK
        string input "商品の入力"
        string input_type "入力のタイプ: jan, asin, rakuten_id"
        string product_url "商品のURL"
        bigint mall_id FK
        integer sending_status "クローラーへの送信ステータス"
        integer crawl_status "クローリングのステータス"
        integer status "商品のステータス"
    }
    
    wishlist_to_groups {
        bigint id PK
        string name "ウィッシュリストの名前"
        string slug "ウィッシュリストのスラッグ"
        integer status "0: 非アクティブ, 1: アクティブ, 3: キャンセル"
    }
    
    malls {
        bigint id PK
        string name
    }
    
    wishlist_products }|--|| wishlist_to_groups : "所属"
    wishlist_products }|--|| summary_wishlist_products : "参照"
    summary_wishlist_products }|--|| malls : "所属"

ケースドキュメント

ケース1: ウィッシュリスト商品一覧

API: ウィッシュリスト商品一覧

シーケンス図

sequenceDiagram
    participant Client
    participant Controller as WishlistProductController
    participant Service as WishlistProductService
    participant Repository as WishlistProductRepository
    participant SummaryRepo as SummaryWishlistProductRepository
    participant Database
    
    Note over Client,Database: ウィッシュリスト商品一覧フロー
    
    rect rgb(255, 255, 200)
    Note right of Client: 認証フェーズ
    Client->>Controller: GET /api/v1/wishlist-to-group/{slug}/wishlist-product
    Controller->>Controller: ユーザー認証
    Controller->>Controller: ウィッシュリストアクセス検証
    end
    
    rect rgb(200, 230, 255)
    Note right of Controller: 検証フェーズ
    Controller->>Controller: クエリパラメータ検証
    Controller->>Service: list(params, wishlistSlug)
    Service->>Service: デフォルトフィルタ適用
    Service->>Service: ページネーションパラメータ検証
    end
    
    rect rgb(200, 255, 255)
    Note right of Service: データ取得
    Service->>Repository: findWhere(conditions)
    Repository->>Database: summary_productsとのJOINを含むSELECT
    Database-->>Repository: 商品レコード
    Repository-->>Service: 商品コレクション
    end
    
    rect rgb(230, 200, 255)
    Note right of Service: サマリー統合
    Service->>SummaryRepo: loadSummaryData(productIds)
    SummaryRepo->>Database: サマリーデータSELECT
    Database-->>SummaryRepo: サマリーレコード
    SummaryRepo-->>Service: 拡張商品データ
    end
    
    rect rgb(200, 255, 200)
    Note right of Service: 成功レスポンス
    Service->>Service: ページネーション適用
    Service->>Service: リソースに変換
    Service-->>Controller: ページネーション商品
    Controller-->>Client: ページネーション付きJSONレスポンス
    end

ステップ

  1. 認証: ユーザーセッションとウィッシュリストアクセスを検証
  2. パラメータ検証: クエリパラメータとページネーション設定を検証
  3. データ取得: 適切なフィルタリングでウィッシュリスト商品をクエリ
  4. サマリー統合: サマリー商品データを読み込み・統合
  5. ページネーション: ページネーションを適用しAPIリソースに変換
  6. レスポンス生成: メタデータ付きのフォーマットされたレスポンスを返却

エラーハンドリング

  • 401 Unauthorized: 無効な認証
  • 404 Not Found: ウィッシュリストが見つからないまたはアクセス拒否
  • 400 Bad Request: 無効なクエリパラメータ
  • 500 Internal Server Error: データベースまたはシステムエラー

ケース2: 登録商品テーブル

API: 登録商品テーブル

シーケンス図

sequenceDiagram
    participant Client
    participant Controller as WishlistProductController
    participant Service as WishlistProductService
    participant AnalysisService as ProductAnalysisService
    participant Repository as WishlistProductRepository
    participant Database
    
    Note over Client,Database: 登録商品テーブルフロー
    
    rect rgb(255, 255, 200)
    Note right of Client: 認証フェーズ
    Client->>Controller: GET /api/v1/wishlist-to-group/{slug}/registered-product-table
    Controller->>Controller: ユーザー認証
    Controller->>Controller: ウィッシュリストアクセス検証
    end
    
    rect rgb(200, 230, 255)
    Note right of Controller: 検証フェーズ
    Controller->>Controller: クエリパラメータ検証
    Controller->>Service: registeredProductTable(params, wishlistSlug)
    Service->>Service: テーブルパラメータ検証
    end
    
    rect rgb(200, 255, 255)
    Note right of Service: 商品データ読み込み
    Service->>Repository: getRegisteredProducts(wishlistId)
    Repository->>Database: 登録商品SELECT
    Database-->>Repository: 商品レコード
    Repository-->>Service: 商品コレクション
    end
    
    rect rgb(255, 230, 200)
    Note right of Service: 分析統合
    Service->>AnalysisService: getProductAnalysisData(products)
    AnalysisService->>AnalysisService: 分析結果読み込み
    AnalysisService->>AnalysisService: メトリクス計算
    AnalysisService-->>Service: 分析データ
    end
    
    rect rgb(230, 200, 255)
    Note right of Service: テーブルフォーマット
    Service->>Service: formatTableData(products, analysis)
    Service->>Service: ソートとフィルタリング適用
    Service->>Service: テーブル構造生成
    end
    
    rect rgb(200, 255, 200)
    Note right of Service: 成功レスポンス
    Service-->>Controller: フォーマットされたテーブルデータ
    Controller->>Controller: テーブルリソースに変換
    Controller-->>Client: テーブル付きJSONレスポンス
    end

ステップ

  1. 認証・認可: ユーザーとウィッシュリストアクセスを検証
  2. パラメータ検証: テーブルパラメータとオプションを検証
  3. 商品データ読み込み: ウィッシュリストの登録商品を読み込み
  4. 分析統合: 商品分析データとメトリクスを統合
  5. テーブルフォーマット: ソート付きのテーブル構造にデータをフォーマット
  6. レスポンス生成: フォーマットされたテーブルデータを返却

エラーハンドリング

  • 401 Unauthorized: 無効な認証
  • 404 Not Found: ウィッシュリストが見つからないまたはアクセス拒否
  • 400 Bad Request: 無効なテーブルパラメータ
  • 503 Service Unavailable: 分析サービス利用不可
  • 500 Internal Server Error: データベースまたはシステムエラー