エラーCSVダウンロード
概要説明
エラーCSVダウンロード機能により、クライアントは特定のアップロード履歴の詳細なエラー情報を含むCSVファイルをダウンロードできます。この機能は、検証エラー、フィールドヘッダー、問題のある値、行番号、エラーメッセージを含むダウンロード可能なCSVファイルを生成します。CSVファイルはGoogle Cloud Storageに保存されているエラーデータから生成され、データ修正のための包括的なエラー報告を提供します。
Swaggerリンク
API: エラーCSVダウンロードAPI
ケースドキュメント
ケース1: エラーCSVファイルのダウンロード
説明
クライアントが特定のアップロード履歴の検証エラーを含むダウンロード可能なCSVファイルを要求します。
シーケンス図
sequenceDiagram
participant Client
participant API as UploadGcsController
participant Service as ImportReviewService
participant Repository as ReviewUploadHistoryRepository
participant ErrorRepository as ReviewUploadErrorRepository
participant ExportService as ExportService
participant Database as Database
Note over Client,Database: エラーCSVダウンロードフロー
rect rgb(200, 255, 200)
Note right of Client: 成功ケースフロー
Client->>API: GET /api/v1/general/upload-file/gcs/histories/{id}/download-errors
rect rgb(200, 230, 255)
Note right of API: 入力検証
API->>API: IDパラメータを検証
end
rect rgb(200, 255, 255)
Note right of API: ビジネスロジック
API->>Service: downloadErrorCsv(id)
Service->>Repository: findById(id)
Repository->>Repository: ログインユーザーのグループIDを取得
Repository->>Database: グループフィルター付きSELECT WHERE id = {id}
Database-->>Repository: 履歴レコードを返す
Repository-->>Service: ReviewUploadHistoryモデルを返す
Service->>ErrorRepository: getErrorsByHistoryId(id)
ErrorRepository->>Database: SELECT review_upload_errors WHERE history_id = {id}
Database-->>ErrorRepository: エラーレコードを返す
ErrorRepository-->>Service: エラーコレクションを返す
Service->>ExportService: generateErrorCsv(errors)
ExportService->>ExportService: CSVファイルを生成
ExportService-->>Service: CSVファイルデータを返す
Service-->>API: CSVファイルデータを返す
end
API-->>Client: 200 OK (CSVファイルダウンロード)
end
rect rgb(255, 200, 200)
Note right of Client: エラー処理
rect rgb(255, 230, 230)
alt 検証エラー
API-->>Client: 422 検証エラー
else 履歴が見つからない
Database-->>Repository: レコードなし
Repository-->>Service: null
Service-->>API: 履歴が見つからない
API-->>Client: 404 Not Found
else アクセス拒否
Repository-->>Service: アクセス拒否
Service-->>API: アクセス拒否
API-->>Client: 403 Forbidden
else CSV生成エラー
ExportService-->>Service: CSV生成エラー
Service-->>API: エラー結果
API-->>Client: 400 Bad Request
else データベースエラー
Database-->>ErrorRepository: データベースエラー
ErrorRepository-->>Service: エラー結果
Service-->>API: エラー結果
API-->>Client: 400 Bad Request
end
end
end
ステップ
ステップ1: エラーCSVダウンロードの要求
- 説明: クライアントが特定のIDのアップロード履歴のエラーCSVファイルを要求
- リクエスト:
GET /api/v1/general/upload-file/gcs/histories/{id}/download-errors - パラメータ:
id: CSVファイルを生成するアップロード履歴の一意の識別子(必須)
- バリデーション:
- IDは正の整数である必要があります
ステップ2: 履歴レコードの検証
- 説明: システムが指定されたIDの履歴レコードが存在し、アクセス可能かを確認
- アクション:
- ログインユーザーのグループIDを取得
- グループフィルターとIDで履歴レコードをクエリ
- レコードが存在しない場合は404エラーを返す
ステップ3: エラーデータの取得
- 説明: システムが指定された履歴に関連するすべてのエラーレコードを取得
- アクション:
- review_upload_errorsテーブルから履歴IDでエラーをクエリ
- エラーメッセージ、フィールド情報、行番号を含める
- エラーが存在しない場合は空のCSVファイルを生成
ステップ4: CSVファイルの生成
- 説明: システムがエラーデータからCSVファイルを生成
- アクション:
- エラーデータをCSV形式に変換
- ヘッダー、値、行番号、エラーメッセージを含む列を追加
- 適切なファイル名とMIMEタイプを設定
ステップ5: CSVファイルを返す
- 説明: 生成されたCSVファイルをクライアントにダウンロードとして返す
- レスポンス:
- 成功:
200 OK(CSVファイルのダウンロードレスポンス) - エラー: 適切なエラーコードとメッセージ
- 成功:
データベース関連テーブルとフィールド
erDiagram
review_upload_histories {
bigint id PK
bigint user_id FK "usersテーブルへの参照"
bigint group_id FK "groupsテーブルへの参照"
string file_name "アップロードされたファイル名"
string gcs_path "ファイルが保存されているGoogle Cloud Storageのパス"
tinyInteger status "アップロードステータス: 0=未処理, 1=処理中, 2=成功, 3=失敗"
string error_reason "アップロード失敗時のエラーメッセージ(null可)"
timestamp validated_at "ファイルが検証された時刻(null可)"
timestamp created_at
timestamp updated_at
}
review_upload_errors {
bigint id PK
bigint review_upload_history_id FK "review_upload_historiesテーブルへの参照"
string header "エラーを引き起こしたフィールドヘッダー(null可)"
string value "問題のあるデータ値(null可)"
integer error_line "エラーが発生した行番号(null可)"
json error_messages "フィールドのエラーメッセージ配列"
timestamp created_at
timestamp updated_at
}
review_upload_histories ||--o{ review_upload_errors : 複数持つ
エラー処理
- ログ記録
- エラーCSVダウンロード失敗はアプリケーションログに記録されます
- エラー詳細:
ステータスコード エラーメッセージ 説明 422 検証失敗 IDパラメータが無効な場合 404 履歴が見つかりません 指定されたIDの履歴が存在しない場合 403 アクセス拒否 ユーザーがこの履歴にアクセスする権限がない場合 400 CSVファイルの生成に失敗 CSV生成またはデータベース操作が失敗した場合
主要機能
- グループベースアクセス制御: データセキュリティのためのユーザーのグループによる自動フィルタリング
- CSVファイル生成: エラーデータから構造化されたCSVファイルの自動生成
- 詳細エラー情報: フィールドレベル、行レベル、値レベルの包括的なエラー追跡
- ダウンロード機能: 適切なヘッダーとMIMEタイプでのファイルダウンロード
- エラーハンドリング: 詳細なログ記録による包括的なエラーハンドリング
セキュリティ考慮事項
- グループ分離: ユーザーは自分のグループのアップロード履歴のエラーのみにアクセス可能
- 入力検証: すべてのIDパラメータが検証されます
- アクセス制御: グループベースのフィルタリングにより不正アクセスを防止
- エラーログ記録: 失敗した操作は監視のためにログに記録されます
- ユーザー認証: グループメンバーシップを持つ認証されたユーザーが必要です