Skip to content

Time and Attendance — Technical Map

Route / page map

SurfaceRoute familyMain page / components
Work shiftROUTE_SETTING_WORK_SHIFT*ShiftSetting.tsx, WorkShiftTable.tsx, WorkShiftForm.tsx
Shift groupROUTE_SETTING_SHIFT_GROUP*ShiftSetting.tsx, ShiftGroupTable.tsx, ShiftGroupForm.tsx
HolidayROUTE_SETTING_HOLIDAY*HolidaySetting.tsx, HolidayTable.tsx, HolidayForm.tsx
Annual leaveROUTE_ANNUAL_LEAVEAnnualLeave.tsx
Shift pageROUTE_SETTING_SHIFT_PAGEShiftPage.tsx
ApproverROUTE_SETTING_APPROVER_*ApproverPage.tsx, SettingApprover* wrappers

Data model map

SurfaceModel chính
Work shifttime_slot_template
Shift grouptime_slot_group, time_slot_group_shift, time_slot_group_user
Holidayholiday, holiday_view
Approverrequest_approver
Annual leaveapp_setting.app_settings.request_leave
Shift pageapp_setting.app_settings.working_page_money

Boundary với module khác

ModuleBoundary kỹ thuật
timekeepingconsume holiday/shift config và approver outcome
hrmowner thật của normalized time config tables
settings global singletonowner của annual leave và shift page

Rủi ro / Findings kỹ thuật

MứcFinding
CaoRoute-level permission chủ yếu khóa ITLeader/ITStaff, nhưng component runtime ở work shift / holiday vẫn allow thêm HRLeader.
CaoAnnualLeave.tsx đang format “tháng reset” bằng setDate, nên semantics month/date bị lệch.
CaoShiftPage.tsx dùng loadingisEditing không nhất quán; handleCancel() set loading nhưng không reset rõ.
Trung bìnhholiday update path là delete+insert, không phải update canonical.
Trung bìnhHolidayTable có dấu hiệu dùng field id không ổn định so với shape query holiday_view.