Bỏ qua để đến Nội dung

Máy chấm công: lô dữ liệu, gửi lại và phản hồi

Giới hạn 1.000 lượt, chống trùng và xử lý PARTIAL

Gửi tối đa 1.000 lượt trong một lô. deviceCode phải là máy còn hoạt động thuộc công ty của API key. Mỗi lượt cần externalId duy nhất theo máy, employeeCode và punchedAt. Dùng ISO 8601 có offset để tránh lệch múi giờ.

{"syncRunId":"42","received":2,"accepted":1,"duplicated":0,
 "rejected":1,"aggregated":1,"unmatched":0,"status":"PARTIAL",
 "replayed":false,"rejections":[{"index":1,"externalId":"MAY-02","reason":"thiếu employeeCode"}]}
  1. Chỉ tăng con trỏ đọc của agent khi đã lưu phản hồi. Lưu watermark của máy cùng kết quả lô.
  2. Nếu mạng đứt trước khi nhận phản hồi, gửi lại cùng Idempotency-Key; kết quả trả lại có replayed=true. Không tái dùng cùng key cho lô khác.
  3. Nếu status=PARTIAL hoặc FAILED, đọc rejections[].index, sửa các lượt lỗi rồi gửi lại với mã lô mới. Lượt đã nhận được nhận diện trùng theo externalId.
  4. Nếu unmatched>0, HR ghép mã máy với nhân viên. Nếu aggregated ít hơn số đã nhận, kiểm tra lượt đang chờ hoặc xung đột trên giao diện.

Lỗi 401: khoá sai hoặc bị thu hồi. Lỗi 404: mã máy chưa khai. Lỗi 400: body, kích thước lô hoặc máy ngưng hoạt động. Không bỏ qua phản hồi từng lượt chỉ vì HTTP 200.