HRM Chấm công + Tính lương
HRM with Attendance & Payroll
HRM cho nhà máy 480 công nhân — chấm công sinh trắc, tính lương theo công đoạn, kết nối ZKTeco.
Bài toán
Nhà máy giày 480 CN, lương theo piece-rate (đơn giá công đoạn) — phức tạp: 1 sản phẩm qua 24 công đoạn, mỗi công đoạn đơn giá riêng. Hệ thống cũ tính theo giờ, không match. Kế toán làm thủ công 5 ngày/tháng.
Kiến trúc
Django + Celery (nightly payroll job) + Postgres → engine quy đổi: stage_count × stage_rate → ZKTeco F18 (libzkteco fork) đọc fingerprint qua TCP → Pandas xuất Excel khớp định dạng cũ. Reporting Django admin custom.
Stack & lý do
- Django: ORM ổn cho domain HR phức tạp, admin built-in tiết kiệm code.
- Celery nightly: payroll calc 480 CN × 24 stage = 11k records, chạy 2 phút.
- libzkteco fork: gốc thiếu support F18, fork thêm + upstream PR.
Kết quả
| Metric | Trước | Sau |
|---|---|---|
| Thời gian tính lương | 5 ngày | 2 giờ |
| Khiếu nại sai lương / tháng | 18 | 1-2 |
| Format Excel xuất ra | Khác — kế toán nhập lại | Khớp 100% |
| Devices ZKTeco kết nối | 0 | 7 |