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.3 — Nháp  |  Người viết: trangth  |  Cập nhật: 19/08/2026  |  Mục đích: liệt kê Business Rule & Function Requirement để dựng test case cho 2 chức năng Chấm công và Giải trình công  |  Nguồn: SRS Chấm công 0.8 + SRS Trạng thái & Giải trình 1.0

Bản 0.3 có gì mới (19/08/2026)

Hai nhóm chức năng được bổ sung theo quyết định BA ngày 19/08/2026:

  1. Nhóm G — Công trường chấm công nhiều phiên trong ngày: một phiên trước nghỉ trưa, một phiên sau nghỉ trưa (không giới hạn số phiên). Không tính giờ nghỉ trưa vào công. Tổng thời lượng các phiên ≥ 8 giờ → Đủ công; < 8 giờ → Thiếu giờ công (dùng đúng trạng thái Thiếu giờ công sẵn có).
  2. Nhóm H — Giải trình công loại Khác: loại đơn mở, nhân viên nhập Giờ vào · Giờ ra · Lý do · File đính kèm cho những tình huống không khớp loại đơn nào đang có. ✦ Bổ sung cuối ngày 19/08/2026: §H.6 — 9 dạng lệch giờ giữa khoảng khai trong đơn và giờ chấm thực tế, kèm BR-GTK-15…17 · FR-GTK-12 · ca K-16…K-21.
  3. Hạn giải trình = 1 tuần kể từ ngày xảy ra sự việc (BR-GT-18) — áp MỌI loại, áp cả hai khối; quá 7 ngày thì chặn hết, không trừ loại nào. Riêng Nghỉ phép năm và Nghỉ không lương là đơn xin nghỉ trước nên không khai lùi cho ngày đã qua (BR-GT-01). Thay cửa sổ hồi tố "hết tháng" của bản 0.2.

Hai luật cũ bị thay — chỉ với khối Công trường: BR-CC-04 (định mức 9,5 giờ thô) và BR-CC-12 (mỗi ngày chỉ 1 vào + 1 ra). Khối Văn phòng giữ nguyên toàn bộ luật cũ — vẫn 1 phiên / ngày, vẫn có ca chuẩn 08:00–17:30. Xem ghi chú ở từng dòng.

Tài liệu liệt kê các Business Rule (BR) và Yêu cầu chức năng (FR) 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 và SRS — Trạng thái, Giải trình Đi công tác & Chấm công ngoài phạm vi: 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"), chấm công theo phiên — mỗi phiên gắn một nơi làm việc.

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: ✦ không có khung giờ cố định — chấm công bất kỳ giờ nào trong ngày, giờ giấc hoàn toàn linh hoạt, chỉ cần đủ 8 tiếng; không có khái niệm "Đi muộn"/phạt tiền. 5 trạng thái ngày (Đủ công · Thiếu giờ công · Tăng ca · Quên chấm công · Vắng). ✧ Bản 0.3: chấm công nhiều phiên / ngày, giờ nghỉ trưa không tính công vì nằm giữa hai phiên; tổng thời lượng các phiên ≥ 8 giờ = đủ công (Nhóm G). Khung giờ nghỉ trưa vẫn tự thiết lập ở Hành chính – Nhân sự, chỉ dùng để hiển thị / đối chiếu.
    • 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ỉ). ✦ Giờ nghỉ trưa do Nhân sự thiết lập, hệ thống tự trừ; giờ công phải đủ 8 giờ sau khi trừ (BR-CC-04).
    • 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 — ✧ bản 0.3: 8 loại, lọc theo khối: Nghỉ phép năm (chỉ VP) · Nghỉ không lương · Đi muộn/Về sớm (chỉ VP) · Thiếu giờ công (chỉ CT) · Quên chấm công · Tăng ca · Đi công tác · Khác (mới — cả hai khối, Nhóm H). ✦ Thời hạn nộp — bản 0.3: 1 tuần kể từ ngày xảy ra sự việc (hạn cuối hết ngày D+7), áp MỌI loại và cả hai khối (BR-GT-18). Nghỉ phép năm và Nghỉ không lương là đơn xin nghỉ trước nên chặn toàn bộ ngày quá khứ (BR-GT-01).

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

Mã 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 — có ca chuẩn, dùng mốc 08:00 / 17:30 để xét đi muộn · về sớm.
· Công trường — KHÔNG có ca chuẩn, KHÔNG có khung giờ: nhân viên chấm công bất kỳ giờ nào trong ngày, giờ giấc linh hoạt hoàn toàn; hệ thống chỉ xét TỔNG GIỜ đủ 8 tiếng hay chưa (BR-CTP-03). (Sửa 19/08/2026 — bỏ khung 06:00–18:00 của bản cũ.)
NV Văn phòng vs NV Công trường cùng chấm 08:15 → khác trạng thái. CT chấm 04:30, 21:00, 23:50 → đều hợp lệ
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" / "Về sớm" / phạt, và không có giờ "ngoài khung": mọi lần chấm trong ngày đó đều hợp lệ như nhau và đều được cộng vào tổng giờ, kể cả sáng sớm hay tối muộn. Không có luật "cắt giờ ngoài khung" nữa. (Sửa 19/08/2026.) Chấm 04:30 · 12:00 · 19:30 · 23:50 → không lần nào bị chặn hay bị trừ giờ
BR-CC-04 ✦ Công thức đủ công — cả hai khối đều quy về 8 GIỜ LÀM THỰC.
· Văn phòng: Giờ làm = (Giờ ra − Giờ vào) − giờ nghỉ trưa; ≥ 8 giờ → 1 công. Giờ nghỉ trưa do Nhân sự thiết lập ở web HCNS (không hard-code), hệ thống tự trừ đúng khung đã set — nên định mức giờ thô = 8 giờ + giờ nghỉ trưa đã set (set 1,5g → thô 9,5g; set 1g → thô 9g).
· Công trường: tổng thời lượng các phiên ≥ 8 giờ → 1 công; nghỉ trưa nằm giữa hai phiên nên không phải trừ. Chấm 1 lượt xuyên trưa thì nghỉ trưa nằm trong phiên → định mức = 8 giờ + giờ nghỉ trưa (BR-CTP-03).
⇒ Một nguyên tắc duy nhất cho cả công ty: phải làm đủ 8 giờ; giờ nghỉ trưa không bao giờ được tính là giờ làm. (Sửa 19/08/2026 — bỏ cặp số cứng “1,5g / 8g” và “1g / 8,5g”.)
VP với khung nghỉ trưa 1,5g: thô 9g29 → thiếu, 9g30 → đủ. Đổi cấu hình xuống 1g: thô 8g59 → thiếu, 9g00 → đủ — kiểm hệ thống đọc cấu hình, không dùng số cứng
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 5 trạng thái (có Thiếu giờ công, không có Đi muộn/Về sớm); ô đế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ố ô

⛔ BR-CC-04 — phần Công trường đã bị thay ở bản 0.3. Test theo BR-CTP-03, không test ngưỡng 9,5 giờ.

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

Mã Business Rule Ca cần test
BR-CC-06 Mỗi đơn vị có 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

Mã Business Rule Ca cần test
BR-CC-12 ✦ Tách luật theo khối — chỉ Công trường mới có nhiều phiên.
· Văn phòng — GIỮ NGUYÊN luật cũ: mỗi NV mỗi ngày chỉ 1 phiên = 1 vào + 1 ra; đã chấm ra → khoá, không mở phiên mới (ẩn nút); lần chấm sau chỉ đẩy mốc ra muộn hơn.
· Công trường — BỎ luật này: một ngày có nhiều phiên, sau khi chấm ra vẫn mở lại phiên mới được (BR-CTP-01).
Ngoại lệ duy nhất của Văn phòng: luồng đổi nơi làm việc / đi công tác vẫn tách phiên theo BR-VT-14 — đó là phiên ở nơi khác, không phải phiên thứ hai tại văn phòng. (Chốt 19/08/2026.)
VP: chấm ra 17:35 rồi bấm tiếp → nút bị ẩn / khoá, không sinh phiên 2. CT: chấm ra 11:30 rồi bấm tiếp → mở phiên mới
BR-CC-13 ✧ Thiếu mốc → “Quên chấm công”.
· Văn phòng: thiếu 1 trong 2 mốc của phiên duy nhất trong ngày.
· ✧ Công trường — xét theo từng phiên: phiên cuối hở mốc ra → phiên đó không được tính giờ công, các phiên đã đóng vẫn được cộng, cả ngày mang nhãn Quên chấm công, công ngày — — chỉ khi đơn được duyệt mới tính giờ của phiên đó (BR-CTP-04).
VP: chỉ chấm vào, không chấm ra. CT: phiên sáng đủ 2 mốc, phiên chiều chỉ chấm vào → ngày = Quên chấm công, tổng chỉ cộng phiên sáng
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. Áp cho MỌI lần chấm của MỌI phiên, không chỉ lần đầu ngày. Bật giả lập vị trí ở phiên thứ 2; 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 G — Công trường: chấm công nhiều phiên trong ngày & định mức 8 giờ

✧ Mới ở bản 0.3 — quyết định BA ngày 19/08/2026. Áp riêng khối Công trường. Khối Văn phòng giữ nguyên mô hình cũ (1 phiên/ngày, trừ cứng 1,5 giờ nghỉ trưa).

G.1 Mô hình

Ngày công của nhân viên Công trường được ghép từ tối đa 2 phiên chấm công — một phiên = một cặp Vào → Ra, phiên 1 trước nghỉ trưa và phiên 2 sau nghỉ trưa (BR-CTP-01):

PhiênVí dụÝ nghĩa
Phiên 1 — trước nghỉ trưa07:00 → 11:30 = 4g30Buổi sáng. Chấm ra trước khi đi nghỉ trưa
Khoảng nghỉ trưa11:30 → 13:00Nằm GIỮA hai phiên → không tính công. Hệ thống không phải trừ gì cả — giờ nghỉ trưa tự nhiên rơi ra ngoài
Phiên 2 — sau nghỉ trưa13:00 → 16:30 = 3g30Buổi chiều. Chấm vào lại khi quay lại làm
Tổng giờ công8g00≥ 8 giờ → Đủ công (1 công)

Định mức 8 giờ hay 9,5 giờ — đọc kỹ chỗ này

Định mức gốc là 8 giờ LÀM THỰC. Con số đem ra so đổi theo nghỉ trưa nằm trong hay ngoài phiên, chứ không phải đổi định mức:

Cách chấm Nghỉ trưa nằm đâu Định mức
Nhiều phiên — ra trước trưa, vào lại sau trưa Ngoài phiên, không được tính 8 giờ
1 lượt xuyên suốt — bao trọn khung nghỉ trưa Trong phiên, được tính vào tổng 9,5 giờ
1 phiên không chạm khung trưa — vd 13:00–21:00 Không có nghỉ trưa 8 giờ

Cả ba dòng đều quy về 8 giờ làm thực — 9,5g = 8g làm + 1,5g nghỉ trưa. Nhân viên không bị thiệt dù chấm kiểu nào, và cũng không ăn gian được 1,5 giờ bằng cách không chấm ra buổi trưa (BR-CTP-03).

G.2 Yêu cầu chức năng

Mã Yêu cầu Ghi chú kiểm thử
FR-CTP-01 ✦ Sau khi chấm ra phiên 1, nút chấm công của nhân viên Công trường vẫn mở; lần chấm kế tiếp mở phiên 2 với nhãn “Chấm công vào”. Sau khi chấm ra phiên 2 thì khoá nút cho đến hết ngày (BR-CTP-01 — tối đa 2 phiên). Chấm ra 11:30 → nút Chấm công vào; chấm ra 17:00 (phiên 2) → nút ẩn / khoá
FR-CTP-02 ✦ App hiển thị nhãn nút đúng theo trạng thái ngày: chưa có phiên nào → Chấm công vào; phiên đang mở → Chấm công ra; đã đóng phiên 1 → Chấm công vào (mở phiên 2); đã đóng phiên 2 → nút khoá, kèm dòng “Đã chấm đủ 2 phiên hôm nay”. Đối chiếu nhãn ở 5 thời điểm: đầu ngày · giữa phiên 1 · sau khi ra phiên 1 · giữa phiên 2 · sau khi ra phiên 2
FR-CTP-03 ✦ Bố cục chi tiết công ngày (khối Công trường). Trên cùng là dd/MM · <thứ> + chip trạng thái ngày ở góc phải; tiếp theo là bảng phiên chấm công — ✦ không có đầu đề nào phía trên bảng — bỏ cả “Phiên chấm công · <n>” lẫn “Chấm công tại nơi công tác · <n>” (sửa 20/08/2026): mỗi dòng đã ghi Phiên 1 / Phiên 2, còn ngày đi công tác nhận ra qua thẻ Đi công tác ở khối giải trình (BR-CTP-12 · BR-VT-26):
· Cột trái — mỗi phiên 1 dòng Phiên <n> · Giờ vào → Giờ ra, không có cột thời lượng; phiên hở mốc ra chỉ hiện Giờ ra —, không kèm chữ nào khác (FR-CTP-06).
· ✦ Cột phải — một ô GỘP cho cả bảng, hiện số công của ngày (vd 0,8 + chữ công), không phải số của từng phiên: công tính trên TỔNG các phiên đã đủ vào–ra so với định mức 8 giờ/ngày (BR-CTP-03). Ngày còn phiên hở mốc vẫn hiện phần công đã chấm được (FR-CTP-06).
Năm thứ dưới đây KHÔNG hiển thị: dòng “Còn thiếu…” · dòng tóm tắt “<n> phiên chấm công · tổng <giờ>” dưới ngày · thứ · dòng Tổng giờ công · thời lượng từng phiên · ✦ khối số công cỡ lớn ở đầu chi tiết và ✦ dòng Định mức ngày ở chân bảng (số công đã nằm ở ô gộp bên phải; tổng giờ & định mức vẫn tính bên trong). Ngày 1 phiên vẫn giữ dòng “Vào HH:mm → Ra HH:mm” dưới ngày · thứ. (Sửa 19/08/2026 · 20/08/2026 — bỏ dòng tóm tắt, Tổng giờ công, cột thời lượng, số công cỡ lớn và dòng Định mức ngày; số công chuyển vào ô gộp cột phải.)
Ngày 02/06 — 2 phiên 07:00–11:30 + 13:00–15:00, công 0,8: 2 dòng phiên chỉ có giờ vào–ra, bên phải 1 ô gộp 0,8 công trải hết 2 dòng; không có “0,8 công” cỡ lớn ở đầu, không có dòng “Định mức ngày”, “Tổng giờ công”, “còn thiếu”, không có 4g 30p ở từng dòng
FR-CTP-04 ✦ Khoảng trống giữa hai phiên mặc định là giờ nghỉ giữa ca / nghỉ trưa: không tính công (BR-CTP-06) và KHÔNG hiển thị dòng nào trên giao diện. Chi tiết ngày chỉ liệt kê các phiên có chấm công + tổng giờ. (Sửa 19/08/2026 — bỏ dòng “Nghỉ giữa ca HH:mm–HH:mm” của bản đầu.) Ngày 07:00–11:30 + 13:00–16:30: không có dòng nào cho khoảng 11:30–13:00
FR-CTP-05 Tổng giờ công & trạng thái ngày tính lại ngay mỗi khi một phiên được đóng (có mốc Ra) — không chờ hết ngày. Đóng phiên 1 → Thiếu giờ công; đóng phiên 2 đủ 8g → chuyển Đủ công
FR-CTP-06 ✦ Hết ngày mà phiên cuối cùng chưa đóng → ngày chuyển nhãn Quên chấm công. Trong bảng phiên, phiên đó hiện Giờ vào bình thường và Giờ ra — — ✦ chỉ dấu gạch, KHÔNG kèm chữ “chưa tính công” (bỏ 20/08/2026).
· ✦ Ô công bên phải KHÔNG còn để —: hiện phần công của các phiên đã đủ vào–ra, quy trên định mức 8 giờ / ngày (BR-CTP-03) — giờ của phiên hở mốc vẫn không được cộng (BR-CTP-04). (Đổi 20/08/2026 — thay luật cũ “công ngày —”; chỉ áp khối Công trường.)
· Ngày vẫn chưa chốt công: giữ nhãn Quên chấm công + dải nhắc vàng “Chưa chốt công — phiên còn thiếu mốc ra. Bổ sung giờ để tính đủ công.”, và không bị phạt vắng.
· Sau khi đơn được duyệt, phiên hiện giờ ra đã bổ sung kèm chip “bổ sung theo đơn” và công ngày tính lại đủ.
Ngày 2 phiên 07:00–11:30 + 13:00 → —: bảng phiên ghi Ra — (không có chữ “chưa tính công”), ô công hiện 0,6 (4g30 ÷ 8g), giữ dải nhắc vàng; duyệt đơn bù 16:30 → công 1
FR-CTP-07 ✦ Ngày Thiếu giờ công → màn chi tiết gợi ý loại đơn Thiếu giờ công; ngày Quên chấm công → gợi ý Quên chấm công. Chỉ hai gợi ý này — không gợi ý loại Khác từ màn chi tiết ngày (nhân viên tự chọn Khác trong form nếu cần). (Sửa 19/08/2026.) Bấm nút gợi ý → form mở đúng loại đã chọn sẵn
FR-CTP-08 Màn thống kê HR cho Công trường hiển thị cột Tổng giờ công (không phải giờ thô vào–ra) và Số phiên của từng ngày. Đối chiếu tổng của HR với tổng ở app nhân viên
FR-CTP-09 ✦ Khối Sự kiện & giải trình ở chi tiết ngày chỉ liệt kê việc cần giải trình để chốt công — Thiếu giờ công · Quên chấm công · Nghỉ · Đi công tác · Khác. Bản ghi Tăng ca KHÔNG hiện ở đây (giờ tăng ca là chỉ số riêng, có ô Giờ tăng ca và sheet riêng — BR-GT-10). Ngày không còn bản ghi nào sau khi lọc → ẩn hẳn cả khối (cả tiêu đề), không hiện hộp “Đủ định mức — không có gì cần giải trình”. Áp cả hai khối. (Chốt 19/08/2026.) Ngày đủ công + có tăng ca đã duyệt → chi tiết ngày chỉ còn công ngày + danh sách phiên, không có khối Sự kiện & giải trình
FR-CTP-10 ✦ Sheet “Ngày thiếu giờ tháng M/YYYY” (mở từ ô đếm Ngày thiếu giờ) — bố cục tối giản: mỗi dòng chỉ gồm dd/MM + nhãn “Thiếu giờ công” — không có mũi tên ở bên phải; chân sheet là khối “Tổng số ngày · N ngày”. Không hiện giờ, số phiên, số giờ thiếu, chip trạng thái hay biểu tượng điều hướng.
· Bộ lọc tự động: ngày có công ngày < 1 (chưa đủ công) và đơn chưa được duyệt (chưa giải trình · chờ duyệt · bị từ chối). Bỏ ngày Quên chấm công và ngày đã có đơn Đã duyệt.
· Bấm vào một dòng → đóng sheet và mở chi tiết đúng ngày đó (công ngày · danh sách phiên · sự kiện).
· Ô đếm ngoài màn dùng đúng bộ lọc này — số trên ô luôn khớp số dòng trong sheet. (Chốt 19/08/2026 — theo mẫu màn app.)
Tháng mẫu: sheet liệt kê 4 ngày (05 · 11 · 16 · 17/06), chân ghi 4 ngày, ô đếm cũng 4. Bấm dòng 17/06 → mở chi tiết ngày 17/06
FR-CTP-11 ✦ Khối “Phiên cần giải trình” trên form đơn (giai-trinh-cong-form.html?khoi=ct): hiện ngay dưới ô Ngày của loại đơn, trên các ô giờ.
· ✦ Chỉ gồm 2 nút Phiên 1 / Phiên 2, mặc định chọn Phiên 1 — nút KHÔNG hiển thị khoảng giờ và hệ thống không cố định khung giờ cho từng phiên. Nhân viên Công trường chỉ bấm chọn đang giải trình cho phiên nào; giờ thực tế khai ở hai ô Giờ vào / Giờ ra của form.
· ✦ Luôn hiện đủ 2 nút với mọi ngày, không đọc dữ liệu chấm công của ngày: bỏ nhánh ngày 1 phiên → ẩn nút, hệ thống tự xác định và bỏ dòng nhắc “Ngày này chưa có dữ liệu chấm công…”.
· Đổi ngày → khối giữ nguyên.
· ✦ Phạm vi áp dụng (chỉ khi ?khoi=ct — BR-CTP-11): 3 loại bám giờ chấm Quên chấm công · Thiếu giờ công · Khác → luôn hiện; Đi công tác → chỉ hiện khi Phạm vi = Theo giờ, bấm sang Theo ngày thì khối tự ẩn; Nghỉ phép · Nghỉ không lương · Tăng ca → không hiện.
· ✦ Vị trí khối trên form — GIỐNG NHAU ở mọi loại đơn: khối đứng ngay dưới ô Ngày và TRÊN các ô giờ của loại đơn (Giờ vào / Giờ ra thực tế · Giờ khai lại · Từ giờ / Đến giờ) — chọn phiên trước, khai giờ sau. Riêng Quên chấm công: ô Ngày quên chấm và ô Giờ khai lại tách thành hai dòng riêng để khối phiên chen vào giữa. (Sửa 27/08/2026 — Đi công tác phạm vi Theo giờ cũng phải chọn phiên; Theo ngày thì không.) (Sửa 27/08/2026 — bỏ khoảng giờ của từng phiên, chỉ chọn Phiên 1 / Phiên 2.)
Đổi qua lại 3 loại đơn → khối hiện/ẩn đúng; đổi qua ngày 2 phiên · ngày 1 phiên · ngày Vắng chưa chấm công → luôn đúng 2 nút Phiên 1 / Phiên 2, không có giờ kèm theo; chọn Đi công tác → Theo giờ có khối phiên, bấm sang Theo ngày khối biến mất; mở ?khoi=vp → không bao giờ thấy khối này
FR-CTP-15 ✦ Ngày Vắng / chưa phát sinh chấm công — DÙNG CHUNG bố cục với mọi ngày khác (sửa 20/08/2026, thay phương án “3 ô như Văn phòng”): tiêu đề dd/MM · <thứ> + chip Vắng ở góc phải → bảng phiên → khối giải trình.
· Bảng phiên vẫn hiện với đúng một dòng “Phiên 1 · Vào — → Ra —” — không hiển thị gì, chỉ để dấu gạch.
· Ô công bên phải = 0.
· KHÔNG có dòng tóm tắt nào dưới ngày · thứ (bỏ cả “Nghỉ cả ngày”), không số công cỡ lớn, không dòng Định mức ngày.
✦ Áp cho CẢ ngày chấm công tại nơi công tác mà đơn chưa duyệt: giờ chấm ngoài phạm vi chưa được công nhận nên ngày hiển thị y như ngày không có bản ghi chấm công nào; dòng “Chấm công tại nơi công tác — đơn chưa được duyệt” đã bỏ (BR-CTP-12 · BR-VT-26, sửa 20/08/2026). Giờ đã chấm hiện ở thẻ Đi công tác trong khối giải trình — dòng Vào HH:mm · Ra HH:mm — kèm nút Giải trình ngay khi chưa có đơn.
✦ Trường hợp mặc định: nhân viên đã khai trạng thái làm việc Công tác và đã phát sinh chấm công đi công tác nhưng chưa tạo đơn → khối Sự kiện & giải trình hiện thẻ Đi công tác + chip đỏ Chưa giải trình + nút Giải trình ngay (khi còn hạn 7 ngày; quá hạn thì ghi Đã quá hạn). Ngày đó vẫn là Vắng và vẫn bị phạt cho tới khi đơn được duyệt.
✦ Ngày không phát sinh chấm công nào và trạng thái Vắng → cũng hiện tiền phạt như trên. (Chốt 20/08/2026.)
01/06 (vắng chưa giải trình) · 15/06 (nghỉ không lương chờ duyệt) · 08/06 (công tác chờ duyệt, đã chấm 07:05–16:40): cả ba hiển thị bảng phiên 1 dòng toàn dấu gạch (Phiên 1 · Vào — → Ra —) + ô công 0 + chip Vắng; riêng 08/06 khối dưới có thẻ Đi công tác + dòng giờ đã chấm
FR-CTP-14 ✦ Sheet “Ngày nghỉ & vắng bị phạt” — HAI KHỐI HIỂN THỊ GIỐNG NHAU (Văn phòng ≡ Công trường; khác biệt duy nhất: Công trường không có loại Nghỉ phép năm).
· ✦ Danh sách CHỈ gồm bản ghi ĐÃ TÍNH PHẠT — đúng tên gọi “…bị phạt” (chốt 20/08/2026): ngày hôm nay hoặc quá khứ mà đơn chưa được duyệt, gồm ba trạng thái chưa giải trình · chờ duyệt · từ chối. Loại khỏi danh sách:
  – ngày tương lai (đăng ký trước, kể cả đang chờ duyệt) — chưa diễn ra nên chưa phạt;
  – ngày đơn Đã duyệt ở mọi mốc thời gian — đã được công nhận nghỉ, không phạt.
  ⚠ Do đó số dòng trong sheet ≠ ô đếm Ngày nghỉ ngoài màn (ô đó đếm mọi ngày nghỉ trong tháng) — hai con số có ý nghĩa khác nhau, không phải lỗi.
· Nhãn dòng bám theo ĐƠN, không bám theo trạng thái duyệt: ngày chưa giải trình (không có đơn) → Vắng; ngày đã có đơn → đúng tên loại nghỉ khai trong đơn (Nghỉ không lương · Nghỉ phép năm), kể cả khi đơn còn Chờ duyệt hoặc bị Từ chối. Ngày Đi công tác đơn chưa duyệt vẫn đứng dưới nhãn Vắng (BR-CTP-12).
· ✦ KHÔNG hiển thị chip trạng thái giải trình trên từng dòng — mỗi dòng chỉ gồm ngày · nhãn nghỉ (buổi) · tiền phạt (nếu có). Buổi ghi trong ngoặc là (cả ngày) · (buổi sáng) · (buổi chiều) — không dùng chữ “nửa ngày”, và tên loại nghỉ không được kèm “(nửa ngày)” (tránh ra dòng “Nghỉ phép năm (nửa ngày) (sáng)”); trạng thái đơn xem trong chi tiết ngày / chi tiết đơn (bỏ chip 20/08/2026).
· ✦ Tiền phạt áp cho MỌI loại nghỉ — kể cả Nghỉ phép năm: ngày hôm nay / đã qua mà đơn của chính ngày đó chưa được duyệt (chưa giải trình · chờ duyệt · từ chối) đều hiện mức phạt như vắng không phép; chỉ đơn Đã duyệt mới miễn phạt (BR-CC-13 · BR-VT-12). Ngày tương lai chưa diễn ra → không phạt và không vào danh sách. Phạt là tạm tính, tự gỡ khi đơn chuyển Đã duyệt.
· Phụ đề sheet đếm số ngày (N ngày); chân sheet là khối Tổng tiền phạt (chỉ cộng ngày có đơn chưa duyệt); không có nút Đóng ở chân.
· Bấm một dòng → đóng sheet và mở chi tiết chấm công của ngày đó. Muốn xem đơn thì đi tiếp bằng nút Xem đơn › trong chi tiết ngày, không mở thẳng đơn từ sheet. (Chốt 20/08/2026.)
Ngày 15/06 (nghỉ không lương chờ duyệt): dòng ghi Nghỉ không lương (cả ngày) + Phạt 1.200.000 ₫, không có chip trạng thái. Ngày vắng chưa giải trình → Vắng (cả ngày) + phạt. Ngày nghỉ đã duyệt và ngày tương lai chờ duyệt → không xuất hiện trong sheet. Bấm dòng → mở chi tiết ngày đó
FR-CTP-17 ✦ Thẻ Quên chấm công trong khối Sự kiện & giải trình — dòng phụ chỉ ghi phiên: “Phiên 1” hoặc “Phiên 2”, lấy đúng phiên nhân viên đã chọn khi đăng ký giải trình (khối Phiên cần giải trình của form — FR-CTP-11). Chưa có đơn → chưa chọn phiên → lấy phiên đang hở mốc (luôn là phiên cuối — BR-CTP-04).
Câu dài cũ “Quên chấm ra ở phiên cuối (phiên 2) — đơn đã duyệt, bổ sung giờ ra 16:30 → đã tính công” bỏ hẳn: việc bù giờ đã thấy ở chip bổ sung theo đơn trên dòng phiên, còn đã tính công hay chưa thì đọc ở ô công và chip trạng thái ngày. (Chốt 20/08/2026.)
Ngày 04/06 (đơn đã duyệt bù giờ ra 16:30, khai cho phiên 2): thẻ ghi “Quên chấm công” + dòng phụ “Phiên 2” — không còn câu giải thích dài
FR-CTP-16 ✦ Thẻ nghỉ trong khối Sự kiện & giải trình — dựng y như bản Văn phòng.
· Dòng 1:
tên loại nghỉ (Vắng · Nghỉ không lương · Nghỉ phép năm) + chip trạng thái đơn bên phải. KHÔNG* có nhãn phụ nào cạnh tên: bỏ cả
“Có lương”, “Không lương” và phần “· 4g”; tên loại cũng *không kèm “(nửa ngày)”.
· Dòng 2 (chữ nhỏ, xám): phạm vi nghỉ — Buổi sáng · Buổi chiều · Cả ngày; nghỉ nửa buổi ghi thẳng buổi sáng / buổi chiều, không ghi chung chung “Nửa ngày”. Bên phải dòng này là liên kết Xem đơn ›.
· Dòng 3: tiền phạt (nếu có). (Chốt 20/08/2026.)
Nghỉ phép năm nghỉ sáng → dòng 1 “Nghỉ phép năm” + chip Đã duyệt; dòng 2 “Buổi sáng” + Xem đơn ›. Vắng cả ngày → dòng 1 “Vắng”, dòng 2 “Cả ngày”, dòng 3 tiền phạt. Không thẻ nào còn chữ “Có lương / Không lương / 4g / (nửa ngày)”
FR-CTP-13 ✦ Thẻ Thiếu giờ công trong khối Sự kiện & giải trình của chi tiết ngày — dòng phụ hiển thị Giờ vào · Giờ ra nhân viên đã nhập trong ĐƠN giải trình của ngày đó (hai ô Giờ vào thực tế · Giờ ra thực tế của form), dạng “Giờ vào HH:mm · Giờ ra HH:mm” — chỉ hai mốc giờ, không kèm chữ “theo đơn” hay chú thích nguồn nào khác (bỏ 20/08/2026). KHÔNG hiển thị số giờ còn thiếu so với định mức (“thiếu 1g30 / 8g00 định mức” — bỏ): số giờ thiếu là số suy ra được, còn giờ khai trong đơn là thứ người xem cần đối chiếu với các phiên đã chấm ở khối trên. Ngày chưa có đơn → dòng phụ để trống, thẻ chỉ còn nhãn + nút Giải trình ngay. Áp cho mọi trạng thái đơn. (Chốt 20/08/2026.) Ngày 02/06 (đơn khai 07:00–16:30): thẻ ghi “Giờ vào 07:00 · Giờ ra 16:30”; ngày chưa có đơn: không có dòng phụ
FR-CTP-12 ✦ Hai sheet thống kê còn lại — đồng bộ hai khối.
· Ngày nghỉ & vắng bị phạt: gồm ngày nghỉ và ngày vắng — trong đó có cả ngày đi công tác đơn chưa duyệt, hiển thị dưới nhãn Vắng (BR-CTP-12). Nhãn từng dòng & thao tác bấm dòng: FR-CTP-14.
· Giờ tăng ca (OT): mỗi dòng chỉ gồm ngày · giờ bắt đầu – giờ kết thúc · số giờ; không hiện nội dung công việc, không hiện tiền. Chốt bằng Tổng giờ OT (BR-GT-10). Chỉ liệt kê ca đã duyệt. (Chốt 19/08/2026.)
Sheet OT: 10/06/2026 · 16:00 – 18:30 · 2g 30p — không có dòng Đổ bê tông sàn tầng 3. Sheet Ngày nghỉ của VP: 19/06 và 22/06 (đi công tác chưa duyệt) hiện dưới nhãn Vắng, không phải Đi công tác

G.3 Business Rule

Mã Tên Nội dung Ca cần test
BR-CTP-01 ✦ TỐI ĐA 2 PHIÊN / ngày — chỉ khối Công trường Chỉ nhân viên Công trường mới sinh nhiều phiên trong một ngày, và tối đa là 2 phiên:
· Phiên 1 — trước giờ nghỉ trưa;
· Phiên 2 — sau giờ nghỉ trưa.
Đóng phiên 2 xong thì khoá nút chấm công của ngày đó — không mở được phiên thứ 3. Nhân viên vẫn được chấm 1 phiên duy nhất nếu làm xuyên trưa (BR-CTP-03).
Nhân viên Văn phòng: mỗi ngày đúng 1 phiên — giữ nguyên luật cũ, đã chấm ra là khoá (BR-CC-12). Toàn bộ Nhóm G không áp cho Văn phòng. (Sửa 19/08/2026 — trước đó không giới hạn số phiên.)
CT: 1 phiên · 2 phiên → được. Cố mở phiên 3 sau khi đã đóng phiên 2 → nút bị khoá / chặn. VP: cố tạo phiên 2 → chặn
BR-CTP-02 Không tính giờ nghỉ trưa Hệ thống không tự trừ giờ nghỉ trưa cho khối Công trường. Giờ nghỉ trưa không được tính công vì nó nằm giữa hai phiên — khớp nguyên tắc chỉ tính giờ nằm trong lòng phiên (BR-VT-23). Khung nghỉ trưa khai ở HCNS chỉ để hiển thị / đối chiếu, không tham gia công thức. Nghỉ trưa 1g30 → tổng công không bị trừ thêm lần nữa
BR-CTP-03 ✦ Định mức ngày = 8 giờ làm thực, cộng thêm giờ nghỉ trưa nếu nghỉ trưa nằm trong** phiên Tổng giờ công ngày = Σ (Giờ ra − Giờ vào) của các phiên ĐÃ ĐÓNG.
Định mức đem ra so phụ thuộc cách nhân viên chấm:
· Chấm thành nhiều phiên (ra trước trưa, vào lại sau trưa) → giờ nghỉ trưa nằm ngoài phiên → định mức = 8 giờ.
· ✦ Chấm 1 lượt xuyên suốt qua trưa (phiên bao trọn khung nghỉ trưa cấu hình ở HCNS) → giờ nghỉ trưa nằm trong phiên → định mức = 8 giờ + thời lượng khung nghỉ trưa = 9,5 giờ (khung mẫu 11:30–13:00 = 1,5 giờ) — giữ nguyên luật cũ.
Công thức chung: Định mức = 8g + (1,5g nếu có phiên bao trọn khung nghỉ trưa).
· Tổng ≥ định mức → Đủ công = 1 công, ô lịch xanh.
· Tổng < định mức → Thiếu giờ công, ô lịch vàng, công ngày = Tổng ÷ Định mức, làm tròn 1 chữ số thập phân.
· Phiên không chạm khung nghỉ trưa (vd ca chiều–tối 13:00–21:00) → vẫn là 8 giờ, dù chỉ có 1 phiên. (Sửa 19/08/2026 — BA chốt giữ 9,5g cho ca xuyên trưa.)
Biên nhiều phiên: 7g59 · 8g00 · 8g01. Biên 1 phiên xuyên trưa: 9g29 · 9g30 · 9g31. Ca 13:00–21:00 (1 phiên, không qua trưa) → 8g → Đủ công
BR-CTP-04 ✦ Thiếu mốc chỉ xảy ra ở phiên cuối → phiên đó không được tính giờ công Muốn mở phiên mới thì phiên trước bắt buộc đã đóng (BR-CTP-08), nên phiên giữa ngày không bao giờ hở mốc. Hệ quả:
· Ngày chỉ có 1 phiên → thiếu mốc tức là đã chấm vào, quên chấm ra.
· Ngày có nhiều phiên → chỉ phiên cuối cùng có thể quên chấm ra.
· Không có trường hợp “quên chấm vào” ở khối Công trường — không chấm vào thì phiên không tồn tại.
✦ Cách tính công của ngày có phiên hở mốc (bổ sung 19/08/2026):
  – Phiên thiếu mốc ra → KHÔNG được tính giờ công cho phần đó. Các phiên đã đóng đủ 2 mốc trong ngày vẫn được cộng bình thường vào Tổng giờ công.
  – Cả ngày mang nhãn Quên chấm công, không bị phạt vắng — chưa chốt được công, chờ giải trình.
  – ✦ Công ngày hiển thị = phần công của các phiên ĐÃ ĐÓNG (quy trên định mức 8 giờ/ngày), không để — nữa (sửa 20/08/2026, thay luật cũ “công ngày —”). Đây là công tạm tính: ngày vẫn chưa chốt, còn dải nhắc bổ sung giờ.
  – Chỉ khi đơn giải trình ĐƯỢC DUYỆT (loại Quên chấm công, bổ sung giờ ra thực tế) thì giờ của phiên đó mới được tính: hệ thống lấy giờ ra đã duyệt làm mốc đóng phiên, cộng vào tổng, rồi chốt lại công ngày theo BR-CTP-03 (≥ 8g → Đủ công, < 8g → Thiếu giờ công).
  – Đơn Chờ duyệt / Từ chối / chưa có đơn → giờ của phiên hở mốc vẫn không được tính, ngày giữ nhãn Quên chấm công và công —.
Đồng bộ BR-VT-17 · BR-GT-16.
Phiên 1 07:00–11:30 đủ, phiên 2 13:00 → —:
· chưa duyệt → tổng 4g30, nhãn Quên chấm công, công —;
· duyệt bù giờ ra 16:30 → phiên 2 = 3g30, tổng 8g, nhãn Đủ công, công 1
BR-CTP-05 Trần 1 công Tổng vượt định mức → vẫn tối đa 1 công. Phần vượt không tự thành Tăng ca; muốn tính phải có đơn Tăng ca đã duyệt. Tổng 10g30 → 1 công, không tự sinh tăng ca
BR-CTP-06 Khoảng giữa hai phiên không tính công Mọi khoảng ngoài phiên (nghỉ trưa, về nhà giữa buổi, di chuyển giữa hai địa điểm chấm công) không vào công. Không có thao tác khai bù. Ra 11:30 · vào 14:00 → 2g30 không vào công
BR-CTP-07 Mỗi phiên vẫn phải qua đủ 3 lớp kiểm Mọi lần chấm của mọi phiên đều phải qua geofence + GPS thật + khuôn mặt (BR-CC-06 · BR-CC-14 · BR-CC-15). ✦ Không còn ràng buộc khung giờ — phiên mở lúc nào trong ngày cũng được (BR-CC-03). Phiên 2 chấm ngoài geofence → chặn cứng; phiên mở lúc 05:00 → không bị chặn
BR-CTP-08 Phiên không được chồng lấn Hai phiên trong ngày không được giao nhau về thời gian. Phiên mới chỉ mở được khi phiên trước đã đóng; giờ Vào của phiên sau phải ≥ giờ Ra của phiên trước. Cố tạo phiên 2 có giờ vào < giờ ra phiên 1 (qua giải trình) → chặn
BR-CTP-09 ✦ Phiên dưới 5 phút → Bỏ Phiên có thời lượng < 5 phút được coi là thao tác nhầm (bấm ra rồi bấm vào liền, chạm nhầm nút…): không tính vào tổng giờ công và không hiện trong danh sách phiên ở chi tiết ngày. Bản ghi chấm gốc vẫn lưu ở hệ thống để HR tra soát khi cần. Biên: đúng 5 phút → VẪN TÍNH; 4 phút → bỏ. (Chốt 19/08/2026.) Phiên 3 phút → không có trong danh sách, tổng giờ không đổi; phiên đúng 5 phút → có trong danh sách, cộng 5 phút
BR-CTP-10 ✦ Ranh giới ngày công — tính theo NGÀY CỦA MỐC VÀO Vì Công trường không có khung giờ (BR-CC-03), ca vắt qua nửa đêm là chuyện bình thường (trực đêm, đổ bê tông ban đêm). Luật: một phiên thuộc trọn về ngày của mốc VÀO.
· Toàn bộ thời lượng phiên cộng vào ngày bắt đầu ca, không chia đôi ở mốc 00:00.
· Ngày của mốc Ra không nhận phần giờ nào từ phiên đó.
· Quy ước cho nhân viên: “ngày bắt đầu ca là ngày công”.
· Hệ quả khi tính thời lượng: giờ ra nhỏ hơn giờ vào → hiểu là sang ngày hôm sau, cộng thêm 24 giờ rồi mới trừ (02:00 − 22:00 = 4g, không phải số âm). (Chốt 19/08/2026 — BA chọn phương án lấy ngày của mốc Vào.)
Phiên 22:00 ngày 18/08 → 02:00 ngày 19/08 = 4 giờ, cộng hết vào ngày 18/08; ngày 19/08 không được cộng giờ nào từ ca này
BR-CTP-11 ✦ Đơn giải trình phải gắn với MỘT PHIÊN cụ thể — chỉ khối Công trường Ba loại đơn bám vào giờ chấm — Quên chấm công · Thiếu giờ công · Khác — phải xác định giải trình cho phiên nào:
· ✦ Nhân viên bắt buộc chọn Phiên 1 hay Phiên 2; không quá 2 lựa chọn vì ngày tối đa 2 phiên (BR-CTP-01).
· ✦ Phiên KHÔNG có khung giờ cố định — “Phiên 1 / Phiên 2” chỉ là thứ tự phiên trong ngày (trước / sau nghỉ trưa), form không hiển thị khoảng giờ kèm nút. Giờ do nhân viên khai ở Giờ vào / Giờ ra, không lấy từ dữ liệu chấm công của ngày.
· ✦ Bỏ nhánh “ngày 1 phiên → hệ thống tự xác định”: mọi ngày đều hỏi nhân viên.
· Quên chấm công vẫn giữ lựa chọn quên chấm vào / quên chấm ra; phạm vi áp dụng là phiên đã chọn.
· Khối Văn phòng KHÔNG có bước này — mỗi ngày đúng 1 phiên (BR-CC-12) nên form giữ nguyên như cũ.
· ✦ Đi công tác chia hai nhánh theo Phạm vi khai báo: Theo giờ (1 ngày + Từ giờ → Đến giờ) → PHẢI chọn phiên vì đơn chỉ phủ một khoảng trong ngày; Theo ngày (khoảng ngày + buổi) → KHÔNG hỏi phiên vì đơn phủ trọn buổi / trọn ngày. (Sửa 27/08/2026 — Đi công tác phạm vi Theo giờ cũng phải chọn phiên; Theo ngày thì không.)
· Các loại đơn không bám giờ chấm (Nghỉ phép · Nghỉ không lương · Tăng ca) không hỏi phiên. (Sửa 27/08/2026 — bỏ khoảng giờ của từng phiên, chỉ chọn Phiên 1 / Phiên 2.)
CT mọi ngày (2 phiên · 1 phiên · chưa chấm công), cả 3 loại đơn trên → đều hiện 2 nút Phiên 1 / Phiên 2, không có khoảng giờ; CT loại Đi công tác: Theo giờ → có khối chọn phiên, Theo ngày → không; CT loại Tăng ca: không có khối chọn phiên; VP mọi loại: không có khối chọn phiên
BR-CTP-12 ✦ Ngày Đi công tác đơn chưa duyệt → VẮNG + PHẠT Ngày mà toàn bộ bản ghi đều ngoài phạm vi, đơn Đi công tác ở trạng thái chưa tạo đơn · Chờ duyệt · Từ chối, và là hôm nay hoặc ngày đã qua:
· Nhãn ngày = Vắng, công 0, hai ô giờ để — — dù nhân viên đã chấm đủ giờ ở nơi công tác.
· Bị phạt vắng không phép; khoản phạt tạm tính, tự gỡ khi đơn được duyệt. Ngày tương lai chưa phạt.
· Ngày đó vẫn nằm trong thống kê “Ngày nghỉ & vắng bị phạt” nhưng dưới nhãn Vắng.
· Tách luồng: chi tiết ngày ghi “Chấm công tại nơi công tác — đơn chưa được duyệt” (không phải “Nghỉ cả ngày”), và khi đơn đã duyệt thì khối giờ mang tiêu đề “Chấm công tại nơi công tác”, không dùng chung tiêu đề “Phiên chấm công” của luồng thường.
Chi tiết: BR-VT-26 · BR-VT-27 ở SRS Trạng thái & Giải trình. (Chốt 19/08/2026 — giữ nguyên BR-VT-12.)
08/06 (chấm 07:05–16:40, đơn chờ duyệt) → Vắng · 0 công · phạt 1.200.000₫, hiện trong thống kê dưới nhãn Vắng; duyệt đơn → phạt tự gỡ, ngày tính công theo giờ thực tế

G.4 Bộ ca kiểm thử gợi ý

# Diễn biến trong ngày (Công trường) Tổng giờ Trạng thái ngày Công
CT-01 07:00–11:30 + 13:00–16:30 8g00 Đủ công 1
CT-02 07:00–11:30 + 13:00–16:29 7g59 Thiếu giờ công 1,0 (7,98 ÷ 8, làm tròn 1 chữ số)
CT-03 07:00–11:00 + 13:00–15:00 6g00 Thiếu giờ công 0,8
CT-04 ✦ 07:00–17:00 — 1 phiên xuyên trưa (bao trọn khung 11:30–13:00) 10g00 Đủ công — định mức 9,5g 1
CT-04b ✦ 07:00–16:00 — 1 phiên xuyên trưa 9g00 Thiếu giờ công — 9g < 9,5g 0,9
CT-04c ✦ 13:00–21:00 — 1 phiên, không chạm khung nghỉ trưa 8g00 Đủ công — định mức 8g 1
CT-05 07:00–11:30 + phiên chiều chỉ có Vào 13:00, đơn chưa duyệt 4g30 — phiên chiều không tính Quên chấm công —
CT-05b ✦ Cùng ngày trên, đơn Quên chấm công Đã duyệt bù giờ ra 16:30 8g00 — phiên chiều được tính 3g30 Đủ công 1
CT-06 ✦ Đã đóng phiên 2 (07:00–11:30 + 13:00–17:00), cố mở phiên 3 lúc 17:30 8g30 Đủ công — nút chấm công đã khoá, không sinh phiên 3 (BR-CTP-01) 1
CT-07 07:00–11:30 + 13:00–18:00 9g30 Đủ công — phần vượt không tự thành tăng ca (BR-CTP-05) 1
CT-08 Không có lần chấm nào, không có đơn — Vắng 0
CT-09 ✦ 04:30–08:30 + 18:00–22:00 — giờ ngoài khung cũ 06:00–18:00 8g00 Đủ công — CT không còn khung giờ (BR-CC-03) 1
CT-10 ✦ 22:00 ngày 18/08 → 02:00 ngày 19/08 — ca vắt nửa đêm 4g00 Tính trọn vào ngày 18/08 (BR-CTP-10) → Thiếu giờ công 0,5
CT-11 ✦ Văn phòng — chấm ra 17:35 rồi bấm chấm tiếp — Không sinh phiên 2 — nút bị khoá (BR-CC-12) —

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 — 8 loại × 4 mốc thời gian.

✦ Bản 0.3 đổi luật hạn nộp — Dev & Tester đọc kỹ

Cửa sổ hồi tố không còn tính theo tháng mà tính theo 7 ngày kể từ ngày xảy ra sự việc (BR-GT-18), áp cho mọi loại giải trình và cho cả hai khối. Luật "hạn cuối là hết ngày cuối tháng" của bản 0.2 bị thay.

Bốn mốc, đọc theo đúng thứ tự này:

  1. Ngày sự việc quá 7 ngày → chặn HẾT, không trừ loại nào.
  2. Ngày sự việc trong 7 ngày (đã qua) → cho phép, trừ Nghỉ phép năm và Nghỉ không lương.
  3. Hôm nay → cho phép, trừ Nghỉ phép năm.
  4. Ngày tương lai → cho phép, trừ Quên chấm công và Thiếu giờ công.
Loại giải trình Ngày sự việc quá 7 ngày Ngày sự việc trong 7 ngày Ngày hôm nay Ngày tương lai
Nghỉ phép năm ✗ chặn ✗ chặn ✗ chặn ✓ cho
Nghỉ không lương ✗ chặn ✗ chặn ✓ cho ✓ cho
Đi muộn / Về sớm ✗ chặn ✓ cho ✓ cho ✓ cho
Thiếu giờ công ✗ chặn ✓ cho ✓ cho ✗ chặn
Tăng ca ✗ chặn ✓ cho ✓ cho ✓ cho
Quên chấm công ✗ chặn ✓ cho ✓ cho ✗ chặn
Đi công tác ✗ chặn ✓ cho ✓ cho ✓ cho
✦ Khác ✗ chặn ✓ cho ✓ cho ✓ cho

Đọc ngang bảng thấy ngay 2 nhóm. Nghỉ phép năm · Nghỉ không lương là đơn xin nghỉ trước, nên không khai lùi cho ngày đã qua dưới bất kỳ hình thức nào. Sáu loại còn lại là giải trình cho việc đã xảy ra, nên khai lùi được nhưng chỉ trong 7 ngày.

Mã Business Rule Ca cần test
BR-GT-18 ★ Hạn giải trình = 1 tuần kể từ ngày xảy ra sự việc — áp MỌI loại. Gọi D = ngày cần giải trình: đơn chỉ gửi được tới hết 23:59 ngày D+7; từ 00:00 ngày D+8 ngày D đóng hẳn cho tất cả 8 loại — không mở form, chặn gửi, báo Đã quá hạn giải trình — quá 7 ngày kể từ ngày xảy ra.
· Không loại nào được miễn, kể cả Nghỉ phép năm và Nghỉ không lương.
· Áp cả hai khối (Văn phòng · Công trường), không tách luật theo khối.
· Cửa sổ 7 ngày được phép vắt sang tháng sau — sự việc 29/08 thì hạn là hết 05/09 (cách xử lý khi kỳ công đã chốt: BR-GT-20).
· ✦ 7 ngày là HẠN NỘP ĐƠN, KHÔNG phải hạn duyệt. Đơn đã nộp đúng hạn thì người duyệt xử lý lúc nào cũng có hiệu lực — hệ thống không tự hủy / tự từ chối đơn chỉ vì quá 7 ngày mà chưa được duyệt. Thời điểm duyệt chỉ ảnh hưởng tới kỳ ghi nhận công (BR-GT-20). (Chốt 19/08/2026.)
· ✦ Đếm 7 ngày LỊCH TRƯỢT, kể cả ngày không đi làm — không trừ chủ nhật, ngày lễ, ngày nghỉ của cá nhân. Không phải 7 ngày làm việc, cũng không phải tuần lịch. (Chốt 19/08/2026.)
· Ngày tương lai không chịu luật này — vẫn theo BR-GT-03. (Chốt 19/08/2026 — thay cửa sổ "hết tháng" của bản 0.2; mở rộng ra mọi loại 19/08/2026.)
Hôm nay 19/08: chọn 12/08 (= D+7) → cho; chọn 11/08 (= D+8) → chặn. Biên: 23:59 ngày D+7 còn gửi được, 00:00 ngày D+8 bị khoá. Test đủ 8 loại ở mốc D+8 → cả 8 đều chặn. Ca đếm ngày nghỉ: sự việc thứ Sáu 07/08, trong khoảng có thứ Bảy + Chủ nhật → hạn vẫn là hết 14/08, không được cộng bù 2 ngày nghỉ. Ca hạn duyệt: đơn nộp 13/08 (đúng hạn), người duyệt bấm 20/08 → đơn vẫn có hiệu lực, không bị hệ thống tự hủy
BR-GT-01 ★ Nghỉ phép năm · Nghỉ không lương KHÔNG khai lùi. Hai loại này là đơn xin nghỉ trước, nên chặn toàn bộ ngày quá khứ — kể cả ngày trong 7 ngày (khác hẳn 6 loại còn lại). Thêm: Nghỉ phép năm chặn cả hôm nay (BR-GT-02). Nghỉ đã diễn ra mà chưa có đơn thì Nhân sự xử lý tay trên web HCNS, không đi qua luồng đơn của nhân viên (BR-GT-19). (Chốt 19/08/2026 — thay luật "cận dưới = ngày 01 của tháng" của bản trước.) Hôm nay 19/08: Nghỉ không lương chọn 18/08 → chặn; chọn 19/08 → cho; chọn 20/08 → cho. Nghỉ phép năm chọn 19/08 → chặn
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; 7 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 và Thiếu giờ công — hai loại này bám vào giờ chấm thực tế nên chưa có gì để đối chiếu. Các loại còn lại là đăng ký báo trước (nghỉ, tăng ca, đi công tác, đi muộn/về sớm, và ✦ Khác — vd báo trước một khoảng giờ vắng mặt vì việc riêng).
✦ Xác nhận 19/08/2026: đơn cho ngày tương lai là đăng ký báo trước — đúng ý nghiệp vụ, không phải thiếu sót thiết kế. Lúc gửi chưa có giờ thực tế để đối chiếu là bình thường: Tăng ca đăng ký trước ca làm thêm, Đi công tác đăng ký trước chuyến đi, Nghỉ phép năm / Nghỉ không lương xin nghỉ trước. Khi ngày đó diễn ra, công vẫn chốt theo giờ chấm thực tế (BR-VT-10 · BR-GTK-06), đơn chỉ là căn cứ cho phép, không phải số công được cấp sẵn. (Sửa 19/08/2026 — Khác chuyển từ chặn sang cho.)
Quên chấm công / Thiếu giờ công chọn ngày mai → chặn; 6 loại còn lại chọn ngày mai → cho
BR-GT-04 "Hôm nay" và mốc D+7 xác định theo ngày hệ thống (server), không theo giờ thiết bị Đổi giờ máy lùi 3 ngày rồi gửi đơn cho ngày đã quá hạn → vẫn phải bị chặn
BR-GT-05 ✧ Biên chuyển ngày của cửa sổ 7 ngày: đơn gửi lúc 23:59 ngày D+7 → nhận; gửi lúc 00:00 ngày D+8 → từ chối. Đơn đang mở form mà qua mốc nửa đêm rồi mới bấm Gửi → chặn tại thời điểm gửi, không tính theo lúc mở form. Mở form 23:58, bấm Gửi 00:01 → phải chặn
BR-GT-19 ★ Đơn quá hạn không có đường vòng. Hết 7 ngày thì nhân viên không tự nộp được nữa và không có nút xin gia hạn trong app. Trường hợp đặc biệt do Nhân sự xử lý tay trên web HCNS (điều chỉnh công), không đi qua luồng đơn của nhân viên. Tìm mọi lối vào form cho ngày quá hạn (lịch, nút gợi ý ở chi tiết ngày, đơn của tôi) → đều phải chặn

★ BR-GT-01 · BR-GT-03 · BR-GT-18 · BR-GT-19 — theo quyết định BA ngày 19/08/2026.

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

Mã 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 · Đi công tác): áp ràng buộc thời điểm cho từng ngày trong khoảng — chỉ cần 1 ngày trong khoảng bị chặn là chặn cả đơn. Thực tế: Nghỉ phép năm / Nghỉ không lương → ngày đầu khoảng phải từ hôm nay trở đi (BR-GT-01); Đi công tác → ngày đầu khoảng phải còn trong 7 ngày (BR-GT-18). Hôm nay 19/08: Nghỉ không lương 18/08 → 21/08 → chặn; 19/08 → 21/08 → cho. Đi công tác 10/08 → 14/08 → chặn (10/08 đã quá 7 ngày)
BR-GT-07 Ngày/giờ kết thúc < bắt đầu → chặn hoặc tự hoán đổi Từ 20/08 đến 18/08
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 — tính RIÊNG theo GIỜ, KHÔNG quy đổi ra ngày công. Nhập giờ bắt đầu → giờ kết thúc, hệ tự tính thời lượng (giờ : phút).
· Áp chung cả hai khối — Văn phòng và Công trường giống nhau, không tách quy tắc.
· Giờ tăng ca đứng riêng một chỉ số (ô Giờ tăng ca ở thẻ tổng tháng · cột riêng khi xuất báo cáo), không cộng vào số công và không quy đổi ra ngày công theo bất kỳ định mức nào (không chia 8g/ngày ở VP, không chia định mức 8g ở CT).
· Công ngày vẫn trần 1 công (BR-CTP-05 · BR-GTK-07); phần giờ vượt định mức chỉ thành giờ tăng ca khi có đơn Tăng ca đã duyệt, và đi vào bảng lương theo đơn giá giờ tăng ca, không đi vào số công.
· Thời lượng ≤ 0 → chặn gửi đơn. (Sửa 19/08/2026 — bỏ luật cũ “Văn phòng quy đổi ra ngày công 8h/ngày”.)
Bắt đầu = kết thúc → chặn. 1 ca VP và 1 ca CT cùng 18:00–20:30 → cả hai đều ghi 2g30 giờ tăng ca, số công của cả hai không đổi. Kiểm ô Giờ tăng ca cộng đúng tổng, ô Tổng công tháng không tăng
BR-GT-11 ✧ Quên chấm công: trỏ tới ngày/phiên thực sự thiếu mốc vào/ra; nhập bổ sung giờ vào hoặc giờ ra — bù đúng 1 mốc. Thiếu cả 2 mốc của một phiên → không dùng loại này, chuyển sang Khác (BR-GTK-02). 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 (Tăng ca / Đi công tác dùng ô Nội dung công việc / công tác); file đính kèm tùy chọn Bỏ trống lý do → chặn
BR-GT-17 ✧ Thiếu giờ công (chỉ khối Công trường): nhập Giờ vào thực tế · Giờ ra thực tế cho ngày bị nhãn Thiếu giờ công; đơn duyệt → tính lại tổng theo BR-CTP-03. Ngày tổng 6g00 → giải trình bù → đạt 8g

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

Mã 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 + Nhân sự (HR) — duyệt song song, cần đủ 2 bên, không cho chọn. Áp dụng cả hai khối (Công trường: chỉ huy trưởng chính là quản lý trực tiếp). Màn duyệt đơn nằm ở web (module Hành chính – Nhân sự), không thuộc app. (Chốt 03/08/2026) Kiểm tra không sửa được người duyệt; đơn chỉ Đã duyệt khi đủ 2 bên duyệt
BR-GT-14 Một ngày đã có đơn cùng loại đang Chờ duyệt / Đã duyệt → chặn tạo trùng (hay cho phép?) — riêng loại Khác xem BR-GTK-09 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
BR-GT-20 ✦ Đơn duyệt muộn vẫn được tính, chừng nào BẢNG LƯƠNG CỦA KỲ CHƯA CHỐT. Cửa sổ 7 ngày (BR-GT-18) được phép vắt sang tháng sau — sự việc 29/08 có hạn nộp tới hết 05/09, trong khi kỳ công tháng 8 đã chốt 31/08. Luật xử lý:
· Đơn được duyệt sau ngày chốt kỳ công nhưng bảng lương của kỳ đó CHƯA CHỐT → vẫn tính vào công của chính kỳ đó; hệ thống tính lại công tháng và phiếu lương của kỳ (cơ chế tính lại phiếu lương của module Hành chính – Nhân sự).
· Bảng lương đã chốt → kỳ đó không sửa được nữa; phần chênh lệch đi theo điều chỉnh ở kỳ lương kế tiếp (truy lĩnh), do Nhân sự xử lý trên web HCNS.
· Hạn nộp đơn không bị rút ngắn vì lý do chốt kỳ: vẫn là đủ 7 ngày kể từ ngày xảy ra sự việc. (Chốt 19/08/2026.)
Sự việc 29/08, gửi đơn 02/09, duyệt 03/09:
· bảng lương tháng 8 chưa chốt → công ngày 29/08 được cộng, tổng công tháng 8 và phiếu lương tính lại;
· bảng lương tháng 8 đã chốt → tháng 8 giữ nguyên, chênh lệch chuyển sang kỳ tháng 9

Nhóm H — Giải trình công loại Khác

✧ Mới ở bản 0.3 — quyết định BA ngày 19/08/2026. Áp cả hai khối (Văn phòng · Công trường).

✦ Bổ sung cùng ngày — §H.6 đối chiếu giờ khai trong đơn với giờ chấm thực tế (9 dạng lệch, gồm ca phiên hở mốc), kèm BR-GTK-15 · BR-GTK-16 · BR-GTK-17 và FR-GTK-12.

Màn đã dựng (app chấm công): giai-trinh-cong-form.html — loại Khác trong ô Loại giải trình, kèm khối trường Ngày · Giờ vào · Giờ ra, dải tóm tắt, soát thứ tự giờ và cảnh báo chồng lấn · don-cua-toi.html — 3 đơn mẫu loại Khác ở 3 trạng thái duyệt (Chờ duyệt · Đã duyệt · Từ chối — đơn bị từ chối là ca dùng sai loại).

H.1 Loại đơn Khác dùng khi nào

Loại Khác là loại đơn mở: dùng khi nhân viên thực tế có làm việc / có lý do chính đáng nhưng tình huống không khớp bất kỳ loại đơn nào trong 7 loại còn lại. Nhân viên tự khai khoảng giờ cần được ghi nhận và giải thích bằng lý do + bằng chứng.

Nguyên tắc loại cuối cùng

Khác không thay thế các loại đơn có sẵn. Nếu tình huống khớp một loại chuyên biệt (Quên chấm công · Thiếu giờ công · Tăng ca · Đi công tác · Nghỉ phép / không lương · Đi muộn / Về sớm) thì bắt buộc dùng loại đó — dùng Khác để né ràng buộc của loại chuyên biệt là sai quy trình (BR-GTK-02).

H.2 Trường dữ liệu

TrườngKiểuMô tả
NgàyNgàyBắt buộc. Một đơn Khác chỉ khai cho đúng 1 ngày (BR-GTK-03)
Giờ vàoTIMEBắt buộc. Mốc bắt đầu khoảng giờ nhân viên đề nghị ghi nhận
Giờ raTIMEBắt buộc. Phải > Giờ vào, cùng ngày (BR-GTK-04)
Lý doVăn bản dàiBắt buộc. Ô nhập để trống, không có placeholder gợi ý. Tối thiểu 10 ký tự
File đính kèmTệp✧ Không bắt buộc — theo luật chung của cả 8 loại đơn (BR-GT-12 · BR-GTK-14). Ảnh / video / tệp. (Sửa 27/08/2026 — bỏ luật "file bắt buộc" của bản 19/08/2026.)
Người duyệtChỉ đọcCố định Quản lý trực tiếp + Nhân sự (BR-GT-13)

H.3 Các tình huống có thể xảy ra (nguồn dựng test case)

Bảng dưới là danh mục case nghiệp vụ đội test phải phủ. Cột cuối chỉ rõ case nào thực sự thuộc Khác, case nào phải nắn về loại chuyên biệt — đây là phần dễ sai nhất.

#Nhóm tình huốngCase cụ thểLoại đơn đúng
1Không chấm công được vì thiết bị / hệ thốngĐiện thoại hết pin · hỏng · mất · quên mang máy · vừa đổi máy chưa đăng ký lại khuôn mặt · app lỗi · công trường mất sóng, mất mạng · GPS không bắt được · nhận diện khuôn mặt liên tục fail (đeo khẩu trang, trời tối, mặt lấm bùn) · tài khoản bị khoáKhác ✔ — nhân viên có mặt nhưng không tạo được bản ghi
2Có mặt làm việc nhưng ngoài mô hình chấm côngHọp · đào tạo · huấn luyện ATLĐ ở nơi khác · đi làm thủ tục cho công ty (ngân hàng, thuế, mua vật tư gấp) · điều động sang công trường khác giữa ngày · làm việc tại nhà theo phân côngĐi công tác nếu là đi làm ở địa điểm khác; Khác ✔ chỉ khi không phải đi công tác (vd làm tại nhà)
3Ngừng việc / bất khả khángMưa bão · mất điện · sự cố công trường phải dừng thi công · chờ vật tư · tai nạn lao động phải sơ cứu, đưa người đi viện · phong toả, cấm đường · cách ly y tếKhác ✔ — có mặt hoặc được điều động nhưng không làm đủ giờ vì lý do khách quan
4Chế độ cá nhân chưa có loại đơn riêngKhám thai · con ốm · khám sức khoẻ định kỳ do công ty tổ chức · tiêm chủng · việc hiếu hỉ nghỉ vài giờ rồi quay lại làm · đi khám bệnh đột xuất giữa buổiKhác ✔ nếu nghỉ theo giờ; nghỉ trọn buổi / trọn ngày → Nghỉ phép năm hoặc Nghỉ không lương
5Sai sót dữ liệu chấm côngBấm nhầm chấm ra lúc 14:00 rồi vẫn làm tiếp tới 17:00 · quên cả 2 mốc của phiên chiều · GPS trôi ra khỏi geofence làm phiên bị tách nhầm · bản ghi trùng hoặc lỗi đồng bộKhác ✔ — thiếu 1 mốc thì dùng Quên chấm công; thiếu cả 2 mốc hoặc sai dữ liệu mới dùng Khác
6Ca / giờ đặc thùTrực đêm, ca vắt qua nửa đêm · trực ứng cứu sự cố ngoài giờ · làm bù ngày nghỉ, ngày lễTăng ca nếu là làm thêm ngoài định mức; Khác ✔ nếu chỉ để ghi nhận đúng khoảng giờ trong định mức
7Dùng sai — phải chặn hoặc từ chốiĐi muộn ở Văn phòng nhưng khai Khác để né phạt · nghỉ cả ngày nhưng khai Khác để né trừ phép · khai Khác cho ngày đã Đủ công nhằm cộng thêm giờ · khai khoảng giờ chồng lấn phiên đã chấm để nhân đôi công❌ Không phải Khác — hệ thống chặn hoặc người duyệt từ chối (BR-GTK-02 · BR-GTK-06)

H.4 Yêu cầu chức năng

Mã Yêu cầu Ghi chú kiểm thử
FR-GTK-01 ✦ Loại Khác hiển thị trong danh sách loại giải trình ở cả hai khối; chọn Khác → hiện đúng 4 trường: Ngày · Giờ vào · Giờ ra · Lý do (ô Lý do để trống, không placeholder), kèm khối File đính kèm và Người duyệt. Đổi từ Đi công tác sang Khác: nhóm trường cũ ẩn hoàn toàn
FR-GTK-02 Ô chọn loại hiển thị icon riêng cho Khác (gợi ý: icon ghi chú / ba chấm). Đối chiếu icon với 7 loại còn lại — không trùng
FR-GTK-03 ✦ Form loại Khác dùng đúng bộ trường như các loại đơn khác, không thêm phần tử nào: Loại giải trình · Ngày · Giờ vào · Giờ ra · (dòng lỗi đỏ khi sai) · Lý do · File đính kèm · Người duyệt · nút Gửi đơn. Không có dải tóm tắt “Đề nghị ghi nhận…”. (Sửa 19/08/2026 — theo mẫu form Thiếu giờ công.) Đối chiếu form Khác với form Thiếu giờ công: cùng bố cục, cùng số khối
FR-GTK-04 Validate tại chỗ: Giờ ra ≤ Giờ vào → dòng lỗi đỏ Giờ ra phải sau Giờ vào + khoá nút Gửi đơn; sửa đúng → mở lại ngay. 15:00 → 15:00 · 15:00 → 14:00
FR-GTK-05 Bỏ trống Lý do hoặc lý do < 10 ký tự → khoá nút Gửi đơn, ô tô đỏ kèm Vui lòng mô tả rõ lý do (tối thiểu 10 ký tự). Nhập ok → vẫn khoá
FR-GTK-06 ✦ Lịch chọn ngày của loại Khác: làm mờ mọi ngày cũ hơn D+7 (tức trước hôm nay − 7 ngày); hôm nay, 7 ngày liền trước và các ngày tương lai đều chọn được (BR-GTK-05 · BR-GT-18). Hôm nay 19/08: chọn được 12/08 trở đi; 11/08 mờ; 25/08 chọn được
FR-GTK-07 ✦ Form không hiển thị dải nhắc “Ngày này đã có N phiên…” và không đọc dữ liệu chấm công của ngày — nhân viên tự khai khoảng giờ, hệ thống đối chiếu khi tính công (BR-GTK-06). (Sửa 19/08/2026.) Mở form Khác cho ngày đã có 2 phiên → không thấy dải nhắc nào
FR-GTK-08 ✦ Form không cảnh báo chồng lấn với phiên đã chấm. Việc hợp nhất giờ, không cộng trùng do server xử lý khi tính công (BR-GTK-06 · BR-GTK-15), không bày ra form. (Sửa 19/08/2026.) Khai 10:00–13:00 cho ngày đã có phiên 07:00–11:30 → form gửi bình thường, không cảnh báo; công ngày sau khi duyệt = 07:00–13:00 = 6g, không phải 7g30
FR-GTK-09 ✦ Đơn Khác Đã duyệt cho ngày đã qua / hôm nay → công ngày tự tính lại ngay, chi tiết ngày hiện dòng phụ “Giải trình khác: HH:mm – HH:mm · <lý do rút gọn>”. Đơn Chờ duyệt / Từ chối → không cộng công, dòng phụ hiện không kèm giờ.
✦ Đơn Đã duyệt cho ngày tương lai → ngày đó hiện dòng phụ kèm chú thích “đã duyệt — đối chiếu khi ngày diễn ra”, công ngày chưa đổi (BR-GTK-15).
Duyệt đơn 2 giờ cho ngày đã qua 6g → ngày lên 8g, chuyển Đủ công. Duyệt đơn cho ngày mai → công ngày mai vẫn trống
FR-GTK-11 ✧ Khối File đính kèm của loại Khác giống hệt 7 loại còn lại: nhãn không có dấu *, không khoá nút Gửi đơn khi bỏ trống. Đính kèm thì hiện chip tên file (có nút gỡ); gỡ hết → nút Gửi vẫn sáng (BR-GTK-14). (Sửa 27/08/2026.) Loại Khác: nhãn không có *; không đính kèm gì vẫn gửi được. Đối chiếu với Tăng ca — giống nhau
FR-GTK-10 Màn duyệt đơn (web HCNS) hiển thị đủ Giờ vào · Giờ ra · Lý do · File đính kèm và đối chiếu với bản ghi chấm công thực tế của ngày để người duyệt quyết định. Mở đơn Khác trên web: thấy cả dữ liệu chấm công gốc
FR-GTK-12 ✦ Ngày được chọn có phiên chưa chấm ra (phiên hở mốc — BR-CTP-04) → form loại Khác hiện cảnh báo vàng “Ngày này có phiên chưa chấm ra — hãy dùng loại Quên chấm công để bù mốc giờ ra”, kèm nút tắt Chuyển sang Quên chấm công (mở lại form đúng loại, giữ nguyên ngày đã chọn); không khoá nút Gửi đơn. Màn duyệt web HCNS hiện thêm dòng đỏ “Ngày còn phiên hở mốc — duyệt đơn này không chốt được công” (BR-GTK-15 · BR-GTK-16). Chọn ngày có phiên 13:00 → — → thấy cảnh báo + nút chuyển loại; vẫn bấm Gửi được

H.5 Business Rule

Mã Tên Nội dung Ca cần test
BR-GTK-01 Phạm vi áp dụng Loại Khác có ở cả hai khối (Văn phòng · Công trường), không bị lọc theo khối. Mở form ở ?khoi=vp và ?khoi=ct — đều thấy Khác
BR-GTK-02 Khác là loại cuối cùng Chỉ dùng khi tình huống không khớp 7 loại còn lại. Nếu tình huống khớp loại chuyên biệt → phải dùng loại đó; người duyệt có quyền từ chối đơn Khác dùng sai kèm lý do Đã có loại đơn phù hợp. Đi muộn ở VP khai Khác → duyệt từ chối
BR-GTK-03 Một đơn = một ngày Đơn Khác chỉ khai cho đúng 1 ngày; vắng mặt qua đêm hoặc nhiều ngày → tách thành nhiều đơn. Cố khai 18/08 22:00 → 19/08 02:00 → chặn
BR-GTK-04 Ràng buộc thứ tự giờ Giờ ra > Giờ vào, cả hai trong cùng ngày đã chọn. Bằng nhau hoặc ngược → chặn gửi. Biên: 08:00→08:01 cho · 08:00→08:00 chặn
BR-GTK-05 ✦ Thời điểm khai Khác khai được cho: ngày đã qua trong vòng 7 ngày (BR-GT-18) · hôm nay · và ✦ ngày tương lai — khai trước một khoảng giờ sẽ vắng mặt (vd đi khám theo lịch hẹn), cùng tinh thần đăng ký báo trước của Tăng ca và Đi công tác (BR-GT-03). Ngày quá 7 ngày → chặn Đã quá hạn giải trình. Đơn cho ngày tương lai không cộng công ngay — xem BR-GTK-15. (Sửa 19/08/2026.) 19/08 khai cho 20/08 → cho; cho 12/08 → cho; cho 11/08 → chặn
BR-GTK-06 Hợp nhất khoảng giờ — không cộng trùng Đơn Khác Đã duyệt được coi như một phiên làm việc hợp lệ. Khi tính công ngày, hệ thống hợp nhất (union) khoảng giờ của đơn với các phiên đã chấm: phần chồng lấn chỉ tính MỘT lần.
Ví dụ: phiên 07:00–11:30 (4g30) + đơn Khác 10:00–13:00 → tổng = 07:00–13:00 = 6g00, không phải 4g30 + 3g00 = 7g30.
Case chồng lấn ở FR-GTK-08; case rời nhau; case đơn bao trùm phiên
BR-GTK-07 Trần 1 công Sau khi cộng đơn Khác, công ngày tối đa 1 công. Phần vượt định mức không tự thành Tăng ca. Ngày 8g + đơn Khác 2g → vẫn 1 công
BR-GTK-08 Chỉ Đã duyệt mới tính công Đơn Chờ duyệt / Từ chối → không cộng giờ; ngày giữ nguyên trạng thái & công cơ sở từ các phiên đã chấm, không ghi Vắng nếu ngày đã có ít nhất một lần chấm (BR-VT-17). Gửi đơn → công chưa đổi; duyệt → công đổi; từ chối → quay về như cũ
BR-GTK-09 Nhiều đơn Khác trong một ngày Cho phép nhiều đơn Khác cùng ngày nếu các khoảng giờ không chồng nhau; khoảng chồng nhau giữa hai đơn Khác → chặn tạo đơn thứ hai. 08:00–10:00 + 14:00–16:00 → cho; 08:00–10:00 + 09:00–11:00 → chặn
BR-GTK-10 ✦ Giờ khai ngoài ca chuẩn — chỉ áp khối Văn phòng Văn phòng: giờ khai nằm ngoài ca chuẩn 08:00–17:30 → vẫn gửi được nhưng phần ngoài ca không được cộng vào công ngày; muốn tính phải đi theo đơn Tăng ca.
Công trường: không có khung giờ (BR-CC-03) nên mọi giờ khai trong ngày đều được cộng, không cắt xén. (Sửa 19/08/2026.)
VP khai 06:00–09:00 → chỉ 08:00–09:00 vào công. CT khai 05:00–08:00 → cộng đủ 3 giờ
BR-GTK-11 Ngày Vắng hoàn toàn Ngày không có bản ghi chấm công nào mà có đơn Khác Đã duyệt → ngày thoát nhãn Vắng, tính công theo khoảng giờ đã duyệt và không bị phạt vắng không phép. Ngày trắng + đơn Khác 07:00–15:00 duyệt → tính công theo BR-CTP-03
BR-GTK-12 Ảnh hưởng tới trạng thái ngày Sau khi cộng đơn Khác: CT — tổng ≥ 8g → Đủ công, < 8g → Thiếu giờ công (BR-CTP-03); VP — vẫn xét theo mốc 08:00/17:30 và định mức 8g sau khi trừ nghỉ trưa (BR-CC-04). 1 ca mỗi khối
BR-GTK-14 ✧ File đính kèm là TÙY CHỌN Đơn Khác không bắt buộc đính kèm file — áp đúng luật chung BR-GT-12 cho cả 8 loại đơn. Bỏ trống → vẫn gửi được, nút Gửi đơn không bị khoá.
⚠ Hệ quả cần biết: Khác là loại đơn mở, không bám vào bất kỳ dữ liệu chấm công nào — bỏ ràng buộc file thì căn cứ duy nhất để duyệt là lý do nhân viên khai + bản ghi chấm công gốc người duyệt tự đối chiếu (FR-GTK-10). Rủi ro khai khống (dạng lệch L-8 §H.6) từ nay chỉ chặn được ở khâu duyệt. (Sửa 27/08/2026 theo quyết định BA — thay luật "bắt buộc ít nhất 1 file" chốt 19/08/2026.)
Chọn Khác, nhập đủ ngày · giờ · lý do, không đính kèm → nút Gửi đơn vẫn sáng, gửi thành công
BR-GTK-15 ✦ Đơn cho ngày TƯƠNG LAI: duyệt trước, CỘNG CÔNG SAU Đơn Khác khai cho ngày chưa diễn ra, dù đã ở trạng thái Đã duyệt, KHÔNG được cộng công ngay.
· Tại thời điểm duyệt: đơn chỉ là căn cứ cho phép được treo sẵn ở ngày đó; công ngày chưa thay đổi.
· Khi ngày đó tới, hệ thống mới đối chiếu khoảng giờ đã duyệt với các phiên chấm công thực tế của ngày, rồi mới cộng công:
  – Phần khoảng đã được phiên thực tế phủ trùm → KHÔNG cộng thêm (BR-GTK-06 — hợp nhất, không đếm hai lần).
  – Phần khoảng không phiên nào phủ → cộng vào tổng giờ của ngày.
  – Chốt công ngày theo BR-CTP-03 (Công trường) / BR-CC-04 (Văn phòng), trần 1 công (BR-GTK-07).
· Ngày đã qua / hôm nay thì không phải chờ: duyệt xong tính ngay, vẫn theo cùng cách hợp nhất.
⇒ Hệ quả: đơn đăng ký trước không phải số công được cấp sẵn — nhân viên đi làm bình thường trong khoảng đã khai thì không được cộng thêm gì. (Chốt 19/08/2026.)
Khai trước 20/08 · 09:00–11:00, duyệt 18/08 → công ngày 20/08 chưa đổi.
· 20/08 chấm 07:00–09:00 + 11:00–15:00 (6g) → cộng thêm 2g → 8g → đủ công.
· 20/08 chấm 07:00–15:00 (8g, phủ trùm khoảng đã khai) → không cộng thêm, vẫn 8g
BR-GTK-13 Duyệt & bằng chứng Đơn Khác đi theo luồng duyệt chung: Quản lý trực tiếp + Nhân sự, song song, cần đủ 2 bên (BR-GT-13). Người duyệt thấy lý do + file đính kèm + dữ liệu chấm công gốc của ngày. Chỉ 1 bên duyệt → đơn vẫn Chờ duyệt, công chưa đổi
BR-GTK-15 ✦ Đơn Khác KHÔNG đóng được phiên hở mốc Ngày còn phiên chưa chấm ra (BR-CTP-04): đơn Khác Đã duyệt chỉ được cộng khoảng giờ của chính nó vào Tổng giờ công, không được lấy Giờ ra của đơn làm mốc đóng phiên hở. Ngày giữ nhãn Quên chấm công, công —* (chưa chốt, không phải 0) cho tới khi phiên hở được đóng bằng đơn Quên chấm công *đã duyệt (BR-GT-11). Lý do: khoảng giữa giờ chấm vào thực tế và giờ vào khai trong đơn không có căn cứ nào — đóng phiên bằng đơn Khác là cộng khống.
⚠ Cần BA xác nhận — xem Điểm cần chốt trước khi test mục 2. (Đề xuất 19/08/2026.)
Phiên 08:00 → — + đơn Khác 10:00–17:30 Đã duyệt → Tổng giờ 7g30 nhưng công —, nhãn Quên chấm công (K-17)
BR-GTK-16 ✦ Nắn về đúng loại khi ngày có phiên hở Thiếu 1 mốc là địa hạt của Quên chấm công (BR-GT-11); Khác chỉ dùng khi thiếu cả 2 mốc hoặc sai dữ liệu (§H.3 case #5). Vì vậy hệ thống cảnh báo tại form và tại màn duyệt (FR-GTK-12) nhưng không chặn gửi; người duyệt có quyền từ chối kèm lý do Đã có loại đơn phù hợp theo BR-GTK-02. VP quên chấm ra, khai Khác 08:00–17:30 để tự đóng phiên → duyệt từ chối (K-20)
BR-GTK-17 ✦ Nhiều loại đơn khác nhau trong cùng một ngày Cho phép 1 đơn Quên chấm công + 1 đơn Khác cùng ngày. Thứ tự tính công: (1) đóng phiên hở bằng giờ ra của đơn Quên chấm công đã duyệt (BR-CTP-04) → (2) union khoảng của đơn Khác với các phiên đã đóng (BR-GTK-06) → (3) chốt trạng thái ngày (BR-GTK-12), trần 1 công (BR-GTK-07).
BR-GTK-09 chỉ chặn chồng lấn giữa hai đơn Khác; chồng lấn giữa Khác và loại đơn khác → không chặn tạo đơn, chỉ không cộng trùng.
Phiên 08:00 → —, duyệt Quên chấm công bù 17:30 + Khác 10:00–17:30 → tổng 9g30, đơn Khác cộng thêm 0 phút (K-18)

H.6 Đối chiếu giờ khai với giờ chấm thực tế

Nguyên tắc gốc là BR-GTK-06 — hợp nhất (union), phần trùng chỉ tính MỘT lần. Bảng dưới liệt kê 9 dạng lệch giờ giữa khoảng khai trong đơn Khác và bản ghi chấm công thực tế của ngày — đây là danh mục đội test phải phủ đủ khi ghép đơn với dữ liệu chấm công.

Dạng Phiên đã chấm trong ngày Đơn Khác khai Xử lý khi đơn Đã duyệt Luật · Ca test
L-1 — Rời hẳn, không giao nhau 07:00–11:30 (đã đóng) 13:00–15:00 Cộng thêm đủ 2g00 → tổng 6g30. Không có phần trùng BR-GTK-06 · K-01
L-2 — Chồng một phần 07:00–11:30 10:00–13:00 Union 07:00–13:00 = 6g00 (không phải 4g30 + 3g00 = 7g30). Form hiện cảnh báo vàng nhưng vẫn cho gửi BR-GTK-06 · FR-GTK-08 · K-04
L-3 — Đơn bao trùm phiên 08:00–10:00 07:00–17:00 Lấy trọn khoảng của đơn = 10g00; phần vượt định mức không thành Tăng ca, trần 1 công BR-GTK-06 · BR-GTK-07
L-4 — Đơn nằm gọn bên trong phiên 07:00–17:00 09:00–11:00 Cộng thêm 0 phút — công ngày không đổi; chi tiết ngày vẫn hiện dòng phụ Giải trình khác để lưu vết BR-GTK-06 · FR-GTK-09 · K-21
L-5 — Ngày trắng, không bản ghi nào (không có) 07:00–15:00 Ngày thoát nhãn Vắng, tính công theo đơn, không phạt vắng không phép BR-GTK-11 · K-05
L-6 — Ngày đã Đủ công 07:00–16:00 = 8g 16:00–18:00 Tổng 10g nhưng vẫn 1 công; muốn tính làm thêm phải đi đơn Tăng ca BR-GTK-07 · K-06
L-7 — Khai ngoài ca chuẩn (chỉ VP) VP 08:00–17:30 06:00–09:00 VP: cắt phần trước 08:00, chỉ 08:00–09:00 vào công. CT: không cắt, cộng đủ BR-GTK-10 · K-12 · K-12b
L-8 — Khai sớm hơn giờ chấm vào thực tế CT 08:00–17:00 06:00–08:00 CT cộng thêm 2g00 (không có khung giờ). ⚠ Rủi ro khai khống — ✧ từ 27/08/2026 file đính kèm không còn bắt buộc (BR-GTK-14), nên chốt chặn duy nhất là người duyệt đối chiếu bản ghi chấm công gốc (FR-GTK-10). VP cùng khoảng → bị cắt hết BR-GTK-06 · BR-GTK-10 · BR-GTK-14 · K-16
L-9 ✦ — Phiên hở mốc (chỉ có giờ vào) 08:00 → — 10:00–17:30 Đơn không đóng phiên hở: giờ của đơn (7g30) vào Tổng giờ, nhưng ngày giữ nhãn Quên chấm công, công —* cho tới khi có đơn Quên chấm công bù mốc ra. Form + màn duyệt đều *cảnh báo BR-GTK-15 · BR-GTK-16 · FR-GTK-12 · K-17…K-20

L-9 — vì sao phải tách thành luật riêng

Đây là chỗ hai luật đá nhau nếu không chốt: BR-CTP-04 nói phiên hở không được tính giờ và ngày chưa chốt được công; BR-GTK-06 lại coi đơn Khác đã duyệt là một phiên hợp lệ. Phiên 08:00 → — không có độ dài nên không union được với khoảng của đơn.

Ví dụ VP — chấm vào 08:00, quên chấm ra, đơn Khác 10:00–17:30 (định mức 8 giờ làm thực sau khi trừ nghỉ trưa — BR-CC-04):

Kịch bản Tổng giờ Trạng thái ngày Công
Chỉ đơn Khác 10:00–17:30 Đã duyệt 7g30 (≈ 6g30 sau nghỉ trưa) Quên chấm công — chưa chốt —
Chỉ đơn Quên chấm công bù giờ ra 17:30 Đã duyệt 9g30 (≈ 8g30 sau nghỉ trưa) Đủ công 1
Cả hai đơn Đã duyệt 9g30 — đơn Khác nằm gọn bên trong, cộng thêm 0 phút (L-4) Đủ công 1

⇒ Đúng loại đơn cho tình huống này là Quên chấm công, không phải Khác — xem BR-GTK-16.

H.7 Bộ ca kiểm thử gợi ý

# Bối cảnh ngày Đơn Khác khai Trạng thái đơn Kết quả mong đợi
K-01 CT — phiên 07:00–11:30 + 13:00–15:00 = 6g30 15:00–16:30 Đã duyệt Tổng 8g00 → Đủ công, 1 công
K-02 Như trên 15:00–16:30 Chờ duyệt Vẫn 6g30 → Thiếu giờ công, công 0,8
K-03 Như trên 15:00–16:30 Từ chối Giữ 6g30, Thiếu giờ công (BR-GTK-08)
K-04 CT — phiên 07:00–11:30 10:00–13:00 Đã duyệt Hợp nhất 07:00–13:00 = 6g00 (không phải 7g30) — BR-GTK-06
K-05 CT — không có bản ghi nào 07:00–15:00 Đã duyệt Ngày thoát Vắng, tổng 8g → Đủ công, không phạt — BR-GTK-11
K-06 CT — ngày đã Đủ công 8g 16:00–18:00 Đã duyệt Tổng 10g nhưng trần 1 công — BR-GTK-07
K-07 Bất kỳ Giờ ra 14:00 ≤ giờ vào 14:00 — Chặn gửi — BR-GTK-04
K-08 ✦ Hôm nay 19/08 Ngày 20/08 (tương lai) Đã duyệt Cho — khai báo trước — BR-GT-03 · BR-GTK-05
K-09 ✦ Hôm nay 19/08 Ngày 12/08 (= D+7) Đã duyệt Cho — còn đúng hạn — BR-GT-18
K-09b ✦ Hôm nay 19/08 Ngày 11/08 (= D+8) — Chặn Đã quá hạn giải trình — quá 7 ngày — BR-GT-18
K-09c ✦ Mở form 23:58 ngày D+7 Bấm Gửi lúc 00:01 ngày D+8 — Chặn — xét theo thời điểm gửi — BR-GT-05
K-10 CT — đã có đơn Khác 08:00–10:00 Đơn thứ hai 09:00–11:00 — Chặn (chồng lấn) — BR-GTK-09
K-11 CT — đã có đơn Khác 08:00–10:00 Đơn thứ hai 14:00–16:00 Đã duyệt Cho, cộng đủ 2 khoảng
K-12 ✦ CT 05:00–08:00 Đã duyệt Cộng đủ 3 giờ — CT không có khung giờ — BR-GTK-10
K-12b ✦ VP 06:00–09:00 Đã duyệt Chỉ 08:00–09:00 vào công — BR-GTK-10
K-13 VP — nhân viên đi muộn 08:40 Khai Khác 08:00–08:40 để né phạt — Người duyệt từ chối, hướng sang Đi muộn / Về sớm — BR-GTK-02
K-14 Bất kỳ Lý do ok (2 ký tự) — Khoá nút Gửi — FR-GTK-05
K-15 CT — phiên chiều thiếu cả 2 mốc 13:00–17:00 Đã duyệt Ngày thoát Quên chấm công, tính đủ giờ — case #5 §H.3
K-16 ✦ CT — phiên 08:00–17:00 (9g, đã đóng) 06:00–08:00 — khai sớm hơn giờ chấm vào Đã duyệt Union 06:00–17:00 = 11g, trần 1 công. Cùng khoảng ở VP → cắt hết, cộng 0 phút — L-8 §H.6 · BR-GTK-10
K-17 ✦ CT — phiên 08:00 → — (quên chấm ra) 10:00–17:30 Đã duyệt Tổng giờ hiện 7g30 nhưng ngày vẫn Quên chấm công, công — — BR-GTK-15
K-18 ✦ Ngày ở K-17 Gửi thêm đơn Quên chấm công bù giờ ra 17:30 Cả 2 Đã duyệt Phiên đóng 08:00–17:30 = 9g30; đơn Khác nằm gọn bên trong → cộng thêm 0 phút; ≥ 8g → Đủ công, 1 công — BR-GTK-17
K-19 ✦ CT — phiên 13:00 → — Mở form, chọn loại Khác — Hiện cảnh báo vàng + nút Chuyển sang Quên chấm công; nút Gửi không bị khoá — FR-GTK-12
K-20 ✦ VP — phiên 08:00 → — Khai Khác 08:00–17:30 để tự đóng phiên Đã duyệt Phiên vẫn hở, công —. Người duyệt được nhắc từ chối, hướng sang Quên chấm công — BR-GTK-15 · BR-GTK-16 · BR-GTK-02
K-21 ✦ CT — phiên 07:00–17:00 09:00–11:00 — nằm gọn bên trong Đã duyệt Cộng thêm 0 phút, công không đổi; chi tiết ngày vẫn hiện dòng phụ Giải trình khác — L-4 §H.6

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

  1. ✧ Đồng bộ ngược lên SRS — bốn nhóm nội dung trong SRS phải sửa theo bản 0.3 này (phần lớn đã sửa trong cùng phiên 19/08/2026, giữ mục này để soát lại khi duyệt):
    · SRS Chấm công §1.2 · §4.1 — Công trường bỏ ca chuẩn 07:00–16:30, chuyển sang giờ linh hoạt cả ngày (BR-CC-01 · BR-CC-03).
    · SRS Chấm công §4.1 · §4.2 · §4.4 · §7 — định mức Công trường 9,5 giờ → 8 giờ trên tổng các phiên; dinh_muc_phut CT 570 → 480.
    · SRS Chấm công §4.6 — 7 loại đơn → 8 loại (thêm Khác).
    · ✔ SRS Trạng thái & Giải trình — ĐÃ sửa 20/08/2026 (bản SRS 1.2) và gộp NỐT 27/08/2026 (bản SRS 1.3): (a) BR-GT-09 · BR-GT-12 · FR-GT-11 đổi sang 7 ngày (BR-GT-18) và có hẳn mục §3.1.1 Hạn giải trình; (b) §4.6.3 đổi định mức Văn phòng 8g30 → 8 giờ làm thực (BR-CC-04), ví dụ đã tính lại.
      Kèm theo, bản SRS 1.2 kéo trọn hai nhóm luật mới của bản 0.3 vào tài liệu đó: Nhóm H → §3.6 Loại Khác; Nhóm G → §4.7 Phiên chấm công khối Công trường. Ba điểm hở phát sinh do ghép hai tài liệu (giới hạn 2 phiên vs phiên theo vị trí · dùng Khác cứu công ngoài phạm vi · trừ nghỉ trưa cho ngày VP nhiều phiên) nằm ở §6.4 của SRS — cần BA chốt.
      ✦ Bản SRS 1.3 (27/08/2026) gộp NỐT phần còn lại của bản 0.3 này: Nhóm E · Nhóm F → §3.7 (BR-GT-10 tăng ca · BR-GT-11 bù 1 mốc · BR-GT-12 lý do/file · BR-GT-14 đơn trùng · BR-GT-17 thiếu giờ công · BR-GT-20 duyệt muộn & kỳ lương — kèm bảng đối chiếu trùng mã BR-GT-09 → BR-GT-12 giữa hai tài liệu); Nhóm A · Nhóm C → §4.7.1 *(BR-CC-01 · BR-CC-03 bỏ khung giờ Công trường + bảng bốn luật cũ bị thay)*; FR-CTP-08 · FR-CTP-10 · FR-CTP-12 → §4.7.4 (ba sheet thống kê tháng & màn thống kê HR). Bộ ca mới: TC-PCT-15…18 và §5.9 TC-LC-01…07.
    · SRS Chấm công §1.2 · §4.1 · §4.4 · §7 — khối
    Văn phòng: bỏ cặp số cứng 1 giờ nghỉ trưa / định mức 8,5 giờ, chuyển sang nghỉ trưa do Nhân sự set + đủ 8 giờ làm thực (BR-CC-04*). (Đã sửa trong phiên 19/08/2026.)*
  2. ✦ Đơn Khác có được đóng phiên hở mốc không — BR-GTK-15 đang đề xuất theo hướng chặt: không cho, ngày giữ nhãn Quên chấm công và công — cho tới khi có đơn Quên chấm công bù mốc ra (ca K-17 · K-20). Phương án thay thế (gọn cho nhân viên): lấy Giờ ra của đơn Khác làm mốc đóng phiên hở — khi đó K-17 thành union 08:00–17:30 = 9g30 → 1 công ngay. Đánh đổi: cộng khống khoảng 08:00–10:00 vốn không có căn cứ nào ngoài mốc chấm vào. Cần BA chốt trước khi test — chốt xong thì sửa lại BR-GTK-15 và hai ca nói trên.

Các điểm đã chốt được gỡ khỏi danh sách này; luật chốt nằm ngay ở dòng BR / FR tương ứng. Danh sách còn 2 mục — mục 1 là việc phải làm, mục 2 là câu hỏi nghiệp vụ chờ BA chốt — từ 10 mục lúc mở bản 0.3.