データセット作成
コマンドシグネチャ
php artisan dataset:create {wishlist_slug?}
目的
dataset:createコマンドは、アクティブなサブスクリプションを持つ適格なウィッシュリストグループを特定し、コンソール(gb_console)とアナライザー(gb_analyzer)の両方のデータベースから分析済みデータを収集し、データ閾値を検証し、TV Python APIに構造化されたデータセット作成リクエストを送信します。このコマンドは、十分な処理済みデータを持つウィッシュリストのみがデータセット生成に使用されることを確保し、機械学習分析のためのデータ品質基準を維持します。
シーケンス図
ステップ1:コマンド初期化とウィッシュリスト適格性
sequenceDiagram
participant System
participant CreateCommand as dataset:create
participant WishlistRepo as WishlistToGroupRepository
participant ConsoleDB[(gb_console.wishlist_to_groups)]
participant Logger
participant Slack
Note over System,Slack: コマンド初期化(30分毎)
rect rgb(200, 255, 200)
Note right of System: 正常ケース - コマンド起動
System->>CreateCommand: コマンド実行
CreateCommand->>Logger: wishlist_slugパラメータでコマンド開始をログ
CreateCommand->>WishlistRepo: getEligibleWishlists(wishlist_slug?)
WishlistRepo->>ConsoleDB: サブスクリプション付きのアクティブなウィッシュリストをクエリ
Note right of WishlistRepo: WHERE status=1 AND admin_status=1 AND subscription active
ConsoleDB-->>WishlistRepo: 適格なウィッシュリストグループを返す
WishlistRepo-->>CreateCommand: サブスクリプション付きのアクティブなウィッシュリストを返す
CreateCommand->>Logger: 適格なウィッシュリスト数をログ
end
rect rgb(255, 200, 200)
Note right of System: エラーハンドリング
rect rgb(255, 230, 230)
alt データベース接続エラー
WishlistRepo->>Logger: データベース接続エラーをログ
WishlistRepo->>Slack: データベースエラー通知を送信
else 適格なウィッシュリストなし
CreateCommand->>Logger: 処理するウィッシュリストがないことをログ
else 無効なウィッシュリストスラグ
CreateCommand->>Logger: 無効なウィッシュリストスラグエラーをログ
CreateCommand->>Slack: 無効なパラメータ通知を送信
end
end
end
ステップ2:複数ソースからのデータ収集
sequenceDiagram
participant CreateCommand as dataset:create
participant ProductRepo as ProductRepository
participant CategoryRepo as CategoryRankingRepository
participant SearchRepo as SearchQueryRankingRepository
participant ViewpointRepo as ReviewSentenceRepository
participant AnalyzerDB[(gb_analyzer)]
participant ConsoleDB[(gb_console)]
participant Logger
participant Slack
Note over CreateCommand,Slack: データ収集フェーズ
rect rgb(200, 255, 200)
Note right of CreateCommand: 正常ケース - データ取得
loop 各適格ウィッシュリストに対して
CreateCommand->>Logger: ウィッシュリスト処理開始をログ
rect rgb(200, 230, 255)
Note right of CreateCommand: 商品データ収集
CreateCommand->>ProductRepo: getProductsForWishlist(wishlistId)
ProductRepo->>AnalyzerDB: crawl_status = 2のランキング付き商品をクエリ
AnalyzerDB-->>ProductRepo: ランキング付き商品データを返す
ProductRepo-->>CreateCommand: ランキング付き商品データを返す
CreateCommand->>Logger: 商品データ数をログ
end
rect rgb(200, 230, 255)
Note right of CreateCommand: カテゴリデータ収集
CreateCommand->>CategoryRepo: getCategoriesForWishlist(wishlistId)
CategoryRepo->>AnalyzerDB: 商品関係付きのcategory_rankingsをクエリ
AnalyzerDB-->>CategoryRepo: カテゴリランキングを返す
CategoryRepo-->>CreateCommand: カテゴリランキングを返す
CreateCommand->>Logger: カテゴリデータ数をログ
end
rect rgb(200, 230, 255)
Note right of CreateCommand: 検索クエリデータ収集
CreateCommand->>SearchRepo: getSearchQueriesForWishlist(wishlistId)
SearchRepo->>AnalyzerDB: 商品関係付きのsearch_query_rankingsをクエリ
AnalyzerDB-->>SearchRepo: 検索クエリランキングを返す
SearchRepo-->>CreateCommand: 検索クエリランキングを返す
CreateCommand->>Logger: 検索クエリデータ数をログ
end
rect rgb(200, 230, 255)
Note right of CreateCommand: 視点データ収集
CreateCommand->>ViewpointRepo: getSpecificViewpoints(wishlistId)
ViewpointRepo->>AnalyzerDB: 視点関連付きのreview_sentencesをクエリ
AnalyzerDB-->>ViewpointRepo: 視点関連を返す
ViewpointRepo-->>CreateCommand: 視点関連を返す
CreateCommand->>Logger: 視点データ数をログ
end
end
end
rect rgb(255, 200, 200)
Note right of CreateCommand: エラーハンドリング
rect rgb(255, 230, 230)
alt 不十分な商品データ
CreateCommand->>Logger: 不十分な商品データをログ
CreateCommand->>CreateCommand: ウィッシュリスト処理をスキップ
else データベースクエリエラー
CreateCommand->>Logger: データベースクエリエラーをログ
CreateCommand->>Slack: データ収集エラー通知を送信
else データ整合性エラー
CreateCommand->>Logger: データ整合性検証エラーをログ
CreateCommand->>Slack: データ整合性エラー通知を送信
end
end
end
ステップ3:データ閾値検証
sequenceDiagram
participant CreateCommand as dataset:create
participant ConfigService as Configuration Service
participant Logger
participant Slack
Note over CreateCommand,Slack: データ閾値検証プロセス
rect rgb(200, 255, 200)
Note right of CreateCommand: 正常ケース - 閾値検証
rect rgb(255, 255, 200)
Note right of CreateCommand: 閾値チェック
CreateCommand->>ConfigService: getMinProductSuccessCount()
ConfigService-->>CreateCommand: MIN_PRODUCT_SUCCESS_COUNT(2)を返す
CreateCommand->>ConfigService: getMinNewProductSuccessCount()
ConfigService-->>CreateCommand: MIN_NEW_PRODUCT_SUCCESS_COUNT(1)を返す
CreateCommand->>CreateCommand: validateDataThresholds()
CreateCommand->>CreateCommand: countSuccessfulProducts()
CreateCommand->>CreateCommand: countSuccessfulCategories()
CreateCommand->>CreateCommand: countSuccessfulSearchQueries()
CreateCommand->>Logger: 閾値検証結果をログ
end
rect rgb(200, 230, 255)
alt 閾値を満たす
Note right of CreateCommand: 検証成功
CreateCommand->>CreateCommand: prepareDatasetRequest()
CreateCommand->>Logger: 閾値検証成功をログ
else 閾値を満たさない
Note right of CreateCommand: 検証失敗
CreateCommand->>CreateCommand: updateWishlistWithError()
CreateCommand->>Logger: 詳細付きで閾値検証失敗をログ
CreateCommand->>Slack: 閾値失敗通知を送信
end
end
end
rect rgb(255, 200, 200)
Note right of CreateCommand: エラーハンドリング
rect rgb(255, 230, 230)
alt 設定エラー
CreateCommand->>Logger: 設定取得エラーをログ
CreateCommand->>Slack: 設定エラー通知を送信
else 検証ロジックエラー
CreateCommand->>Logger: 検証ロジックエラーをログ
CreateCommand->>Slack: 検証エラー通知を送信
end
end
end
ステップ4:TV Python API統合
sequenceDiagram
participant CreateCommand as dataset:create
participant AnalyzerAPI as TV Python API
participant APIService as AnalyzerApiService
participant Logger
participant Slack
Note over CreateCommand,Slack: TV Python APIデータセット作成
rect rgb(200, 255, 200)
Note right of CreateCommand: 正常ケース - API統合
rect rgb(200, 230, 255)
Note right of CreateCommand: APIリクエスト準備
CreateCommand->>APIService: prepareDatasetRequest(structuredData)
APIService->>APIService: validateRequestStructure()
APIService->>APIService: addVersioningHeaders()
APIService-->>CreateCommand: フォーマットされたリクエストを返す
CreateCommand->>Logger: APIリクエスト準備をログ
end
rect rgb(255, 255, 200)
Note right of CreateCommand: API送信
CreateCommand->>AnalyzerAPI: createDataset(structuredData)
AnalyzerAPI->>AnalyzerAPI: リクエストペイロードを検証
AnalyzerAPI->>AnalyzerAPI: MLパイプラインでデータセットを作成
AnalyzerAPI-->>CreateCommand: データセットIDとステータスを返す
CreateCommand->>Logger: dataset_id付きでAPI送信成功をログ
end
end
rect rgb(255, 200, 200)
Note right of CreateCommand: エラーハンドリング
rect rgb(255, 230, 230)
alt API認証エラー
AnalyzerAPI->>Logger: 認証失敗をログ
AnalyzerAPI->>Slack: API認証エラーを送信
AnalyzerAPI->>CreateCommand: 認証エラーを返す
else APIサービスエラー
AnalyzerAPI->>Logger: レスポンス付きでAPIサービスエラーをログ
AnalyzerAPI->>Slack: APIサービスエラー通知を送信
AnalyzerAPI->>CreateCommand: サービスエラーを返す
else リクエスト検証エラー
AnalyzerAPI->>Logger: リクエスト検証失敗をログ
AnalyzerAPI->>Slack: リクエスト形式エラーを送信
AnalyzerAPI->>CreateCommand: 検証エラーを返す
else APIタイムアウトエラー
AnalyzerAPI->>Logger: APIタイムアウトエラーをログ
AnalyzerAPI->>Slack: タイムアウトエラー通知を送信
AnalyzerAPI->>CreateCommand: タイムアウトエラーを返す
end
end
end
ステップ5:データベースレコード作成とログ記録
sequenceDiagram
participant CreateCommand as dataset:create
participant HistoryRepo as WishlistDatasetHistoryRepository
participant LogService as DatasetCreationLogService
participant ConsoleDB[(gb_console)]
participant Logger
participant Slack
Note over CreateCommand,Slack: データベースレコード管理
rect rgb(200, 255, 200)
Note right of CreateCommand: 正常ケース - レコード作成
rect rgb(200, 230, 255)
Note right of CreateCommand: データセット履歴作成
CreateCommand->>HistoryRepo: createDatasetHistory(datasetId, config)
HistoryRepo->>ConsoleDB: BEGIN TRANSACTION
HistoryRepo->>ConsoleDB: INSERT INTO wishlist_dataset_histories
ConsoleDB-->>HistoryRepo: 履歴レコードIDを返す
HistoryRepo->>ConsoleDB: COMMIT TRANSACTION
HistoryRepo-->>CreateCommand: 履歴レコード作成を確認
CreateCommand->>Logger: データセット履歴作成成功をログ
end
rect rgb(200, 230, 255)
Note right of CreateCommand: イベントログ記録
CreateCommand->>LogService: logSuccessEvent(wishlist, dataset)
LogService->>ConsoleDB: INSERT INTO wishlist_dataset_creation_logs
ConsoleDB-->>LogService: ログレコードIDを返す
LogService-->>CreateCommand: イベントログ記録を確認
CreateCommand->>Logger: 成功イベント作成をログ
end
rect rgb(230, 200, 255)
Note right of CreateCommand: 成功監視
CreateCommand->>Logger: 統計付きでデータセット作成成功をログ
CreateCommand->>Slack: データセット作成成功通知を送信
end
end
rect rgb(255, 200, 200)
Note right of CreateCommand: エラーハンドリング
rect rgb(255, 230, 230)
alt データベーストランザクションエラー
HistoryRepo->>ConsoleDB: ROLLBACK TRANSACTION
HistoryRepo->>Logger: トランザクションロールバックエラーをログ
HistoryRepo->>Slack: データベースエラー通知を送信
HistoryRepo->>CreateCommand: トランザクションエラーを返す
else ログ作成失敗
LogService->>Logger: 詳細付きでログ作成失敗をログ
LogService->>Slack: ログ作成失敗通知を送信
LogService->>CreateCommand: ログエラーを返す
else レコード制約エラー
CreateCommand->>Logger: 制約違反エラーをログ
CreateCommand->>Slack: 制約エラー通知を送信
end
end
end
ステップ6:通知とユーザー通信
sequenceDiagram
participant CreateCommand as dataset:create
participant NotificationService as DatasetNotificationService
participant PusherService as Pusher Service
participant EmailService as Email Service
participant ConsoleDB[(gb_console.notifications)]
participant Logger
participant Slack
Note over CreateCommand,Slack: 通知とコミュニケーション
rect rgb(200, 255, 200)
Note right of CreateCommand: 正常ケース - 通知配信
rect rgb(200, 230, 255)
Note right of CreateCommand: アプリ内通知
CreateCommand->>NotificationService: sendSuccessNotification()
NotificationService->>ConsoleDB: INSERT INTO notifications
ConsoleDB-->>NotificationService: 通知IDを返す
NotificationService->>PusherService: リアルタイム通知を送信
PusherService-->>NotificationService: 配信を確認
NotificationService-->>CreateCommand: 通知送信を確認
CreateCommand->>Logger: アプリ内通知成功をログ
end
rect rgb(200, 230, 255)
Note right of CreateCommand: メール通知
CreateCommand->>EmailService: sendDatasetCreationEmail(wishlist, dataset)
EmailService->>EmailService: メールテンプレートを準備
EmailService->>EmailService: グループメンバーに送信
EmailService-->>CreateCommand: メール送信を確認
CreateCommand->>Logger: メール通知成功をログ
end
rect rgb(230, 200, 255)
Note right of CreateCommand: 管理者監視
CreateCommand->>Slack: メトリクス付きで管理者成功通知を送信
CreateCommand->>Logger: 管理者通知成功をログ
end
end
rect rgb(255, 200, 200)
Note right of CreateCommand: エラーハンドリング
rect rgb(255, 230, 230)
alt 通知保存エラー
NotificationService->>Logger: 通知保存エラーをログ
NotificationService->>Slack: 通知エラーアラートを送信
else Pusherサービスエラー
PusherService->>Logger: Pusherサービスエラーをログ
PusherService->>CreateCommand: データベースのみの通知にフォールバック
else メールサービスエラー
EmailService->>Logger: メールサービスエラーをログ
EmailService->>Slack: メールエラー通知を送信
end
end
end
ステップ7:コマンド完了とエラー回復
sequenceDiagram
participant CreateCommand as dataset:create
participant LogService as DatasetCreationLogService
participant System
participant Logger
participant Slack
Note over CreateCommand,Slack: コマンド完了とエラー回復
rect rgb(200, 255, 200)
Note right of CreateCommand: 正常ケース - 正常完了
rect rgb(230, 200, 255)
Note right of CreateCommand: コマンドサマリー
CreateCommand->>Logger: 全体統計付きでコマンド完了をログ
CreateCommand->>Logger: 処理されたウィッシュリストの合計と成功率をログ
CreateCommand->>Logger: 実行時間とパフォーマンスメトリクスをログ
CreateCommand->>Slack: メトリクス付きでコマンド完了サマリーを送信
end
end
rect rgb(255, 200, 200)
Note right of CreateCommand: エラーハンドリングと回復
rect rgb(255, 230, 230)
alt APIエラー回復
CreateCommand->>Logger: リトライ情報付きでAPIエラー詳細をログ
CreateCommand->>LogService: logFailureEvent(wishlist, apiError)
CreateCommand->>CreateCommand: トランザクションをロールバック
CreateCommand->>Slack: 解決手順付きでAPIエラーアラートを送信
else データベースエラー回復
CreateCommand->>Logger: データベースエラー詳細をログ
CreateCommand->>CreateCommand: トランザクションをロールバック
CreateCommand->>Slack: データベースエラー通知を送信
CreateCommand->>LogService: logFailureEvent(wishlist, databaseError)
else 閾値検証失敗
CreateCommand->>CreateCommand: updateWishlistWithError()
CreateCommand->>LogService: logFailureEvent(wishlist, thresholdError)
CreateCommand->>Logger: 特定のカウント付きで閾値失敗をログ
else 重大なシステムエラー
CreateCommand->>Logger: 重大なシステムエラーをログ
CreateCommand->>Slack: 重大なエラーアラートを送信
CreateCommand->>System: 以降の処理を停止
end
end
end
詳細
パラメータ
{wishlist_slug?}: 特定のウィッシュリスト用にデータセットを作成するためのオプションパラメータ- 提供されると、コマンドは指定されたウィッシュリストグループのみを処理します
- 省略された場合、すべての適格なウィッシュリストグループが処理されます
- データベースに存在する既存のウィッシュリストスラグと一致する必要があります
- 手動データセット作成や特定のウィッシュリストのテストに役立ちます
頻度
- スケジュール実行: 30分毎
- Laravelのスケジューラを使用して
routes/console.phpで設定 - 例:
Schedule::command('dataset:create')->everyThirtyMinutes();
- Laravelのスケジューラを使用して
- 手動実行: 特定のウィッシュリスト用に手動でトリガー可能
- テストや即時データセット作成のニーズに使用
依存関係
データベース依存関係:
- ウィッシュリストとデータセットレコード用のコンソールデータベース(
gb_console)接続 - 商品、カテゴリ、検索データ用のアナライザーデータベース(
gb_analyzer)接続 - 最小商品成功数: 2(
MIN_PRODUCT_SUCCESS_COUNTで設定可能) - 最小新商品成功数: 1(
MIN_NEW_PRODUCT_SUCCESS_COUNTで設定可能)
外部サービス依存関係:
- TV Python APIサービスの可用性と認証
- 環境変数で設定された有効なAPI認証情報
- APIサービスへのネットワーク接続
- APIバージョン互換性(
config/analyzer_api.dataset.versionで設定)
システム依存関係:
- 有料ステータスのアクティブなサブスクリプションを持つウィッシュリストグループ
crawl_status = 2(成功)で正常に処理された商品、カテゴリ、検索データconfig/analyzer_api.phpで適切に設定されたデータセット設定- 特定視点分析用のレビュー文データ
出力
テーブル
データセット作成コマンドは複数のデータベーステーブルと相互作用します。完全なテーブル構造、フィールド定義、および関係については、データベーススキーマセクションを参照してください。
主要出力テーブル:
wishlist_dataset_histories: APIデータセットIDを持つ新しいデータセット追跡レコードを作成wishlist_dataset_creation_logs: すべての作成イベント(リクエスト、成功、失敗)をログwishlist_to_groups: エラーメッセージと手動リクエストタイムスタンプを更新
コマンド固有の操作:
- 作成: APIからのデータセットIDを持つ
wishlist_dataset_historiesに新しいレコードを作成 - ログ: 詳細データを持つ
wishlist_dataset_creation_logsに成功/失敗イベントをログ - 更新: ウィッシュリストのエラーメッセージと手動リクエストフラグを更新
サービス
TV Python API:
- 構造化リクエストペイロードを持つデータセット作成エンドポイント
- 追跡用のデータセットIDと初期ステータスを返す
- 設定バージョニングとAPI互換性を処理
通知サービス:
- ユーザー向けの
DatasetNotificationクラスを介したアプリ内通知 - データセット作成完了/失敗のためのメール通知
- 管理者向けの
DatasetSlackChannelを介したSlackアラート - 接続されたクライアント向けのPusherを介したリアルタイム更新
リポジトリサービス:
WishlistToGroupRepositoryInterface: サブスクリプション検証による適格性フィルタリングWishlistDatasetHistoryRepositoryInterface: データセット履歴CRUD操作DatasetCreationLogService: 構造化データによるイベントログ記録ProductRepositoryInterface: アナライザーデータベースからの商品データ取得CategoryRankingRepositoryInterface: 商品関係を持つカテゴリランキングデータSearchQueryRankingRepositoryInterface: 商品関係を持つ検索クエリランキングデータReviewSentenceRepositoryInterface: 感情分析のための特定視点データ
エラーハンドリング
ログ
システムはデータセット作成の問題をトラブルシューティングするための包括的なログを生成します:
データセット作成エラー:
- 完全なリクエスト/レスポンス詳細を持つAPI通信失敗
- 特定の閾値情報とカウントを持つデータ検証エラー
- ロールバック詳細と影響を受けたレコードを持つデータベーストランザクション失敗
- 不足パラメータ情報と提案を持つ設定エラー
適格性検証エラー:
- サブスクリプションステータス詳細を持つサブスクリプション検証失敗
- 実際の対必要カウントを持つデータ閾値失敗
- 特定のフィールド検証問題を持つウィッシュリスト設定エラー
ログの場所:
- コンテキスト情報を持つアプリケーションログ:
storage/logs/laravel.log - 実行統計とパフォーマンスメトリクスを持つコマンド固有のログ
- デバッグ用の完全なスタックトレースとリクエスト詳細を持つエラーログ
Slack
自動Slack通知は運用監視のためにDatasetSlackChannelを介して送信されます:
成功通知:
- 処理統計とタイミングを持つデータセット作成完了
- 成功/失敗カウントを持つバッチ処理サマリー
- APIレスポンス時間とデータ量を含むパフォーマンスメトリクス
エラー通知:
- エラーコードとリトライ情報を持つAPI通信失敗
- 影響を受けたウィッシュリスト詳細を持つデータベース操作失敗
- 解決提案とドキュメントリンクを持つ設定問題
- 即時管理者注意を必要とする重大なシステムエラー
通知形式:
- 追跡用のコマンド名と実行タイムスタンプ
- 優先順位付けのためのエラータイプと重大度レベル
- 調査用の影響を受けたウィッシュリストグループとデータセットID
- 提案されたトラブルシューティング手順とドキュメント参照
トラブルシューティング
データを確認
ウィッシュリスト適格性の検証:
-- 有効なサブスクリプションを持つアクティブなウィッシュリストグループを確認
SELECT wtg.id, wtg.name, wtg.status, wtg.admin_status,
wtg.training_schedule, wtg.manual_request_dataset_at,
s.status as subscription_status, sh.payment_status
FROM wishlist_to_groups wtg
JOIN subscriptions s ON wtg.subscription_id = s.id
JOIN subscription_histories sh ON s.id = sh.subscription_id
WHERE wtg.status = 1 AND wtg.admin_status = 1
AND s.status = 'active' AND sh.payment_status = 'paid'
AND (wtg.training_schedule != 'manual' OR wtg.manual_request_dataset_at IS NOT NULL);
データ閾値の検証:
-- ウィッシュリストグループの商品数を確認
SELECT wtg.id, wtg.name,
COUNT(CASE WHEN swp.crawl_status = 2 THEN 1 END) as success_products,
COUNT(CASE WHEN swc.crawl_status = 2 THEN 1 END) as success_categories,
COUNT(CASE WHEN swsq.crawl_status = 2 THEN 1 END) as success_search_queries
FROM wishlist_to_groups wtg
LEFT JOIN summary_wishlist_products swp ON wtg.id = swp.wishlist_to_group_id
LEFT JOIN summary_wishlist_categories swc ON wtg.id = swc.wishlist_to_group_id
LEFT JOIN summary_wishlist_search_queries swsq ON wtg.id = swsq.wishlist_to_group_id
GROUP BY wtg.id, wtg.name
HAVING success_products >= 2; -- MIN_PRODUCT_SUCCESS_COUNT
最近のデータセット作成試行の確認:
-- 最近のデータセット作成イベントを確認
SELECT wdcl.*, wtg.name as wishlist_name
FROM wishlist_dataset_creation_logs wdcl
JOIN wishlist_to_groups wtg ON wdcl.wishlist_to_group_id = wtg.id
WHERE wdcl.created_at > DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY wdcl.created_at DESC LIMIT 20;
ログを確認
アプリケーションログ:
# 最近のdataset:createコマンドログを確認
tail -f storage/logs/laravel.log | grep -E "dataset:create"
# API通信ログを確認
grep "AnalyzerApiService.*dataset.*create" storage/logs/laravel.log | tail -20
# 閾値検証エラーを確認
grep -E "(MIN_PRODUCT_SUCCESS_COUNT|MIN_NEW_PRODUCT_SUCCESS_COUNT)" storage/logs/laravel.log | tail -10
# エラーパターンを確認
grep -E "(ERROR|CRITICAL)" storage/logs/laravel.log | grep "dataset:create" | tail -10
データベースログ:
-- 失敗したデータセット作成試行を確認
SELECT wdh.*, wtg.name as wishlist_name
FROM wishlist_dataset_histories wdh
JOIN wishlist_to_groups wtg ON wdh.wishlist_to_group_id = wtg.id
WHERE wdh.created_at > DATE_SUB(NOW(), INTERVAL 1 DAY)
AND wdh.dataset_id IS NULL
ORDER BY wdh.created_at DESC;
-- ウィッシュリストエラーメッセージを確認
SELECT id, name, error_message, updated_at
FROM wishlist_to_groups
WHERE error_message IS NOT NULL
AND updated_at > DATE_SUB(NOW(), INTERVAL 1 DAY);
APIレスポンス検証:
# API接続性をテスト
curl -X GET "https://api.analyzer.example.com/health" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# データセット作成エンドポイントをテスト
curl -X POST "https://api.analyzer.example.com/datasets?version=1" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"dataset_name": "test", "dataset_type": 1, "settings": {}}'
パフォーマンス監視:
- パフォーマンス低下についてログでコマンド実行時間を監視
- 大規模なウィッシュリストデータセットのデータベースクエリパフォーマンスを確認
- APIレスポンス時間とタイムアウト設定を確認