アップロード履歴の保存
概要説明
アップロード履歴保存機能により、クライアントはGoogle Cloud Storageへのファイルアップロードに関するメタデータを保存できます。この機能は、ファイル名、GCSパス、アップロードステータス、エラー理由などのアップロードされたファイルに関する情報を保存します。この履歴は、アップロードの進行状況の追跡、失敗したアップロードのデバッグ、ファイル管理操作の監査証跡の提供に使用されます。
Swaggerリンク
API: アップロード履歴API
ケースドキュメント
ケース1: 成功したアップロード履歴の保存
説明
クライアントがアップロード履歴を追跡するために、正常にアップロードされたファイルに関するメタデータを保存します。
シーケンス図
sequenceDiagram
participant Client
participant API as UploadGcsController
participant Service as ImportReviewService
participant Repository as ReviewUploadHistoryRepository
participant Database as Database
Note over Client,Database: アップロード履歴保存フロー
rect rgb(200, 255, 200)
Note right of Client: 成功ケースフロー
Client->>API: POST /api/v1/general/upload-file/gcs/upload-history
rect rgb(200, 230, 255)
Note right of API: 入力検証
API->>API: StoreUploadHistoryRequestを使用したリクエストデータの検証
end
rect rgb(200, 255, 255)
Note right of API: ビジネスロジック
API->>Service: createHistory(request->all())
Service->>Service: ログインユーザーとグループの情報を取得
Service->>Repository: create(historyData)
Repository->>Database: INSERT INTO review_upload_histories
Database-->>Repository: 作成されたレコードを返す
Repository-->>Service: ReviewUploadHistoryモデルを返す
Service-->>API: 履歴データを返す
end
API-->>Client: 200 OK (履歴データ)
end
rect rgb(255, 200, 200)
Note right of Client: エラー処理
rect rgb(255, 230, 230)
alt 検証エラー
API-->>Client: 422 検証エラー
else データベースエラー
Database-->>Repository: データベースエラー
Repository-->>Service: エラー結果
Service-->>API: エラー結果
API-->>Client: 400 Bad Request
else サービスエラー
Service-->>API: エラー結果
API-->>Client: 400 Bad Request
end
end
end
ステップ
ステップ1: アップロード履歴の送信
- 説明: クライアントがファイルアップロード成功後に履歴データを送信
- リクエスト:
POST /api/v1/general/upload-file/gcs/upload-history - パラメータ:
file_name: アップロードされたファイル名(必須)gcs_path: ファイルが保存されているGoogle Cloud Storageのパス(必須)error_reason: アップロード失敗時のエラーメッセージ(オプション)
- バリデーション:
- ファイル名は文字列で255文字以下である必要があります
- GCSパスは文字列である必要があります
- エラー理由は文字列で255文字以下である必要があります(提供される場合)
ステップ2: 履歴保存の処理
- 説明: システムがユーザーとグループのコンテキストでアップロード履歴を保存
- アクション:
- 現在ログインしているユーザー情報を取得
- グループメンバーシップからユーザーのグループIDを取得
- user_id、group_id、提供されたデータで履歴レコードを作成
- デフォルトステータスを'Notyet'(0)に設定
ステップ3: 履歴データを返す
- 説明: 作成された履歴レコードをクライアントに返す
- レスポンス:
- 成功:
200 OK(ID、タイムスタンプ、リレーションシップを含む完全な履歴データ) - エラー: 適切なエラーコードとメッセージ
- 成功:
データベース関連テーブルとフィールド
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
}
users {
bigint id PK
string name "ユーザーのフルネーム"
string email "ユーザーのメールアドレス"
}
groups {
bigint id PK
string name "グループ名"
}
review_upload_histories ||--o{ users : 所属
review_upload_histories ||--o{ groups : 所属
エラー処理
- ログ記録
- 履歴保存エラーはアプリケーションログに記録されます
- エラー詳細:
ステータスコード エラーメッセージ 説明 422 検証失敗 リクエストパラメータが無効な場合 400 履歴を保存できません データベース操作が失敗した場合
ケース2: 失敗したアップロード履歴の保存
説明
クライアントがデバッグのために、エラー情報を含む失敗したファイルアップロードのメタデータを保存します。
ステップ
ステップ1: 失敗したアップロード履歴の送信
- 説明: クライアントがエラー情報を含むアップロード履歴を送信
- リクエスト:
POST /api/v1/general/upload-file/gcs/upload-history - パラメータ:
file_name: アップロードに失敗したファイル名gcs_path: 意図したGCSパスerror_reason: 失敗を説明する詳細なエラーメッセージ
ステップ2: 失敗した履歴保存の処理
- 説明: システムがエラーコンテキストで失敗したアップロード履歴を保存
- アクション:
- error_reasonフィールドが入力された履歴レコードを保存
- 成功したアップロードと同じユーザーとグループコンテキストを維持
- エラー追跡とデバッグ機能を有効化
ステップ3: 失敗した履歴データを返す
- 説明: 失敗した履歴レコードをクライアントに返す
- レスポンス:
- 成功:
200 OK(エラー情報を含む履歴データ) - エラー: 適切なエラーコードとメッセージ
- 成功:
エラー処理
- ログ記録
- 失敗したアップロード履歴保存はデバッグのためにログに記録されます
- エラー詳細:
ステータスコード エラーメッセージ 説明 422 検証失敗 リクエストパラメータが無効な場合 400 履歴を保存できません データベース操作が失敗した場合
主要機能
- ユーザーコンテキスト: ログインユーザーとそのグループへの自動関連付け
- エラー追跡: 詳細なエラーメッセージの保存サポート
- ステータス管理: 新しいアップロード履歴のデフォルトステータス設定
- 検証: すべてのフィールドの包括的な入力検証
- 監査証跡: アップロード試行と結果の完全な追跡
セキュリティ考慮事項
- グループ分離: 履歴レコードはユーザーのグループに自動的に関連付けられます
- 入力検証: 保存前にすべてのフィールドが検証されます
- エラーログ記録: 失敗した操作は監視のためにログに記録されます
- ユーザー認証: グループメンバーシップを持つ認証されたユーザーが必要です