Lấy lỗi nhập
Mô tả Tổng quan
Tính năng Lấy lỗi nhập cho phép client truy xuất lỗi xác thực cho một lịch sử tải lên cụ thể. Tính năng này cung cấp thông tin lỗi chi tiết bao gồm tiêu đề trường, giá trị có vấn đề, số dòng và thông báo lỗi. Các lỗi được lưu trữ trong một bảng riêng biệt và liên kết với lịch sử tải lên, cho phép theo dõi lỗi toàn diện và gỡ lỗi cho các lần nhập CSV thất bại.
Liên kết Swagger
API: API Lấy lỗi nhập
Tài liệu Trường hợp
Trường hợp 1: Lấy lỗi nhập cho lịch sử
Mô tả
Client yêu cầu lỗi xác thực chi tiết cho một bản ghi lịch sử tải lên cụ thể.
Sơ đồ Tuần tự
sequenceDiagram
participant Client
participant API as UploadGcsController
participant Repository as ReviewUploadErrorRepository
participant Resource as ImportReviewCSVErrorResource
participant Database as Database
Note over Client,Database: Luồng lấy lỗi nhập
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}/import-errors
rect rgb(200, 230, 255)
Note right of API: Xác thực đầu vào
API->>API: Xác thực ID lịch sử và tham số phân trang
end
rect rgb(200, 255, 255)
Note right of API: Logic nghiệp vụ
API->>Repository: serverPaginationFilteringFor(historyId, params)
Repository->>Repository: Áp dụng bộ lọc ID lịch sử và phân trang
Repository->>Database: SELECT review_upload_errors với phân trang
Database-->>Repository: Trả về kết quả lỗi có phân trang
Repository-->>API: Trả về LengthAwarePaginator
end
rect rgb(255, 255, 200)
Note right of API: Chuyển đổi tài nguyên
API->>Resource: collection(errors)
Resource->>Resource: Chuyển đổi từng bản ghi lỗi
Resource-->>API: Trả về collection được định dạng
end
API-->>Client: 200 OK (dữ liệu lỗi được định dạng)
end
rect rgb(255, 200, 200)
Note right of Client: Xử lý lỗi
rect rgb(255, 230, 230)
alt Lỗi xác thực
API-->>Client: 422 Lỗi xác thực
else Lỗi không tìm thấy
Database-->>Repository: Không có lỗi phù hợp
Repository-->>API: Kết quả null
API-->>Client: 404 Not Found
else Lỗi cơ sở dữ liệu
Database-->>Repository: Lỗi cơ sở dữ liệu
Repository-->>API: Kết quả lỗi
API-->>Client: 400 Bad Request
end
end
end
Các bước
Bước 1: Yêu cầu lỗi nhập
- Mô tả: Client yêu cầu lỗi xác thực cho lịch sử tải lên cụ thể
- Yêu cầu:
GET /api/v1/general/upload-file/gcs/histories/{id}/import-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)per_page: Số bản ghi trên mỗi trang (tùy chọn, mặc định: 10)page: Số trang cho phân trang (tùy chọn, mặc định: 1)
- Xác thực:
- ID lịch sử phải là số nguyên hợp lệ
- Per page phải là số nguyên dương
- Page phải là số nguyên dương
Bước 2: Truy xuất dữ liệu lỗi
- Mô tả: Hệ thống truy xuất lỗi xác thực cho lịch sử được chỉ định
- Hành động:
- Truy vấn bảng review_upload_errors được lọc theo ID lịch sử
- Áp dụng phân trang cho kết quả lỗi
- Bao gồm tất cả trường lỗi (header, value, error_line, error_messages)
- Trả về collection lỗi có phân trang
Bước 3: Chuyển đổi và trả về kết quả
- Mô tả: Chuyển đổi dữ liệu lỗi và trả về cho client
- Phản hồi:
- Thành công:
200 OKvới collection lỗi được định dạng bao gồm metadata - Lỗi: Mã lỗi thích hợp với thông báo
- Thành cô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
}
review_upload_errors {
bigint id PK
bigint review_upload_history_id FK "Tham chiếu đến bảng review_upload_histories"
string header "Tiêu đề trường gây ra lỗi (có thể null)"
string value "Giá trị dữ liệu có vấn đề (có thể null)"
integer error_line "Số dòng nơi lỗi xảy ra (có thể null)"
json error_messages "Mảng thông báo lỗi cho trường"
timestamp created_at
timestamp updated_at
}
review_upload_histories ||--o{ review_upload_errors : có nhiều
Xử lý lỗi
- Ghi log
- Lỗi truy xuất lỗi nhập đượ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ỗi nhập không tìm thấy Khi không có lỗi tồn tại cho lịch sử được chỉ định 400 Không thể lấy lỗi nhập Khi thao tác cơ sở dữ liệu thất bại 422 Xác thực thất bại Khi tham số không hợp lệ
Tính năng chính
- Thông tin lỗi chi tiết: Thông tin lỗi hoàn chỉnh bao gồm tiêu đề trường, giá trị và số dòng
- Hỗ trợ phân trang: Xử lý tập dữ liệu lỗi lớn với phân trang có thể cấu hình
- Chuyển đổi tài nguyên API: Định dạng dữ liệu lỗi nhất quán sử dụng Laravel resources
- Liên kết lịch sử: Lỗi được liên kết với lịch sử tải lên cụ thể
- Mảng thông báo lỗi: Hỗ trợ nhiều thông báo lỗi cho mỗi trường
- Theo dõi số dòng: Theo dõi số dòng cụ thể nơi lỗi xảy ra
Cân nhắc bảo mật
- Liên kết lịch sử: Lỗi được lọc theo ID lịch sử tải lên
- Xác thực đầu vào: Tất cả tham 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
- Làm sạch dữ liệu: API resources đảm bảo đầu ra dữ liệu lỗi an toàn