ウィッシュリスト商品管理
説明
ウィッシュリスト商品管理機能は、公式ウィッシュリストコンテキスト内での包括的な商品管理機能を提供し、ユーザーがウィッシュリストグループに関連付けられた商品を表示、分析、管理できるようにします。このシステムは最適化されたデータアクセスのためのサマリーテーブルと統合し、商品分析と追跡のための専用ビューを提供します。
一時商品管理とは異なり、この機能は以下を備えた本番対応の商品分析に焦点を当てています:
- 高度なフィルタリング付きウィッシュリストコンテキスト内での商品一覧表示
- 包括的な商品概要のための登録商品テーブル
- 最適化されたパフォーマンスのためのサマリーテーブルとの統合
- ビジネスインテリジェンスのための商品分析統合
- 商品処理のためのスケジュールと優先度管理
- リアルタイム商品ステータス追跡と更新
システムは適切な関係管理を通じてデータ整合性を確保し、分析とレポート目的での商品データへの効率的なアクセスを提供します。
アクティビティ図
---
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
ステップ
- 認証: ユーザーセッションとウィッシュリストアクセスを検証
- パラメータ検証: クエリパラメータとページネーション設定を検証
- データ取得: 適切なフィルタリングでウィッシュリスト商品をクエリ
- サマリー統合: サマリー商品データを読み込み・統合
- ページネーション: ページネーションを適用しAPIリソースに変換
- レスポンス生成: メタデータ付きのフォーマットされたレスポンスを返却
エラーハンドリング
- 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
ステップ
- 認証・認可: ユーザーとウィッシュリストアクセスを検証
- パラメータ検証: テーブルパラメータとオプションを検証
- 商品データ読み込み: ウィッシュリストの登録商品を読み込み
- 分析統合: 商品分析データとメトリクスを統合
- テーブルフォーマット: ソート付きのテーブル構造にデータをフォーマット
- レスポンス生成: フォーマットされたテーブルデータを返却
エラーハンドリング
- 401 Unauthorized: 無効な認証
- 404 Not Found: ウィッシュリストが見つからないまたはアクセス拒否
- 400 Bad Request: 無効なテーブルパラメータ
- 503 Service Unavailable: 分析サービス利用不可
- 500 Internal Server Error: データベースまたはシステムエラー