Staff — Góc nhìn end-user
Hai vai: nhân viên (staff) xem lịch của mình; admin xếp ca và duyệt nghỉ.
A. Nhân viên (staff)
1. Staff Home — "My Calendar"
Trang
/staff/home. Tiêu đề "My Calendar" ở trên-trái.
Khu hành động trên-phải, theo thứ tự trái→phải: Timezone Selector (tùy chọn) → Calendar (tùy chọn) → Timetable (tùy chọn) → My Profile (luôn có).
2. Timetable — thời khóa biểu
Trang
/staff/timetable. Dùng một bộ điều khiển ngày/view duy nhất (do header của SyncfusionScheduleComponentsở hữu).
- Prev / Next / Today để đổi khoảng ngày; đổi view (ngày/tuần…).
- Nhãn khoảng ngày luôn khớp với lưới sự kiện đang hiển thị.
Lưu ý UX: trang không render hai bộ điều khiển ngày trùng nhau — chỉ một, để tránh rối.
3. Availability — khai báo lịch rảnh
Availability cho biết staff có thể được xếp làm lúc nào, không phải Shift hoặc Leave.
- Mỗi range áp dụng trong một khoảng ngày và chứa time slot theo từng thứ.
- Các slot trong mỗi thứ sort theo giờ bắt đầu tăng dần.
- Availability được đọc khi policy kiểm tra Open Leave; tạo Leave không sửa Availability.
Ví dụ thực tế: Hoa khai Thứ 3
09:00–17:00. → Admin biết khung giờ xếp được. → Chưa có Shift nào cho tới khi admin xếp lịch.
4. Xin nghỉ phép (Leave)
Staff mở Leave Request hoặc chọn Create Leave trên published shift trong My Calendar.
Shifts: chọn published shift; Leave Time mặc định theo ca và được chỉnh trong phạm vi ca.- Shifts filter mặc định từ ngày hiện tại của BU đến Thứ 6 kế tiếp.
Open: tạo leave không gắn shift; không được giao published shift cùng ngày.- Staff chỉ chọn current/future date và chỉ thấy trường Reason.
- Từ My Calendar, shift và employee được chọn sẵn, khóa; không hiện tab Open.
- Review hiển thị record count, tổng thời lượng và candidate trước khi Save.
Ví dụ thực tế: Minh có ca
09:00–17:00, cần nghỉ13:00–15:00. → Chọn Create Leave trên ca. → Composer khóa ca, cho sửa Leave Time trong khoảng ca rồi Review & Save.
5. Open Shifts — nhận ca mở
Staff thấy các Open Shift thuộc site/org của mình trong khoảng ngày đang xem.
- Chỉ hiện ca đã publish và chưa có
EmployeeId. - Staff claim ca để hệ thống gán ca đó vào lịch của họ.
- Nếu ca vừa được người khác nhận, claim bị từ chối và danh sách cần refresh.
6. Hồ sơ y tế (Staff Medical)
Staff khai báo các nhóm trường y tế trên hồ sơ của mình; BU quyết định nhóm nào hiện và có bắt buộc.
- Chỉ hiện nhóm được BU bật (
Enabled = true): Dietary / Neurotypes/Other Conditions / Additional Information. - Nhóm bắt buộc (
Required = true) phải có câu trả lời trước khi submit. - Nhóm ẩn vẫn giữ dữ liệu đã lưu; BU bật lại thì hiện trở lại.
Ví dụ thực tế: Hoa thuộc BU bật Dietary bắt buộc. → Form chỉ hỏi nhóm BU quan tâm. → Hoa thấy Dietary và phải điền; không thấy Neurotypes hay Additional Information.
B. Admin
1. Roster Weekly Planner — xếp ca theo tuần
Admin Portal → Staff → Roster → Weekly Planner. Màn này chạy được như Tuke route độc lập hoặc embed trong admin host bằng
app_type=aoadmin.
- Mỗi nhân viên là một dòng, sắp theo tên tăng dần.
- Một người chỉ một dòng kể cả khi có bản ghi nhiều BU (dedupe theo
enterpriseUserId, hoặcemployeeIdnếu thiếu). - Chỉ hiện absence đã approved (approved-only).
- Ca ngoài org đang chọn vẫn hiện làm ngữ cảnh, nhưng bị làm mờ và không mở form edit.
- Admin có thể lưu/publish ca chưa gán staff; ca publish sẽ hiện trong vùng Open Shifts.
2. Tạo Leave cho staff
Admin có thể mở cùng leave composer từ:
Staff Profile → Availability → Leave →
+New Leave: khóa staff đang xem.Weekly Planner → published shift →
Create Leave: khóa staff và shift.Leave page →
+New Leave: chọn Staff trước khi submit.Composer dùng một
Date, Start/End Time bắt buộc; không có date range hoặcAll Day.Admin thấy Reason, Leave Tracking Code và Notes; lọc shift past/current/future.
Tab Open phụ thuộc BU restriction.
Ví dụ thực tế: Admin mở
+New Leavetrong profile của Bình. → Tránh ghi nhầm người. → Bình được khóa; admin chọn Shifts/Open theo policy rồi Review & Save.
3. Thấy nghỉ phép trùng ca khi xếp
Popup Create/Edit Shift: dưới Time Range có trường
Leaveread-only.
- Hiện khi nhân viên có leave giao với khoảng ca (xét theo interval thời gian, không phải chỉ trùng ngày).
- Gồm ngày/giờ leave, tracking code và Notes (không rỗng) cho admin; ẩn khi không giao.
→ Admin tránh xếp ca vào lúc nhân viên đang nghỉ.
4. Duyệt nghỉ (Approve Leave)
Drawer approve ở Staff Roster Leave.
- Chỉ hiện Leave tracking codes.
- Giữ vòng chuyển trạng thái duyệt; gắn tracking code đã chọn theo hành vi approve hiện có.
5. Leave Manager — trang quản lý nghỉ phép
Admin Portal → Staff → Leave. Tiêu đề trang "Leave Manager"; nhãn sidebar giữ Leave.
- Filters: Staff (multi-select, default mọi staff có quyền), Status (multi-select
Submitted/Approved/Declined, default cả ba), Date (default từ ngày hiện tại của BU, không có upper bound). - Đổi filter reload list theo BU với
employeeIds,statusIds,startDate,endDate. - Cột cố định theo thứ tự: Staff, Date, Reason, Notes (Admin), Tracking Code, Status, Action; không có
All Day,Start Date,End Date. Notes (Admin)chỉ hiện cho admin có quyền.- Toolbar
+New Leavemở shared composer một ngày. - Action theo trạng thái:
Submitted→ Approve / Decline / Delete;Approved/Declined→ Edit / Delete. - Approve được sửa nội dung trước khi chuyển
Approved; Decline cần confirmation; Delete cần confirmation và refresh list. - Ordering cố định: tăng dần theo Date → Start Time → Staff Name; không có sort theo cột.
Ví dụ thực tế: Admin chọn 2 staff và status
Submitted. → List chỉ còn đơnSubmittedcủa 2 staff. → Sắp Date → Start Time → tên, bất kể bấm header cột.
Tóm lại
| Vai | Làm gì |
|---|---|
| Staff | Xem My Calendar / Timetable, khai báo availability, xin nghỉ, claim Open Shifts. |
| Admin | Xếp roster, tạo/duyệt leave, publish Open Shifts và thấy leave trùng ca. |
Tiếp theo: Khái niệm & kiến trúc.