ウィッシュリストカテゴリ管理
説明
ウィッシュリストカテゴリ管理機能は、公式ウィッシュリストコンテキスト内での包括的なカテゴリ管理機能を提供し、ユーザーがウィッシュリストグループに関連付けられたカテゴリを表示・管理できるようにします。このシステムは最適化されたデータアクセスのためのサマリーテーブルと統合し、アナライザーデータベース統合を通じてカテゴリランキング情報を提供します。
この機能は以下を備えた本番対応のカテゴリ分析に焦点を当てています:
- ページネーション付きウィッシュリストコンテキスト内でのカテゴリ一覧表示
- 最適化されたカテゴリデータアクセスのためのサマリーテーブルとの統合
- アナライザーデータベースからのカテゴリランキング統合
- グループベースアクセス制御とフィルタリング
- リアルタイムカテゴリステータス追跡と管理
- モール固有のカテゴリ名解決
システムは適切な関係管理を通じてデータ整合性を確保し、包括的な分析と戦略的インサイトのためのカテゴリデータへの効率的なアクセスを提供します。
アクティビティ図
---
config:
theme: base
layout: dagre
flowchart:
curve: linear
htmlLabels: true
themeVariables:
edgeLabelBackground: "transparent"
---
flowchart TB
%% Main components
UserRequest[ユーザーリクエスト]
Database[(Database)]
subgraph Controllers
CategoryController[WishlistCategoryController]
end
subgraph Repositories
CategoryRepo[[SummaryWishlistCategoryRepository]]
WishlistRepo[[WishlistToGroupRepository]]
RankingRepo[[CategoryRankingRepository]]
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 --> CategoryController
CategoryController --- 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 --> WishlistRepo
WishlistRepo --> CategoryRepo
CategoryRepo --- 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 --> RankingRepo
CategoryRepo --> Database
RankingRepo --> Database
RankingRepo --- 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 --> CategoryController
%% Styling
style UserRequest fill:#e6f3ff,stroke:#0066cc,stroke-width:2px
style Database fill:#ffe6cc,stroke:#ff9900,stroke-width:2px
style Controllers fill:#e6f3ff
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: カテゴリランキング統合・名前解決
- 説明: アナライザーデータベースからカテゴリランキングデータを統合してカテゴリ名を解決
- アクション: カテゴリID抽出、カテゴリランキングクエリ、カテゴリデータへのカテゴリ名マッピング
- 入力: サマリーデータからのカテゴリID、ランキングクエリパラメータ
- 出力: アナライザーデータベースから解決されたカテゴリ名付きの拡張カテゴリデータ
- 依存関係: カテゴリランキングリポジトリ、アナライザーデータベース統合
- 外部サービス: アナライザーデータベース、カテゴリマッピングサービス
ステップ4: データフォーマット・レスポンス生成
- 説明: 適切な構造とページネーション付きのAPIレスポンス用にカテゴリデータをフォーマット
- アクション: データをAPI形式に変換、カテゴリ名マッピング適用、レスポンス構造生成
- 入力: 拡張カテゴリデータ、ページネーションメタデータ、レスポンス形式要件
- 出力: ページネーションとカテゴリ名付きのフォーマットされたAPIレスポンス
- 依存関係: データ変換サービス、レスポンスフォーマット
- 外部サービス: APIレスポンスサービス、データシリアライゼーション
データベース関連テーブル・フィールド
データベース: gb_console, gb_analyzer
erDiagram
"gb_console.wishlist_categories" {
bigint id PK
bigint group_id FK
bigint wishlist_to_group_id FK
bigint summary_wishlist_category_id FK
integer status "0: 非アクティブ, 1: アクティブ"
}
"gb_console.summary_wishlist_categories" {
bigint id PK
string category_id "モール内のカテゴリID"
bigint mall_id FK
integer sending_status "クローラーへの送信ステータス"
integer crawl_status "クローリングのステータス"
integer status "商品のステータス"
}
"gb_analyzer.category_rankings" {
bigint id PK
string mall_category_id
string mall_category_name
integer mall_id
}
"gb_console.wishlist_to_groups" {
bigint id PK
string name "ウィッシュリストの名前"
string slug "ウィッシュリストのスラッグ"
integer status "0: 非アクティブ, 1: アクティブ, 3: キャンセル"
}
"gb_console.malls" {
bigint id PK
string name
}
"gb_console.wishlist_categories" }|--|| "gb_console.wishlist_to_groups" : "所属"
"gb_console.wishlist_categories" }|--|| "gb_console.summary_wishlist_categories" : "参照"
"gb_console.summary_wishlist_categories" }|--|| "gb_console.malls" : "所属"
ケースドキュメント
ケース1: ウィッシュリストカテゴリ一覧
API: ウィッシュリストカテゴリ一覧
シーケンス図
sequenceDiagram
participant Client
participant Controller as WishlistCategoryController
participant WishlistRepo as WishlistToGroupRepository
participant CategoryRepo as SummaryWishlistCategoryRepository
participant RankingRepo as CategoryRankingRepository
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-category
Controller->>Controller: ユーザー認証
end
rect rgb(200, 230, 255)
Note right of Controller: ウィッシュリスト検証
Controller->>WishlistRepo: findBySlug(slug)
WishlistRepo->>Database: wishlist_to_groupsからSELECT
Database-->>WishlistRepo: ウィッシュリストレコード
WishlistRepo-->>Controller: ウィッシュリストまたはnull
end
rect rgb(200, 255, 255)
Note right of Controller: カテゴリデータ取得
alt ウィッシュリスト見つかった
Controller->>CategoryRepo: serverPaginationFilteringFor(params, wishlistId)
CategoryRepo->>Database: グループフィルタリングとページネーション付きSELECT
Database-->>CategoryRepo: ページネーションカテゴリ
CategoryRepo-->>Controller: カテゴリコレクション
else ウィッシュリスト見つからない
Controller-->>Client: エラーレスポンス
end
end
rect rgb(255, 230, 200)
Note right of Controller: カテゴリ名解決
Controller->>Controller: カテゴリID抽出
Controller->>RankingRepo: IDでカテゴリランキングクエリ
RankingRepo->>Database: category_rankingsからSELECT
Database-->>RankingRepo: カテゴリランキング
RankingRepo-->>Controller: カテゴリ名マッピング
end
rect rgb(230, 200, 255)
Note right of Controller: データ拡張
Controller->>Controller: カテゴリにカテゴリ名をマッピング
Controller->>Controller: カテゴリデータ拡張
end
rect rgb(200, 255, 200)
Note right of Controller: 成功レスポンス
Controller->>Controller: リソースに変換
Controller-->>Client: 拡張カテゴリ付きJSONレスポンス
end
ステップ
- 認証: ユーザーセッションを検証
- ウィッシュリスト検証: スラッグでウィッシュリストを検索し存在を検証
- カテゴリデータ取得: グループフィルタリングとページネーション付きサマリーカテゴリをクエリ
- カテゴリ名解決: カテゴリIDを抽出しアナライザーデータベースでカテゴリ名をクエリ
- データ拡張: カテゴリデータにカテゴリ名をマッピング
- レスポンス生成: APIリソースに変換しフォーマットされたレスポンスを返却
エラーハンドリング
- 401 Unauthorized: 無効な認証
- 404 Not Found: ウィッシュリストが見つからない
- 500 Internal Server Error: データベースまたはシステムエラー