Bỏ qua

Business Rule — Quản lý Chấm công & Giải trình công (danh sách test)

Phiên bản: 0.2 — Nháp  |  Người viết: trangth  |  Mục đích: liệt kê Business Rule để dựng test case cho 2 chức năng Chấm côngGiải trình công  |  Nguồn: SRS Chấm công 0.7 (đã chốt 13/13 vấn đề mở)

Tài liệu liệt kê các Business Rule (BR) dạng kiểm chứng được để đội test dựng ca kiểm thử. Mỗi BR kèm gợi ý ca biên / ca âm. Phần cuối là các điểm cần chốt trước khi test.

Đồng bộ với SRS đã chốt

Toàn bộ BR bám mô hình đã chốt trong SRS — Module Chấm công: 2 khối cố định (Công trường / Văn phòng), geofence gắn 1 đơn vị, mỗi nhân viên thuộc 1 đơn vị, ngoài vùng geofence chặn cứng (đã bỏ "Xin chấm công từ xa").

Bối cảnh nghiệp vụ:

  • Chấm công — chia 2 khối cố định (không tự set khung giờ theo từng phòng ban):
    • Khối Công trường: khung 06:00–18:00 linh hoạt, chỉ cần chấm trong khung; không có khái niệm "Đi muộn"/phạt tiền. 4 trạng thái ngày (Đủ công · Tăng ca · Quên chấm công · Vắng). Giờ nghỉ trưa tự thiết lập ở Hành chính – Nhân sự.
    • Khối Văn phòng: mốc chuẩn 08:00 vào / 17:30 ra, ân hạn 08:00–08:10; từ 08:10 tính Đi muộn + bắt đầu phạt. 5 trạng thái ngày (Đủ công · Đi muộn/Về sớm · Quên chấm công · Tăng ca · Vắng/Ngày nghỉ). Nghỉ trưa 1,5 giờ cố định.
    • Mỗi nhân viên thuộc 1 đơn vị (3 công trường: Linh Đàm/Đông Anh/Yên Bái · 3 phòng ban: IT/Kế toán–HCNS/Kỹ thuật). Chấm công bằng GPS geofence của chính đơn vị đó + nhận diện khuôn mặt (liveness). Mỗi đơn vị có 1 vị trí chấm công, bán kính tự set (không có giá trị mặc định). Ngoài geofence → chặn cứng.
  • Giải trình công — 5 loại: Nghỉ phép năm · Nghỉ không lương · Đi muộn/Về sớm · Tăng ca · Quên chấm công. Ràng buộc thời điểm đăng ký: không đăng ký cho ngày quá khứ; hôm nay được (trừ Nghỉ phép năm); tương lai được (trừ Quên chấm công).

Nhóm A — Chấm công: 2 khối cố định & trạng thái ngày

Business Rule Ca cần test (đặc biệt là biên)
BR-CC-01 Trạng thái & mốc giờ tính theo khối của nhân viên (không tự set theo từng phòng ban): Văn phòng dùng mốc 08:00/17:30; Công trường dùng khung 06:00–18:00 linh hoạt. NV Văn phòng vs NV Công trường cùng chấm 08:15 → khác trạng thái
BR-CC-02 Văn phòng — ân hạn 08:00–08:10: vào trước 08:10 (đến 08:09) → không đi muộn, không phạt; từ 08:10"Đi muộn" + bắt đầu phạt. Vào 08:09, đúng 08:10, 08:11
BR-CC-03 Công trường — không có "Đi muộn"/phạt: chấm bất kỳ lúc nào trong 06:00–18:00 đều hợp lệ; ngoài khung → xử lý theo quy tắc khung giờ. Chấm 06:00, 17:59, trước 06:00, sau 18:00
BR-CC-04 Công thức đủ công: Văn phòng = (giờ ra − giờ vào) − 1,5 giờ nghỉ trưa cố định ≥ 8 giờ → 1 công. Công trường = (giờ ra − giờ vào) giờ thô, KHÔNG trừ nghỉ trưa > 9,5 giờ → 1 công (giờ nghỉ trưa chỉ dùng để cấu hình/hiển thị ở HCNS). VP: đủ 8h vs thiếu. CT: giờ thô 9h29 vs 9h31 (biên 9,5h)
BR-CC-05 Bộ trạng thái ngày khác nhau theo khối — Văn phòng 5 trạng thái, Công trường 4 trạng thái; ô đếm & nhãn thống kê phải đúng theo khối. Đếm trạng thái cho 1 NV mỗi khối, đối chiếu số ô

Nhóm B — Chấm công: vị trí geofence theo đơn vị

Business Rule Ca cần test
BR-CC-06 Mỗi đơn vị1 vị trí chấm công = geofence (tâm + bán kính tự set, không default). NV chỉ chấm hợp lệ khi đứng trong bán kính vị trí của đơn vị mình. Đứng trong bán kính, đứng ngoài bán kính
BR-CC-07 Đứng ngoài bán kính → chặn cứng (đã bỏ "Xin chấm công từ xa"), chỉ cho "Thử lại" Cách tâm > bán kính
BR-CC-08 NV đứng trong geofence của đơn vị khác (không phải đơn vị mình) → cho hay chặn? (NV thuộc 1 đơn vị) NV đơn vị A đứng ở vị trí đơn vị B
BR-CC-09 Biên geofence: đứng đúng trên đường bán kính → tính trong hay ngoài Khoảng cách = đúng bán kính
BR-CC-10 Đơn vị chưa cấu hình vị trí chấm công (chưa có geofence) → NV đơn vị đó chấm thế nào (chốt: bắt buộc HR set, không có default) Chấm khi đơn vị chưa set vị trí
BR-CC-11 Vị trí bị xóa / ngừng áp dụng sau khi đã cấu hình → NV đơn vị đó còn chấm được không Chấm ở đơn vị vừa bị gỡ vị trí

Nhóm C — Chấm công: chu kỳ vào/ra & xác thực

Business Rule Ca cần test
BR-CC-12 Mỗi NV mỗi ngày chỉ 1 vào + 1 ra; đã ra ca → khóa, không chấm lại (ẩn nút) Chấm ra xong bấm chấm lại
BR-CC-13 Chỉ có 1 trong 2 mốc (thiếu vào hoặc thiếu ra) → trạng thái "Quên chấm công" Chỉ chấm vào, hết ngày không chấm ra
BR-CC-14 Khi chấm, app kiểm 3 lớp: (a) khoảng cách ≤ bán kính; (b) độ chính xác GPS đủ / không mock location; (c) khuôn mặt đạt ngưỡng. Thiếu lớp nào → chặn. Bật giả lập vị trí; GPS nhiễu
BR-CC-15 Nhận diện khuôn mặt dưới ngưỡng / liveness fail → không lưu bản ghi, cho thử lại Sai mặt / ảnh tĩnh

Nhóm D — Giải trình công: ma trận thời điểm đăng ký (trọng tâm)

Ma trận test lõi — 5 loại × 3 mốc thời gian = 15 ca:

Loại giải trình Ngày quá khứ Ngày hôm nay Ngày tương lai
Nghỉ phép năm ✗ chặn chặn (trừ) ✓ cho
Nghỉ không lương ✗ chặn ✓ cho ✓ cho
Đi muộn / Về sớm ✗ chặn ✓ cho ✓ cho
Tăng ca ✗ chặn ✓ cho ✓ cho
Quên chấm công ✗ chặn ✓ cho chặn (trừ)
Business Rule Ca cần test
BR-GT-01 Không loại nào được đăng ký cho ngày quá khứ (cả 5 loại) Chọn ngày = hôm qua cho từng loại
BR-GT-02 Ngày hôm nay: cho phép mọi loại trừ Nghỉ phép năm Nghỉ phép năm chọn hôm nay → chặn; 4 loại kia → cho
BR-GT-03 Ngày tương lai: cho phép mọi loại trừ Quên chấm công Quên chấm công chọn ngày mai → chặn; 4 loại kia → cho
BR-GT-04 "Hôm nay" xác định theo ngày hệ thống (server), không theo giờ thiết bị Đổi giờ máy sang hôm qua/mai rồi đăng ký
BR-GT-05 Biên chuyển ngày: đăng ký lúc 23:59 hôm nay00:00 hôm sau phân loại đúng quá khứ/hiện tại/tương lai Test quanh mốc nửa đêm

Nhóm E — Giải trình công: ràng buộc theo từng loại

Business Rule Ca cần test
BR-GT-06 Loại có khoảng ngày (Nghỉ phép năm, Nghỉ không lương): áp ràng buộc thời điểm cho từng ngày trong khoảng — nếu khoảng chứa ngày quá khứ → chặn Nghỉ phép từ hôm qua → mai
BR-GT-07 Ngày/giờ kết thúc < bắt đầu → chặn hoặc tự hoán đổi Từ 20/07 đến 18/07
BR-GT-08 Nghỉ phép năm: trừ vào quota phép năm (12 ngày/năm, HR set theo người); chỉ hợp lệ khi Quản lý trực tiếp duyệt + HR ghi nhận (luồng 2 bước); vượt quota → cảnh báo/chặn Còn 1 ngày, đăng ký 3 ngày
BR-GT-09 Đi muộn/Về sớm (chỉ áp khối Văn phòng): chọn đi muộn hay về sớm, nhập giờ thực tế; mốc tính lệch theo 08:00/17:30, có ân hạn tới 08:10 (BR-CC-02) Nhập giờ ra sớm hơn 17:30; giờ vào 08:05 vs 08:15
BR-GT-10 Tăng ca: nhập giờ bắt đầu → kết thúc, hệ tự tính thời lượng; Văn phòng quy đổi ra ngày công (8h/ngày), Công trường tính theo đúng giờ vào/ra đã đăng ký (không quy đổi 8h/ngày); thời lượng ≤ 0 → chặn Bắt đầu = kết thúc; 1 ca VP vs 1 ca CT
BR-GT-11 Quên chấm công: trỏ tới ngày thực sự thiếu mốc vào/ra; nhập bổ sung giờ vào hoặc giờ ra (được để trống 1 ô) Chọn ngày đã đủ công → có chặn không?
BR-GT-12 Lý do bắt buộc với mọi loại; file đính kèm tùy chọn Bỏ trống lý do → chặn

Nhóm F — Giải trình công: duyệt, quyền, trùng lặp

Business Rule Ca cần test
BR-GT-13 Mỗi người chỉ tự giải trình cho bản thân; người duyệt cố định = Quản lý trực tiếp, không cho chọn. Màn duyệt đơn nằm ở web (module Hành chính – Nhân sự), không thuộc app Kiểm tra không sửa được người duyệt
BR-GT-14 Một ngày đã có đơn cùng loại đang Chờ duyệt / Đã duyệtchặn tạo trùng (hay cho phép?) Gửi 2 đơn đi muộn cùng 1 ngày
BR-GT-15 Đơn bị Từ chối → ngày đó giữ nguyên trạng thái lệch, không tính đủ công Từ chối rồi kiểm tra công
BR-GT-16 Đơn Đã duyệt loại "Quên chấm công" → ngày được cộng công thường (không thành Tăng ca) Duyệt bổ sung giờ ra 18:30

⚠️ Điểm cần chốt trước khi test

  1. "Quá khứ chặn tất cả" xung đột với bản chất Quên chấm công / Đi muộn. Hai loại này mô tả việc đã xảy ra. Nếu hôm nay quên chấm ra, qua ngày mai không giải trình được nữa (đã thành quá khứ). Thực tế NV thường phát hiện hôm sau → cân nhắc cửa sổ hồi tố N ngày thay vì chặn cứng quá khứ. (SRS §8 chưa quy định cửa sổ hồi tố — cần BA/Dev chốt.)
  2. "Tăng ca / Đi muộn cho ngày tương lai" = đăng ký báo trước. Cần xác nhận đúng ý, vì tương lai chưa có giờ thực tế để đối chiếu.