Appearance
\newpage
Báo cáo Đề xuất — Chấm công đa đơn vị
Triển khai chấm công cho Phương Nam & Daisy trên hệ thống Diva
Ngày: 07/04/2026
Người trình bày: PO/BA Team — Diva Group
Đối tượng: Ban Giám đốc, Stakeholders
\newpage
1. Bối cảnh
Hệ thống chấm công Diva hiện tại
Hệ thống chấm công Diva đang vận hành ổn định, phục vụ các chi nhánh Diva với đầy đủ chức năng:
| Chức năng | Mô tả |
|---|---|
| Cấu hình ca làm việc | Tạo ca, nhóm ca, gán nhân viên vào nhóm ca |
| Lịch làm việc | Xếp lịch tuần cho từng NV, import Excel, tự động copy tuần trước |
| Chấm công trên app | NV bấm Vào ca / Ra về trên app, có kiểm tra GPS |
| Bảng công | HR xem bảng công tháng, chi tiết từng ngày, trạng thái trễ/sớm/nghỉ |
| Đơn từ & duyệt | 10 loại đơn (đổi ca, tăng ca, nghỉ phép, trễ/sớm, quên chấm...), duyệt 2 cấp |
| Export báo cáo | Bảng công tháng, chi tiết ngày, trễ/sớm, OT |
| Tính công cuối ngày | Cronjob tự động tính ngày công, đi trễ, về sớm, tăng ca |
Nhu cầu mới
Phương Nam và Daisy — hai đơn vị thuộc hệ sinh thái DVA Holdings — cần sử dụng hệ thống chấm công trên app Diva thay vì phụ thuộc máy chấm vân tay.
Yêu cầu cốt lõi: Mỗi đơn vị có quy định riêng (ca làm, phạt trễ/sớm, OT, tính công) nhưng cùng chạy trên 1 hệ thống Diva. Dữ liệu 3 bên được phân quyền theo đơn vị — HR Daisy chỉ thấy dữ liệu Daisy, HR Phương Nam chỉ thấy dữ liệu Phương Nam. System Admin có quyền xem tất cả.
\newpage
2. Tổng quan 3 đơn vị
| Diva | Phương Nam | Daisy | |
|---|---|---|---|
| Quy mô | Hệ thống hiện tại | 247 NV, 4 cơ sở | 150 NV, 9 cơ sở |
| Dự kiến tăng | — | +50–100 NV cuối 2026 | — |
| Chấm công hiện tại | App Diva | VP: App DVA, DV: Máy vân tay | VP: App Diva Partner, DV: Máy vân tay |
| Cách chấm | 2 mốc (vào-ra) | 2 mốc + 4 mốc (ca gãy) | 2 mốc + 4 mốc (BS, Phụ tá) |
| Tính công | Cố định 0/0.5/1.0 | Theo giờ thực tế | Cố định 0/0.5/1.0 |
| GPS | Có | Có | Có |
| Ca đặc biệt | — | 6 ca gãy (break 2–3h) | Ca xoay, BS break linh động 2h |
| Duyệt đơn | 2 cấp | 2 cấp | 2 cấp |
\newpage
3. Yêu cầu chi tiết — đã khảo sát và xác nhận
3.1 Phương Nam — 247 nhân viên
Người khảo sát: Chị Hồ Thị Xuân Hương — CV TCHC
Cơ cấu tổ chức
- 3 phòng khám: TT Y khoa Đà Lạt, PK Đức Trọng, PK Bảo Lộc + 1 Văn phòng
- Khối Văn phòng: Marketing-IT, TCHC, Kế toán, Pháp lý
- Khối Dịch vụ: Bác sĩ, Điều dưỡng, KTV, Thu ngân, Lễ tân, Dược sĩ, Bảo vệ, Tạp vụ
- CTV: 3 người (1.3%)
Ca làm việc — 16 ca
| Loại | Số ca | Ví dụ | Chấm công |
|---|---|---|---|
| Ca thường | 10 ca | Ca HC 08:00–17:00, Ca 1 06:00–14:00, Ca tối 15:00–23:00 | 2 mốc (vào-ra) |
| Ca gãy | 6 ca | Ca gãy 7:00 (07:00–18:00, nghỉ 11:00–14:00 = 3 tiếng) | 4 mốc (vào-ra nghỉ-vào lại-ra về) |
Đã xác nhận: PN chọn 4 mốc cho ca gãy — lý do: cần xác định thời gian đi trễ vào đầu ca sáng VÀ đầu ca chiều.
Quy định đặc thù Phương Nam
| Quy định | Chi tiết |
|---|---|
| Đi trễ / về sớm | 3 lần xin phép/tháng. Từ lần 4: 10.000đ/phút |
| Quên chấm công | Quên vào ca/ra ca: 30.000đ/lỗi (mọi lần). Quên giữa trưa: 3 lần miễn, từ lần 4: 30.000đ/lỗi |
| Tăng ca (OT) | Bác sĩ: 150.000đ/giờ. Còn lại: 50.000đ/giờ. Tính từ 30 phút trở lên |
| Tính công | Theo giờ thực tế: có đơn xin phép → full công; không đơn → tính theo giờ (VD: làm 7h/8h = 0.875 công) |
| Công chuẩn | Khối DV: tổng ngày − CN. Khối VP: tổng ngày − CN − nửa ngày T7 |
| Remote | 3–4 NV (1.5%) |
| Báo cáo phép năm | Bắt buộc có ngay khi go-live |
3.2 Daisy — 150 nhân viên
Người khảo sát: Chị Phan Hoa — CV TC-HC, DVA Holdings
Cơ cấu tổ chức
- 6 chi nhánh (Đà Lạt, Bảo Lộc ×2, Nha Trang, Cần Thơ, Biên Hòa) + 3 văn phòng
- Khối Văn phòng: Telesale, CSKH, Marketing–Trực Page, TCHC, Kế toán
- Khối Dịch vụ: Bác sĩ–Điều trị, Phụ tá, Sales–Thu ngân
- NV bán thời gian: 3.33%
Ca làm việc
| Bộ phận | Ca | Chấm công |
|---|---|---|
| Marketing | Ca 1 (7:30–15:00), Ca 2 (10:30–18:00), Ca 3 (15:00–22:30, từ xa) | 2 mốc |
| Telesales/CSKH | 7:45–17:30 | 2 mốc |
| Bác sĩ | Ca 1 (8–17, xuyên trưa), Ca 2 (8–19, nghỉ linh động 2h) | Ca 1: 2 mốc. Ca 2: 4 mốc |
| Phụ tá | Ca 1 (8–17, xuyên trưa), Ca 2 (8–19, nghỉ linh động 2h) | Ca 1: 2 mốc. Ca 2: 4 mốc |
| Tạp vụ | 6 ca cố định (06:30–10:30 đến 08:00–17:00), 7 NV | 2 mốc |
| Kế toán, Labo 5D, Bảo vệ | Giờ hành chính | 2 mốc |
Đã xác nhận: Ca xoay sáng/chiều theo tuần. HR import lịch Excel hàng tuần.
Quy định đặc thù Daisy
| Quy định | Chi tiết |
|---|---|
| Đi trễ / về sớm | 10.000đ/phút tùy vị trí. 3 lần/tháng, mỗi lần tối đa 60 phút |
| Quên chấm công | 3 lần miễn/tháng (gộp cả 3 loại mốc). Từ lần 4: đầu/cuối ca trừ 0.5 công, giữa trưa 50.000đ/lần |
| Tăng ca (OT) | Bác sĩ: 150.000đ/giờ. Sale/Phụ tá/Điều trị/Bảo vệ/Tạp vụ: 35.000đ/giờ |
| BS/Phụ tá break | Giờ nghỉ mặc định 12:00–14:00, linh hoạt ±60 phút (vì ca điều trị trước trưa kéo dài) |
| Ca 3 Marketing | Chấm từ xa (không cần GPS) |
| Góp ý | Hạn chế cập nhật phần mềm quá nhiều lần/tháng → gộp release |
\newpage
4. Các nội dung đã chốt với 2 bên
Sau khi gửi câu hỏi xác nhận và nhận phản hồi, các nội dung sau đã được chốt:
4.1 Phương Nam — đã chốt
| # | Nội dung | Kết quả |
|---|---|---|
| 1 | Ca gãy chấm 2 hay 4 mốc? | 4 mốc — cần track trễ đầu ca sáng + chiều |
| 2 | Tính công theo giờ áp dụng cho ai? | Tất cả NV (full-time + part-time). Có đơn xin phép → full công. Không đơn → tính theo giờ |
| 3 | Báo cáo phép năm | Bắt buộc có ngay khi go-live |
| 4 | Tính phạt + công chuẩn + OT rate | Day-1 tự động qua Settings Module. Chỉ tính lương thủ công 2–3 tháng đầu. Cần bảng công 4 lần vào/ra cho Khối DV |
4.2 Daisy — đã chốt
| # | Nội dung | Kết quả |
|---|---|---|
| 1 | BS/Phụ tá break linh động | Break mặc định 12:00–14:00, linh hoạt ±60 phút. Ca "xuyên trưa" = 2 mốc |
| 2 | Tạp vụ giờ linh động | 6 ca cố định mới (đã đề xuất cụ thể giờ nghỉ trưa), 7 NV |
| 3 | "Hạn chế update" | = Hạn chế deploy phần mềm quá nhiều → gộp release |
| 4 | Tính phạt + công chuẩn + OT rate | Day-1 tự động qua Settings Module. Chỉ tính lương thủ công 2–3 tháng đầu. Đề xuất chấm 4 lần vào/ra |
4.3 Chung — đã chốt
| # | Nội dung |
|---|---|
| 1 | Cả 2 đơn vị dùng duyệt đơn 2 cấp (hệ thống hiện có hỗ trợ) |
| 2 | GPS bắt buộc cho cả 2 đơn vị |
| 3 | Remote hỗ trợ nhóm nhỏ: Daisy Ca 3 Marketing + PN 3–4 NV |
| 4 | Penalty engine + công chuẩn + OT rate → Day-1 (Settings Module v3). Chỉ tính lương tự động → phase sau |
\newpage
5. Phương án triển khai
5.1 Giải pháp tổng thể
Thêm khái niệm "Đơn vị chấm công" (timekeeping_unit) — một lớp phân tách chỉ dùng trong module chấm công:
┌─────────────────────────────────────────────────────────────────────┐
│ HỆ THỐNG DIVA │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ DIVA │ │ PHƯƠNG NAM │ │ DAISY │ │
│ │ (giữ nguyên) │ │ 247 NV │ │ 150 NV │ │
│ │ │ │ 4 cơ sở │ │ 9 cơ sở │ │
│ │ Không thay │ │ 4 mốc ca gãy│ │ 4 mốc BS/PT │ │
│ │ đổi gì │ │ Công theo giờ│ │ Break ±60p │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ✅ Phân quyền theo đơn vị (Hasura row-level permission) │
│ ✅ Quy định riêng cho từng đơn vị (Settings Module) │
│ ✅ Diva không bị ảnh hưởng │
└─────────────────────────────────────────────────────────────────────┘Nguyên tắc số 1: Diva đang vận hành ổn định — KHÔNG SỬA code cũ, chỉ THÊM nhánh mới.
5.2 Các tính năng sẽ làm
Nhóm 1: Quản trị đơn vị (Admin)
| Tính năng | Mô tả | Ai dùng |
|---|---|---|
| Cấu hình đơn vị chấm công | Tạo đơn vị PN, Daisy. Map chi nhánh, phòng ban, nhân viên | System Admin |
| Settings Module — Quy định per đơn vị | Cấu hình: cách tính công, max đơn trễ/sớm, OT threshold... trên UI. Riêng break cố định/linh hoạt cấu hình ở ca làm việc | System Admin |
| Ca làm việc per đơn vị | PN 16 ca (gồm 6 ca gãy 4 mốc), Daisy 17 ca seed hiện tại (gồm 6 ca Tạp vụ mới) | System Admin |
| Người duyệt per đơn vị | Cấu hình approver riêng cho từng đơn vị, không lẫn | System Admin |
Nhóm 2: Chấm công (Mobile)
| Tính năng | Mô tả | Ai dùng |
|---|---|---|
| Chấm công 2 mốc | Vào ca → Ra về (ca thường) | NV |
| Chấm công 4 mốc | Vào ca → Ra nghỉ → Vào lại → Ra về (ca gãy PN, ca BS/Phụ tá Daisy) | NV |
| GPS kiểm tra | Chỉ cho chấm khi ở đúng chi nhánh thuộc đơn vị mình | NV |
| Remote nhóm nhỏ | Cho phép chấm ngoài GPS cho Daisy Ca 3 Marketing + PN 3–4 NV | NV |
| Xem lịch sử cá nhân | NV xem lịch sử chấm công, trễ/sớm, quên chấm, running total tháng | NV |
| Tạo đơn + xem quota | Hiện "Đã sử dụng 2/3 lần trễ/sớm tháng này" khi tạo đơn | NV |
Nhóm 3: Quản lý & Báo cáo (Admin Web)
| Tính năng | Mô tả | Ai dùng |
|---|---|---|
| Bảng công per đơn vị | HR Daisy chỉ thấy NV Daisy, HR PN chỉ thấy NV PN. Filter chi nhánh, phòng ban | HR, Manager |
| Lịch làm việc per đơn vị | Xếp lịch, import Excel, tự động copy tuần (PN). Import thủ công (Daisy ca xoay) | HR |
| Tính công theo giờ (PN) | Cronjob tính workday = actual_hours / standard_hours. Có đơn → full công | Tự động |
| Chi tiết ngày 4 mốc | Popup hiện 4 dòng cho ca 4 mốc, 2 dòng cho ca 2 mốc | HR, Manager |
| Export bảng công tháng | Tổng hợp: ngày công, trễ, sớm, OT, quên chấm, tiền phạt, tiền OT, công chuẩn | HR |
| Export chi tiết ngày | 2 mốc hoặc 4 mốc tùy ca, có cột tiền phạt + tiền OT | HR |
| Export trễ/sớm | Phút trễ, có đơn xin phép, lần thứ mấy trong tháng, tiền phạt | HR |
| Export OT | Giờ OT, tiền OT (PN bỏ qua OT < 30 phút) | HR |
| Báo cáo phép năm (PN) | Reuse màn báo cáo phép năm Diva hiện có — chỉ thêm filter đơn vị. Effort ~1 ngày | HR |
Nhóm 4: Bảo vệ Diva
| Tính năng | Mô tả |
|---|---|
| Template propagation an toàn | Sửa ca Diva không ảnh hưởng PN/Daisy và ngược lại |
| Cronjob tách nhánh | NV Diva chạy code cũ nguyên vẹn, NV PN/Daisy chạy code mới |
| Permission tách biệt | Diva HR không thấy filter đơn vị, mọi màn giữ nguyên |
| Non-regression suite | Test tự động đảm bảo Diva không bị ảnh hưởng sau mỗi deploy |
\newpage
6. Kế hoạch triển khai
6.1 Tổng quan 3 phase
Phase 1A (1 tuần) Phase 1B (3 tuần dev + 2 tuần pilot) Phase 1C
FOUNDATION PN + DAISY HARDENING
3 track song song
Schema + Migration ┌── BE: runtime 4 mốc, cronjob, GPS, Bugfix
Fix template propagation │ penalty engine, công chuẩn, OT rate Tối ưu performance
Settings Module UI ├── FE Admin: bảng công, export (có tiền Tính lương tự động
Non-regression Diva │ phạt + tiền OT), filter, Settings Module Mở rộng rollout
└── FE Mobile: 4 CTA, lịch sử, quota
│ │ │
▼ ▼ ▼
Gate: Diva OK Gate: Pilot pass Gate: Stable6.2 Chi tiết từng phase
Phase 1A — Foundation (1 tuần)
Mục tiêu: Chuẩn bị nền tảng, fix điểm nguy hiểm nhất, đảm bảo Diva an toàn.
| # | Công việc | Owner | Ghi chú |
|---|---|---|---|
| 1 | Tạo bảng timekeeping_unit + schema mới | BE | Không ảnh hưởng Diva |
| 2 | Fix template propagation (dùng key thay vì tên ca) | BE | Quan trọng nhất — chặn lỗi sửa ca chéo đơn vị |
| 3 | Thêm cột nullable vào bảng chấm công hiện có | BE | Diva data = NULL, không ảnh hưởng |
| 4 | Settings Module UI — Tab Quy định | FE | Chạy song song với BE (không phụ thuộc) |
| 5 | Non-regression suite cho Diva | QA | Test full cycle: tạo lịch → chấm → tính công → export |
Gate chuyển Phase 1B: Non-regression Diva pass 100%.
Phase 1B — PN + Daisy triển khai (3 tuần dev + 2 tuần pilot)
Mục tiêu: PN và Daisy chấm công được trên app, HR có bảng công và export.
3 track chạy song song, QA test liên tục:
Track BE (1 BE senior):
| # | Công việc |
|---|---|
| 1 | Seed ca PN (16 ca) + Daisy (17 ca) |
| 2 | Runtime chấm công 4 mốc (state machine) |
| 3 | Cronjob tách nhánh: Diva legacy / PN tính công theo giờ / Daisy fixed |
| 4 | GPS scoped theo đơn vị + remote nhóm nhỏ |
| 5 | Request count scoped per unit + max duration validation |
| 6 | Penalty engine — timekeeping_penalty_rule per unit |
| 7 | Công chuẩn — timekeeping_standard_workday_rule per branch_label |
| 8 | OT rate — ot_rate_default + ot_rate_doctor per unit |
| 9 | Export phép năm cho PN |
Track FE Admin (1 FE):
| # | Công việc |
|---|---|
| 1 | Filter đơn vị + chi nhánh + phòng ban (cascade reset) |
| 2 | Bảng công: multi-record day, popup 2 mốc / 4 mốc |
| 3 | Lịch làm việc: filter đơn vị |
| 4 | Export: bảng công tháng, chi tiết ngày, trễ/sớm, OT, quên chấm, phép năm |
| 5 | Phân quyền: HR auto-filter đơn vị mình, Diva giữ nguyên |
| 6 | Approver settings: filter đơn vị |
Track FE Mobile (1 FE Mobile):
| # | Công việc |
|---|---|
| 1 | 2 CTA (ca thường) + 4 CTA (ca 4 mốc) theo shift template |
| 2 | GPS check + reject message |
| 3 | Tạo đơn: hiện quota "X/3 lần", max duration validation |
| 4 | Lịch sử chấm công cá nhân + running total tháng |
Pilot (2 tuần):
- Tuần 1: Internal team test
- Tuần 2: HR PN + HR Daisy test thật
Gate chuyển Phase 1C: Pilot pass + Diva non-regression pass.
Phase 1C — Hardening (sau go-live)
| # | Công việc | Ghi chú |
|---|---|---|
| 1 | Bugfix từ pilot | — |
| 2 | Tối ưu performance | Cronjob +400 NV, export lớn |
| 3 | Tính lương tạm tự động | Dựa trên công chuẩn + penalty (đã có từ 1B) |
| 4 | Mở rộng rollout | Thêm đơn vị mới nếu có |
Lưu ý: Penalty engine, công chuẩn, OT rate đã nằm trong Phase 1B (Settings Module v3). Phase 1C chỉ còn tính lương + hardening.
6.3 Timeline dự kiến
Tuần 1 — 14/04 TL review spec + trả lời câu hỏi kỹ thuật + chốt spec
──────────────────────────────────────────────
Tuần 2 — 21/04 Phase 1A: Foundation (BE schema + FE Settings song song)
Gate: Diva non-regression pass ✓
──────────────────────────────────────────────
Tuần 3 — 28/04 ┐
Tuần 4 — 05/05 ├─ Phase 1B: Dev (3 track song song: BE + FE Admin + FE Mobile)
Tuần 5 — 12/05 ┘
──────────────────────────────────────────────
Tuần 6 — 19/05 Pilot tuần 1: Internal test
Tuần 7 — 26/05 Pilot tuần 2: HR PN + HR Daisy test thật + bugfix
──────────────────────────────────────────────
GO-LIVE: đầu tháng 6/2026
Tháng 6–7/2026 Phase 1C: Hardening (bugfix, tính lương tự động, mở rộng)Tổng: 7 tuần từ chốt spec đến go-live (giảm 4 tuần so với phương án ban đầu).
Điều kiện: Cần ít nhất 1 BE senior + 1 FE admin + 1 FE mobile chạy song song từ tuần 3.
\newpage
7. Ảnh hưởng đến Diva hiện tại
Cam kết: Diva KHÔNG bị ảnh hưởng
| Thành phần Diva | Ảnh hưởng | Giải thích |
|---|---|---|
| Chấm công trên app | Không | NV Diva chạy code cũ nguyên vẹn |
| Bảng công | Không | HR Diva không thấy filter đơn vị, data giữ nguyên |
| Lịch làm việc | Không | Không thay đổi |
| Cronjob tính công | Không | NV Diva → nhánh code cũ. NV PN/Daisy → nhánh code mới |
| Đơn từ & duyệt | Không | Approver Diva giữ nguyên, không lẫn với PN/Daisy |
| Export báo cáo | Không | Format giữ nguyên, data giữ nguyên |
| Dashboard, report doanh thu | Không | Ngoài scope, không đụng |
| Salary, payroll | Không | Ngoài scope, không đụng |
| CRM, Ecommerce | Không | Ngoài scope, không đụng |
Cơ chế bảo vệ
| # | Cơ chế | Mô tả |
|---|---|---|
| 1 | Tách nhánh code | Mọi function: if NV Diva → code cũ nguyên vẹn; if NV PN/Daisy → code mới |
| 2 | Non-regression suite | Test tự động chạy sau mỗi deploy: tạo lịch → chấm công → tính công → export → so sánh kết quả |
| 3 | Permission tách biệt | Không sửa permission Diva. Thêm permission riêng cho role mới |
| 4 | Template an toàn | Sửa ca Diva không ảnh hưởng PN/Daisy và ngược lại (dùng key thay vì tên ca) |
| 5 | Tab Triển khai + rollout flag | Bật/tắt tính năng mới theo từng đơn vị. Chỉ được bật khi checklist sẵn sàng triển khai đã đạt yêu cầu. Nếu có lỗi → tắt flag, Diva không bị kéo theo |
| 6 | Gate review | Phase 1A phải pass non-regression 100% mới sang Phase 1B |
\newpage
8. Settings Module — Quy định riêng cho từng đơn vị
Thay vì viết cứng quy định vào code (mỗi lần đổi phải deploy phần mềm), chúng tôi xây dựng màn hình cấu hình để System Admin tự điều chỉnh quy định cho từng đơn vị.
Ví dụ cấu hình 3 đơn vị
| Quy định | Diva | Phương Nam | Daisy |
|---|---|---|---|
| Cách tính công | Cố định (0/0.5/1.0) | Theo giờ thực tế | Cố định |
| Công chuẩn per loại CN | Ngày−CN / 26 cố định | DV: Ngày−CN. VP: Ngày−CN−0.5T7 | Ngày−CN |
| Max đơn trễ/sớm/tháng | 3 | 3 | 3 |
| Max phút per đơn trễ/sớm | Không giới hạn | Không giới hạn | 60 phút |
| Max đơn quên chấm/tháng | 3 | 3 | 3 |
| Tự động tạo lịch tuần | Bật | Bật | Tắt (ca xoay) |
| OT tối thiểu | 0 | 30 phút | 0 |
| Break tolerance | 0 | 0 | ±60 phút |
| Báo cáo phép năm | Có | Bắt buộc | Chưa cần |
Lợi ích:
- Đổi quy định → Admin tự chỉnh trên màn hình, không cần deploy phần mềm
- Thêm đơn vị mới → Admin tạo + cấu hình, không cần lập trình
- Đáp ứng yêu cầu Daisy "hạn chế cập nhật phần mềm quá nhiều"
- Minh bạch: mọi người thấy config hiện tại
\newpage
9. Day-1 tự động hoá — Settings Module v3
Nhờ Settings Module toàn diện, ngay từ Day-1 hệ thống đã tự động tính:
Hệ thống tự động Day-1
| Tính năng | Mô tả | Config trên UI |
|---|---|---|
| Tiền phạt trễ/sớm | Tự tính theo timekeeping_penalty_rule per đơn vị | Admin chỉnh rate, exempt_count, exempt_pool |
| Tiền phạt quên chấm | PN: 30k/lỗi (không miễn). Daisy: 3 lần miễn (pool chung), lần 4+ trừ 0.5 công hoặc 50k | Admin chỉnh per violation type |
| Tiền OT | PN: 50k/h (BS: 150k/h). Daisy: 35k/h (BS: 150k/h) | Admin chỉnh ot_rate_default, ot_rate_doctor |
| Công chuẩn | PN DV: Ngày−CN. PN VP: Ngày−CN−0.5T7. Daisy: Ngày−CN | Admin chỉnh formula per loại chi nhánh |
| Tính công theo giờ | PN: actual_hours / standard_hours. Daisy: cố định 0/0.5/1.0 | Admin chỉnh mode + giờ chuẩn |
Hệ thống cung cấp đầy đủ
- Bảng công tháng tổng hợp (có cột tiền phạt + tiền OT + công chuẩn)
- Bảng công 4 lần vào/ra cho Khối Dịch vụ (cả PN và Daisy)
- Báo cáo trễ/sớm chi tiết (ngày, phút, có đơn xin phép, tiền phạt)
- Báo cáo OT (có tiền OT. PN: bỏ qua OT < 30 phút)
- Báo cáo phép năm (PN — bắt buộc) — reuse màn báo cáo Diva hiện có, chỉ thêm filter đơn vị
- NV tự xem lịch sử trên app
Chỉ còn tính lương thủ công
HR dùng file export (đã có tiền phạt + tiền OT + công chuẩn) → chỉ cần tính lương trên Excel.
Phase 1C sẽ tự động hoá tính lương tạm — dự kiến 1–2 tháng sau go-live.
Lợi ích so với phương án cũ: HR không cần tính tiền phạt, tiền OT, công chuẩn trên Excel. Hệ thống tự tính từ config per đơn vị.
\newpage
10. Tóm tắt
| Mục | Nội dung |
|---|---|
| Mục tiêu | Phương Nam và Daisy chấm công trên app Diva, có bảng công và báo cáo vận hành |
| Phương án | Thêm "Đơn vị chấm công" + Settings Module. Diva không bị ảnh hưởng |
| Tính năng chính | Chấm 4 mốc, tính công theo giờ (PN), GPS, export, phép năm, remote nhóm nhỏ, penalty + OT rate + công chuẩn tự động Day-1 |
| Timeline | Phase 1A: 1 tuần (Foundation) → Phase 1B: 3 tuần dev + 2 tuần pilot → Phase 1C: Hardening sau go-live |
| Go-live dự kiến | Đầu tháng 6/2026 (7 tuần từ chốt spec) |
| Resource cần | 1 BE senior + 1 FE admin + 1 FE mobile + QA (3 track song song) |
| Rủi ro Diva | Không ảnh hưởng — code tách nhánh, non-regression test, permission tách biệt |
| Day-1 | Penalty + OT rate + công chuẩn tự động từ Settings Module. HR KHÔNG cần dùng Excel |
Tài liệu này dùng để trình bày cho stakeholders. Chi tiết kỹ thuật xem tại: docs/features/cham-cong-da-don-vi-shared-tenant/