Tải xuống CSV lỗi
Mô tả Tổng quan
Tính năng Tải xuống CSV lỗi cho phép client tải xuống một tệp CSV chứa thông tin lỗi chi tiết cho một lịch sử tải lên cụ thể. Tính năng này tạo ra một tệp CSV có thể tải xuống với lỗi xác thực, bao gồm tiêu đề trường, giá trị có vấn đề, số dòng và thông báo lỗi. Tệp CSV được tạo từ dữ liệu lỗi được lưu trữ trong Google Cloud Storage và cung cấp báo cáo lỗi toàn diện để sửa dữ liệu.
Liên kết Swagger
Tài liệu Trường hợp
Trường hợp 1: Tải xuống tệp CSV lỗi
Mô tả
Client yêu cầu một tệp CSV có thể tải xuống chứa lỗi xác thực cho một lịch sử tải lên cụ thể.
Sơ đồ Tuần tự
sequenceDiagram
participant Client
participant API as UploadGcsController
participant Repository as ReviewUploadHistoryRepository
participant ExportService as ExportService
participant GCS as Google Cloud Storage
Note over Client,GCS: Luồng tải xuống CSV lỗi
rect rgb(200, 255, 200)
Note right of Client: Luồng trường hợp thành công
Client->>API: GET /api/v1/general/upload-file/gcs/histories/{id}/download-errors
rect rgb(200, 230, 255)
Note right of API: Xác thực đầu vào
API->>API: Xác thực tham số ID lịch sử
end
rect rgb(200, 255, 255)
Note right of API: Logic nghiệp vụ
API->>Repository: findById(historyId)
Repository->>Repository: Áp dụng bộ lọc nhóm
Repository-->>API: Trả về model ReviewUploadHistory
API->>API: Kiểm tra nếu error_reason tồn tại
end
rect rgb(255, 255, 200)
Note right of API: Tạo CSV
API->>ExportService: handle(reviewUploadHistory)
ExportService->>ExportService: Phân tích JSON error_reason
ExportService->>GCS: Lấy nội dung tệp lỗi
GCS-->>ExportService: Trả về nội dung CSV
ExportService->>ExportService: Thiết lập headers phản hồi
ExportService-->>API: Trả về phản hồi CSV
end
API-->>Client: 200 OK (tệp CSV để tải xuống)
end
rect rgb(255, 200, 200)
Note right of Client: Xử lý lỗi
rect rgb(255, 230, 230)
alt Lịch sử không tìm thấy
Repository-->>API: Kết quả null
API-->>Client: 404 Not Found
else Không có tệp lỗi
API->>API: Kiểm tra trường error_reason
API-->>Client: 400 Bad Request (lỗi trống)
else Lỗi GCS
GCS-->>ExportService: Phản hồi lỗi
ExportService-->>API: Kết quả lỗi
API-->>Client: 500 Internal Server Error
end
end
end
Các bước
Bước 1: Yêu cầu tải xuống CSV lỗi
- Mô tả: Client yêu cầu tệp CSV với lỗi xác thực
- Yêu cầu:
GET /api/v1/general/upload-file/gcs/histories/{id}/download-errors - Tham số:
id: Định danh duy nhất của bản ghi lịch sử tải lên (bắt buộc)
- Xác thực:
- ID lịch sử phải là số nguyên hợp lệ
- ID lịch sử phải lớn hơn 0
Bước 2: Truy xuất lịch sử và xác thực
- Mô tả: Hệ thống truy xuất lịch sử tải lên và xác thực dữ liệu lỗi
- Hành động:
- Truy vấn cơ sở dữ liệu cho bản ghi lịch sử theo ID với bộ lọc nhóm
- Xác minh bản ghi lịch sử tồn tại
- Kiểm tra nếu trường error_reason chứa dữ liệu lỗi
- Xác thực người dùng có quyền truy cập vào lịch sử được yêu cầu
Bước 3: Tạo và trả về CSV
- Mô tả: Tạo tệp CSV từ dữ liệu lỗi và trả về cho client
- Hành động:
- Phân tích JSON error_reason để trích xuất đường dẫn tệp lỗi
- Truy xuất nội dung CSV từ Google Cloud Storage
- Thiết lập headers phản hồi thích hợp cho tải xuống CSV
- Trả về tệp CSV như phản hồi có thể tải xuống
Bảng và trường liên quan đến cơ sở dữ liệu
erDiagram
review_upload_histories {
bigint id PK
bigint user_id FK "Tham chiếu đến bảng users"
bigint group_id FK "Tham chiếu đến bảng groups"
string file_name "Tên tệp đã tải lên"
string gcs_path "Đường dẫn Google Cloud Storage nơi tệp được lưu trữ"
tinyInteger status "Trạng thái tải lên: 0=Chưa xử lý, 1=đang xử lý, 2=thành công, 3=thất bại"
string error_reason "Thông báo lỗi nếu tải lên thất bại (có thể null)"
timestamp validated_at "Thời gian khi tệp được xác thực (có thể null)"
timestamp created_at
timestamp updated_at
}
users {
bigint id PK
string name "Họ tên đầy đủ của người dùng"
string email "Địa chỉ email của người dùng"
}
groups {
bigint id PK
string name "Tên nhóm"
}
review_upload_histories ||--o{ users : thuộc về
review_upload_histories ||--o{ groups : thuộc về
Xử lý lỗi
- Ghi log
- Lỗi tải xuống CSV được ghi vào log ứng dụng
- Chi tiết lỗi:
Mã trạng thái Thông báo lỗi Mô tả 404 Lịch sử không tìm thấy Khi bản ghi lịch sử với ID được chỉ định không tồn tại 400 Lỗi trống Khi lịch sử không có dữ liệu lỗi để tải xuống 500 Không thể tải xuống CSV Khi thao tác GCS thất bại
Tính năng chính
- Tạo tệp CSV: Tạo tệp CSV có thể tải xuống với dữ liệu lỗi
- Truy xuất dữ liệu lỗi: Truy xuất tệp lỗi từ Google Cloud Storage
- Tải xuống tệp: Headers HTTP thích hợp cho tải xuống tệp CSV
- Xác thực lỗi: Kiểm tra sự tồn tại của dữ liệu lỗi trước khi xử lý
- Truy cập dựa trên nhóm: Tự động lọc theo nhóm của người dùng để bảo mật
- Ghi log lỗi: Xử lý lỗi toàn diện với ghi log chi tiết
Cân nhắc bảo mật
- Cô lập nhóm: Người dùng chỉ có thể tải xuống lỗi từ lịch sử của nhóm của họ
- Xác thực đầu vào: ID lịch sử được xác thực trước khi xử lý
- Ghi log lỗi: Các thao tác thất bại được ghi log để giám sát
- Xác thực người dùng: Yêu cầu người dùng đã xác thực với thành viên nhóm
- Kiểm soát truy cập tệp: Tệp lỗi được lưu trữ ở vị trí GCS an toàn
- Làm sạch dữ liệu: Nội dung CSV được định dạng đúng cách và an toàn để tải xuống