@feedmepos/mf-hrm-portal 2.3.0-dev → 2.3.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/{ApprovalCodeList-cG0zmQVJ.js → ApprovalCodeList-SjyWZghY.js} +2 -2
  2. package/dist/{AuditLogList-BTifJhO1.js → AuditLogList-aTI3QeO0.js} +3 -3
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang--JTV7non.js} +2 -2
  4. package/dist/{EmployeeList-DzcMtxJ3.js → EmployeeList-D2Q_2ZE0.js} +4 -4
  5. package/dist/{GrantUserList-D5b7tJ8Y.js → GrantUserList-6YXLPuHR.js} +3 -3
  6. package/dist/{Main-DFwdAWqn.js → Main-B-a6F9g8.js} +5 -5
  7. package/dist/{Main-B2r59IOW.js → Main-CFIWlIaC.js} +2 -2
  8. package/dist/{Main-DkLBemi7.js → Main-dSqOeBRJ.js} +9 -9
  9. package/dist/{PermissionSetList-B80hrfMW.js → PermissionSetList-DxkaPCMs.js} +5 -5
  10. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DnKckKZ0.js} +1165 -1165
  11. package/dist/{RoleList-DHO4JRKF.js → RoleList-DQZ_w5uM.js} +7 -7
  12. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Dr6QruG6.js +470 -0
  13. package/dist/{ScheduleGeneralPage-WlBM8bxV.js → ScheduleGeneralPage-CvskrXcV.js} +273 -236
  14. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-C4On5sVD.js +2157 -0
  15. package/dist/SchedulePage-CW-K836l.js +18248 -0
  16. package/dist/{SchedulePositionPage-C0hrO11d.js → SchedulePositionPage-BGrZBU3g.js} +67 -66
  17. package/dist/{TeamMemberList-CgFWLRBM.js → TeamMemberList-BiTHVJwE.js} +6 -6
  18. package/dist/{TimesheetList-Dp40G-0I.js → TimesheetList-CUkYacGW.js} +5 -5
  19. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BFjrMhUG.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-B1Y587O-.js} +2 -2
  20. package/dist/{app-CmBSTvaI.js → app-CAKCDrbJ.js} +657 -577
  21. package/dist/app.js +1 -1
  22. package/dist/{dayjs.min-CfL2DQ3d.js → dayjs.min-CZ8QYRoc.js} +1 -1
  23. package/dist/{employee-DQcHjoij.js → employee-D56eWEFe.js} +28 -27
  24. package/dist/{iteration-BlavheWG.js → iteration-BVJdyLNq.js} +1 -1
  25. package/dist/{lodash-QerqayrJ.js → lodash-BcIRkQPW.js} +1 -1
  26. package/dist/{role-RM2YLO7n.js → role-B-eZDaBX.js} +1 -1
  27. package/dist/{rule-DjlvYIuP.js → rule-D6AIfx8b.js} +2 -2
  28. package/dist/src/api/schedule/index.d.ts +6 -4
  29. package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
  30. package/dist/src/composables/useMessage.d.ts +2 -8
  31. package/dist/src/types/employee.d.ts +1 -0
  32. package/dist/src/types/schedule.d.ts +1 -1
  33. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +28 -0
  34. package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +19 -0
  35. package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +38 -0
  36. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
  37. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +38 -0
  38. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +25 -0
  39. package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
  40. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +39 -0
  41. package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
  42. package/dist/src/views/scheduling/components/{ScheduleOnboardingComplete.vue.d.ts → ScheduleCompletionDialog.vue.d.ts} +8 -3
  43. package/dist/src/views/scheduling/components/{ScheduleOpenShiftCardMenu.vue.d.ts → ScheduleContextMenu.vue.d.ts} +10 -3
  44. package/dist/src/views/scheduling/components/{SchedulePdfPreview.vue.d.ts → ScheduleExportPreview.vue.d.ts} +1 -0
  45. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +10 -0
  46. package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
  47. package/dist/src/views/scheduling/components/{ScheduleExportDoneDialog.vue.d.ts → ScheduleOnboardingClosedDayConfirm.vue.d.ts} +2 -2
  48. package/dist/src/views/scheduling/components/{ScheduleAutoScheduleDetailsModal.vue.d.ts → ScheduleOnboardingDemandDays.vue.d.ts} +2 -2
  49. package/dist/src/views/scheduling/components/{ScheduleEmployeeMenu.vue.d.ts → ScheduleOnboardingDemandFooter.vue.d.ts} +2 -2
  50. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
  51. package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
  52. package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
  53. package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
  54. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
  55. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
  56. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +7 -1
  57. package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
  58. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +2 -2
  59. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +4 -4
  60. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +2 -2
  61. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +3 -3
  62. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +1 -1
  63. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +1 -1
  64. package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +7 -1
  65. package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +7 -0
  66. package/dist/src/views/scheduling/composables/schedule-cost.d.ts +19 -0
  67. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +11 -0
  68. package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
  69. package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
  70. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +1 -4
  71. package/dist/src/views/scheduling/composables/scheduleAutoSolver.d.ts +23 -0
  72. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +14 -13
  73. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +3 -1
  74. package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
  75. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +4 -114
  76. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +18 -2
  77. package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +3 -1
  78. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +6 -1
  79. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +1 -1
  80. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +4 -19
  81. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +12 -2
  82. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +11 -0
  83. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
  84. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +26 -0
  85. package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
  86. package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
  87. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +9 -0
  88. package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +6 -3
  89. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +25 -0
  90. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +18 -0
  91. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +19 -11
  92. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +3 -6
  93. package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
  94. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
  95. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +187 -0
  96. package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
  97. package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
  98. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +64 -487
  99. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
  100. package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
  101. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +18 -0
  102. package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
  103. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +10 -3
  104. package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
  105. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +3 -1
  106. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +3 -1
  107. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +7 -1
  108. package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
  109. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +6 -0
  110. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +2 -24
  111. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +6 -1
  112. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +62 -0
  113. package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
  114. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +10 -5
  115. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +4 -1
  116. package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +6 -4
  117. package/dist/src/views/scheduling/country-rules/index.d.ts +24 -0
  118. package/dist/src/views/scheduling/data.d.ts +11 -6
  119. package/dist/src/views/scheduling/locales/index.d.ts +80 -0
  120. package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
  121. package/dist/src/views/scheduling/schedule-state.d.ts +134 -110
  122. package/dist/src/views/scheduling/schedule-store.d.ts +6 -5
  123. package/dist/src/views/scheduling/types.d.ts +5 -3
  124. package/dist/style.css +1 -1
  125. package/dist/tsconfig.app.tsbuildinfo +1 -1
  126. package/dist/{useReportPermissions-Bl6Br79r.js → useReportPermissions-DHA0jrIr.js} +3 -3
  127. package/package.json +1 -1
  128. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +0 -452
  129. package/dist/SchedulePage-Nm0krGVU.js +0 -17056
  130. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DTDXir_7.js +0 -1150
  131. package/dist/src/components/layout/AppSidebar.vue.d.ts +0 -2
  132. package/dist/src/components/layout/withShell.d.ts +0 -14
  133. package/dist/src/views/scheduling/components/ScheduleShiftCardMenu.vue.d.ts +0 -12
  134. package/dist/src/views/scheduling/components/ScheduleTourAllSet.vue.d.ts +0 -6
  135. package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +0 -33
  136. package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -17
  137. package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
@@ -49,6 +49,7 @@ export declare const i18nMessages: {
49
49
  status: {
50
50
  draft: string;
51
51
  published: string;
52
+ locked: string;
52
53
  };
53
54
  staffRail: {
54
55
  title: string;
@@ -149,6 +150,25 @@ export declare const i18nMessages: {
149
150
  thisWeek: string;
150
151
  nextWeek: string;
151
152
  };
153
+ common: {
154
+ anyPosition: string;
155
+ none: string;
156
+ leaveAsIs: string;
157
+ monthly: string;
158
+ hourly: string;
159
+ everyone: string;
160
+ fullTime: string;
161
+ partTime: string;
162
+ noPosition: string;
163
+ noPay: string;
164
+ cancel: string;
165
+ done: string;
166
+ tryAgain: string;
167
+ };
168
+ positionModal: {
169
+ editTitle: string;
170
+ addTitle: string;
171
+ };
152
172
  comingSoon: string;
153
173
  };
154
174
  };
@@ -200,6 +220,7 @@ export declare const i18nMessages: {
200
220
  status: {
201
221
  draft: string;
202
222
  published: string;
223
+ locked: string;
203
224
  };
204
225
  staffRail: {
205
226
  title: string;
@@ -300,6 +321,25 @@ export declare const i18nMessages: {
300
321
  thisWeek: string;
301
322
  nextWeek: string;
302
323
  };
324
+ common: {
325
+ anyPosition: string;
326
+ none: string;
327
+ leaveAsIs: string;
328
+ monthly: string;
329
+ hourly: string;
330
+ everyone: string;
331
+ fullTime: string;
332
+ partTime: string;
333
+ noPosition: string;
334
+ noPay: string;
335
+ cancel: string;
336
+ done: string;
337
+ tryAgain: string;
338
+ };
339
+ positionModal: {
340
+ editTitle: string;
341
+ addTitle: string;
342
+ };
303
343
  comingSoon: string;
304
344
  };
305
345
  };
@@ -351,6 +391,7 @@ export declare const i18nMessages: {
351
391
  status: {
352
392
  draft: string;
353
393
  published: string;
394
+ locked: string;
354
395
  };
355
396
  staffRail: {
356
397
  title: string;
@@ -451,6 +492,25 @@ export declare const i18nMessages: {
451
492
  thisWeek: string;
452
493
  nextWeek: string;
453
494
  };
495
+ common: {
496
+ anyPosition: string;
497
+ none: string;
498
+ leaveAsIs: string;
499
+ monthly: string;
500
+ hourly: string;
501
+ everyone: string;
502
+ fullTime: string;
503
+ partTime: string;
504
+ noPosition: string;
505
+ noPay: string;
506
+ cancel: string;
507
+ done: string;
508
+ tryAgain: string;
509
+ };
510
+ positionModal: {
511
+ editTitle: string;
512
+ addTitle: string;
513
+ };
454
514
  comingSoon: string;
455
515
  };
456
516
  };
@@ -502,6 +562,7 @@ export declare const i18nMessages: {
502
562
  status: {
503
563
  draft: string;
504
564
  published: string;
565
+ locked: string;
505
566
  };
506
567
  staffRail: {
507
568
  title: string;
@@ -602,6 +663,25 @@ export declare const i18nMessages: {
602
663
  thisWeek: string;
603
664
  nextWeek: string;
604
665
  };
666
+ common: {
667
+ anyPosition: string;
668
+ none: string;
669
+ leaveAsIs: string;
670
+ monthly: string;
671
+ hourly: string;
672
+ everyone: string;
673
+ fullTime: string;
674
+ partTime: string;
675
+ noPosition: string;
676
+ noPay: string;
677
+ cancel: string;
678
+ done: string;
679
+ tryAgain: string;
680
+ };
681
+ positionModal: {
682
+ editTitle: string;
683
+ addTitle: string;
684
+ };
605
685
  comingSoon: string;
606
686
  };
607
687
  };
@@ -0,0 +1,7 @@
1
+ /** Shared scheduling limits and UI timing values. Keeping these named makes the product
2
+ * trade-offs visible when the API or board behavior changes. */
3
+ export declare const EMPLOYEE_PAGE_SIZE = 500;
4
+ export declare const MAX_BUSINESS_EMPLOYEE_PAGES = 10;
5
+ export declare const PREFETCH_WEEKS = 6;
6
+ export declare const RECENT_SAVE_FLASH_MS = 1500;
7
+ export declare const EMPLOYEE_ID_BASE = 1000000;
@@ -9,40 +9,6 @@ import type { CompGroupMeta, ExistingStaffCandidate, ShiftTemplate } from './typ
9
9
  */
10
10
  export declare const scheduleState: {
11
11
  payload: import("vue").ShallowRef<{
12
- timeOff: {
13
- type: "OFF_DAY" | "LEAVE";
14
- status: "PENDING" | "APPROVED" | "REJECTED" | "CANCELLED";
15
- id: string;
16
- employeeId: string;
17
- leaveType: "UNPAID" | "ANNUAL" | "MEDICAL" | "EMERGENCY" | null;
18
- startDate: string;
19
- endDate: string;
20
- startPart: "FULL_DAY" | "AM" | "PM";
21
- endPart: "FULL_DAY" | "AM" | "PM";
22
- reason: string;
23
- attachmentIds: string[];
24
- requestedBy: string;
25
- requestedAt: string;
26
- approvedBy: string | null;
27
- approvedAt: string | null;
28
- approvalComment: string | null;
29
- }[];
30
- outlet: {
31
- id: string;
32
- name: string;
33
- };
34
- range: {
35
- from: string;
36
- to: string;
37
- };
38
- days: {
39
- date: string;
40
- id: string;
41
- isPublicHoliday: boolean;
42
- title: string;
43
- description: string;
44
- salesForecastOverride: number | null;
45
- }[];
46
12
  demands: {
47
13
  date: string | null;
48
14
  startTime: string;
@@ -55,7 +21,18 @@ export declare const scheduleState: {
55
21
  } | null;
56
22
  headcount: number;
57
23
  }[];
24
+ outlet: {
25
+ id: string;
26
+ name: string;
27
+ };
28
+ range: {
29
+ from: string;
30
+ to: string;
31
+ };
58
32
  settings: {
33
+ overtime: {
34
+ maxMonthlyHours: number;
35
+ };
59
36
  payRate: {
60
37
  NORMAL: {
61
38
  overtime: number;
@@ -73,12 +50,12 @@ export declare const scheduleState: {
73
50
  };
74
51
  restaurantProfile: {
75
52
  operatingHours: {
76
- dayOfWeek: number;
77
- closed: boolean;
78
53
  hours: {
79
54
  start: string;
80
55
  end: string;
81
56
  }[];
57
+ dayOfWeek: number;
58
+ closed: boolean;
82
59
  }[];
83
60
  };
84
61
  positions: {
@@ -129,8 +106,17 @@ export declare const scheduleState: {
129
106
  startTime: string;
130
107
  endTime: string;
131
108
  })[];
109
+ updatedAt: string;
110
+ }[];
111
+ days: {
112
+ date: string;
113
+ id: string;
114
+ updatedAt: string;
115
+ title: string;
116
+ description: string;
117
+ isPublicHoliday: boolean;
118
+ salesForecastOverride: number | null;
132
119
  }[];
133
- } | null, {
134
120
  timeOff: {
135
121
  type: "OFF_DAY" | "LEAVE";
136
122
  status: "PENDING" | "APPROVED" | "REJECTED" | "CANCELLED";
@@ -149,22 +135,7 @@ export declare const scheduleState: {
149
135
  approvedAt: string | null;
150
136
  approvalComment: string | null;
151
137
  }[];
152
- outlet: {
153
- id: string;
154
- name: string;
155
- };
156
- range: {
157
- from: string;
158
- to: string;
159
- };
160
- days: {
161
- date: string;
162
- id: string;
163
- isPublicHoliday: boolean;
164
- title: string;
165
- description: string;
166
- salesForecastOverride: number | null;
167
- }[];
138
+ } | null, {
168
139
  demands: {
169
140
  date: string | null;
170
141
  startTime: string;
@@ -177,7 +148,18 @@ export declare const scheduleState: {
177
148
  } | null;
178
149
  headcount: number;
179
150
  }[];
151
+ outlet: {
152
+ id: string;
153
+ name: string;
154
+ };
155
+ range: {
156
+ from: string;
157
+ to: string;
158
+ };
180
159
  settings: {
160
+ overtime: {
161
+ maxMonthlyHours: number;
162
+ };
181
163
  payRate: {
182
164
  NORMAL: {
183
165
  overtime: number;
@@ -195,12 +177,12 @@ export declare const scheduleState: {
195
177
  };
196
178
  restaurantProfile: {
197
179
  operatingHours: {
198
- dayOfWeek: number;
199
- closed: boolean;
200
180
  hours: {
201
181
  start: string;
202
182
  end: string;
203
183
  }[];
184
+ dayOfWeek: number;
185
+ closed: boolean;
204
186
  }[];
205
187
  };
206
188
  positions: {
@@ -251,6 +233,34 @@ export declare const scheduleState: {
251
233
  startTime: string;
252
234
  endTime: string;
253
235
  })[];
236
+ updatedAt: string;
237
+ }[];
238
+ days: {
239
+ date: string;
240
+ id: string;
241
+ updatedAt: string;
242
+ title: string;
243
+ description: string;
244
+ isPublicHoliday: boolean;
245
+ salesForecastOverride: number | null;
246
+ }[];
247
+ timeOff: {
248
+ type: "OFF_DAY" | "LEAVE";
249
+ status: "PENDING" | "APPROVED" | "REJECTED" | "CANCELLED";
250
+ id: string;
251
+ employeeId: string;
252
+ leaveType: "UNPAID" | "ANNUAL" | "MEDICAL" | "EMERGENCY" | null;
253
+ startDate: string;
254
+ endDate: string;
255
+ startPart: "FULL_DAY" | "AM" | "PM";
256
+ endPart: "FULL_DAY" | "AM" | "PM";
257
+ reason: string;
258
+ attachmentIds: string[];
259
+ requestedBy: string;
260
+ requestedAt: string;
261
+ approvedBy: string | null;
262
+ approvedAt: string | null;
263
+ approvalComment: string | null;
254
264
  }[];
255
265
  } | null>;
256
266
  loading: import("vue").Ref<boolean, boolean>;
@@ -355,40 +365,6 @@ export declare const scheduleState: {
355
365
  };
356
366
  };
357
367
  export declare const payload: import("vue").ShallowRef<{
358
- timeOff: {
359
- type: "OFF_DAY" | "LEAVE";
360
- status: "PENDING" | "APPROVED" | "REJECTED" | "CANCELLED";
361
- id: string;
362
- employeeId: string;
363
- leaveType: "UNPAID" | "ANNUAL" | "MEDICAL" | "EMERGENCY" | null;
364
- startDate: string;
365
- endDate: string;
366
- startPart: "FULL_DAY" | "AM" | "PM";
367
- endPart: "FULL_DAY" | "AM" | "PM";
368
- reason: string;
369
- attachmentIds: string[];
370
- requestedBy: string;
371
- requestedAt: string;
372
- approvedBy: string | null;
373
- approvedAt: string | null;
374
- approvalComment: string | null;
375
- }[];
376
- outlet: {
377
- id: string;
378
- name: string;
379
- };
380
- range: {
381
- from: string;
382
- to: string;
383
- };
384
- days: {
385
- date: string;
386
- id: string;
387
- isPublicHoliday: boolean;
388
- title: string;
389
- description: string;
390
- salesForecastOverride: number | null;
391
- }[];
392
368
  demands: {
393
369
  date: string | null;
394
370
  startTime: string;
@@ -401,7 +377,18 @@ export declare const payload: import("vue").ShallowRef<{
401
377
  } | null;
402
378
  headcount: number;
403
379
  }[];
380
+ outlet: {
381
+ id: string;
382
+ name: string;
383
+ };
384
+ range: {
385
+ from: string;
386
+ to: string;
387
+ };
404
388
  settings: {
389
+ overtime: {
390
+ maxMonthlyHours: number;
391
+ };
405
392
  payRate: {
406
393
  NORMAL: {
407
394
  overtime: number;
@@ -419,12 +406,12 @@ export declare const payload: import("vue").ShallowRef<{
419
406
  };
420
407
  restaurantProfile: {
421
408
  operatingHours: {
422
- dayOfWeek: number;
423
- closed: boolean;
424
409
  hours: {
425
410
  start: string;
426
411
  end: string;
427
412
  }[];
413
+ dayOfWeek: number;
414
+ closed: boolean;
428
415
  }[];
429
416
  };
430
417
  positions: {
@@ -475,8 +462,17 @@ export declare const payload: import("vue").ShallowRef<{
475
462
  startTime: string;
476
463
  endTime: string;
477
464
  })[];
465
+ updatedAt: string;
466
+ }[];
467
+ days: {
468
+ date: string;
469
+ id: string;
470
+ updatedAt: string;
471
+ title: string;
472
+ description: string;
473
+ isPublicHoliday: boolean;
474
+ salesForecastOverride: number | null;
478
475
  }[];
479
- } | null, {
480
476
  timeOff: {
481
477
  type: "OFF_DAY" | "LEAVE";
482
478
  status: "PENDING" | "APPROVED" | "REJECTED" | "CANCELLED";
@@ -495,22 +491,7 @@ export declare const payload: import("vue").ShallowRef<{
495
491
  approvedAt: string | null;
496
492
  approvalComment: string | null;
497
493
  }[];
498
- outlet: {
499
- id: string;
500
- name: string;
501
- };
502
- range: {
503
- from: string;
504
- to: string;
505
- };
506
- days: {
507
- date: string;
508
- id: string;
509
- isPublicHoliday: boolean;
510
- title: string;
511
- description: string;
512
- salesForecastOverride: number | null;
513
- }[];
494
+ } | null, {
514
495
  demands: {
515
496
  date: string | null;
516
497
  startTime: string;
@@ -523,7 +504,18 @@ export declare const payload: import("vue").ShallowRef<{
523
504
  } | null;
524
505
  headcount: number;
525
506
  }[];
507
+ outlet: {
508
+ id: string;
509
+ name: string;
510
+ };
511
+ range: {
512
+ from: string;
513
+ to: string;
514
+ };
526
515
  settings: {
516
+ overtime: {
517
+ maxMonthlyHours: number;
518
+ };
527
519
  payRate: {
528
520
  NORMAL: {
529
521
  overtime: number;
@@ -541,12 +533,12 @@ export declare const payload: import("vue").ShallowRef<{
541
533
  };
542
534
  restaurantProfile: {
543
535
  operatingHours: {
544
- dayOfWeek: number;
545
- closed: boolean;
546
536
  hours: {
547
537
  start: string;
548
538
  end: string;
549
539
  }[];
540
+ dayOfWeek: number;
541
+ closed: boolean;
550
542
  }[];
551
543
  };
552
544
  positions: {
@@ -597,6 +589,34 @@ export declare const payload: import("vue").ShallowRef<{
597
589
  startTime: string;
598
590
  endTime: string;
599
591
  })[];
592
+ updatedAt: string;
593
+ }[];
594
+ days: {
595
+ date: string;
596
+ id: string;
597
+ updatedAt: string;
598
+ title: string;
599
+ description: string;
600
+ isPublicHoliday: boolean;
601
+ salesForecastOverride: number | null;
602
+ }[];
603
+ timeOff: {
604
+ type: "OFF_DAY" | "LEAVE";
605
+ status: "PENDING" | "APPROVED" | "REJECTED" | "CANCELLED";
606
+ id: string;
607
+ employeeId: string;
608
+ leaveType: "UNPAID" | "ANNUAL" | "MEDICAL" | "EMERGENCY" | null;
609
+ startDate: string;
610
+ endDate: string;
611
+ startPart: "FULL_DAY" | "AM" | "PM";
612
+ endPart: "FULL_DAY" | "AM" | "PM";
613
+ reason: string;
614
+ attachmentIds: string[];
615
+ requestedBy: string;
616
+ requestedAt: string;
617
+ approvedBy: string | null;
618
+ approvedAt: string | null;
619
+ approvalComment: string | null;
600
620
  }[];
601
621
  } | null>, loading: import("vue").Ref<boolean, boolean>, rosterLoading: import("vue").Ref<boolean, boolean>, loadError: import("vue").Ref<string | null, string | null>, scheduleSetupCompleted: import("vue").Ref<boolean, boolean>, dataVersion: import("vue").Ref<number, number>, outletId: import("vue").Ref<string, string>, restaurantEmployees: import("vue").Ref<{
602
622
  _id: string;
@@ -677,3 +697,7 @@ export declare const payload: import("vue").ShallowRef<{
677
697
  };
678
698
  };
679
699
  };
700
+ /** Restore all outlet-scoped rules before another outlet is allowed to populate them. Keeping
701
+ * the reactive object and its nested containers alive matters because many board composables
702
+ * hold references to RULES members rather than reading the store object afresh. */
703
+ export declare function resetRules(): void;
@@ -1,10 +1,12 @@
1
+ import ScheduleAPI from '@/api/schedule';
1
2
  import type { IFdtoPosUserSummary } from '@/types/employee';
2
- import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleSaveAssignmentReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq, FdtoScheduleSaveEmployeeConfigsReq, ScheduleReplaceDemandReq } from '@/types/schedule';
3
+ import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleSaveAssignmentReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq, FdtoScheduleSaveEmployeeConfigsReq, ScheduleReplaceDemandReq } from '@/types/schedule';
4
+ import { isoDateKey } from './composables/schedule-calendar';
3
5
  export { businessEmployees, dataVersion, employeeOutletIds, loadError, loading, outletId, payload, restaurantEmployees, employeeConfigs, rosterLoading, scheduleSetupCompleted, } from './schedule-state';
4
6
  /** dayjs-free local-date key — the board's own isoDateKey, repeated here so the store does not
5
7
  * have to import a composable. Local Y/M/D, never UTC: a BSON-free 'YYYY-MM-DD' that survives
6
8
  * a timezone west of Greenwich. */
7
- export declare function isoDate(d: Date): string;
9
+ export declare const isoDate: typeof isoDateKey;
8
10
  /** Points the board at an outlet. Switching throws the held window away rather than widening
9
11
  * it — two outlets' rosters are not one dataset, and half of each is not a schedule.
10
12
  *
@@ -85,9 +87,7 @@ export declare function saveDemand(req: ScheduleReplaceDemandReq): Promise<void>
85
87
  * week, so repeating it per date would only shadow later edits to the rule. Returns how many rows
86
88
  * were written. */
87
89
  export declare function copyDateDemand(fromDate: string, toDate: string): Promise<number>;
88
- export declare function generateAutoSchedule(req: FdtoScheduleAutoScheduleGenerateReq): Promise<FdtoScheduleAutoScheduleResult>;
89
- export declare function getAutoScheduleCapabilities(): Promise<FdtoScheduleAutoScheduleCapabilities>;
90
- export declare function applyAutoSchedule(req: FdtoScheduleAutoScheduleApplyReq): Promise<FdtoScheduleAutoScheduleApplyResult>;
90
+ export declare function generateAutoSchedule(req: FdtoScheduleAutoScheduleReq): Promise<FdtoScheduleAutoScheduleResult>;
91
91
  /** A one-off shift assignment — someone working these hours on this date, not answering any
92
92
  * Shift requirement. Deliberately does not reload: unlike `createEmployeeProfile` above, there
93
93
  * is nothing here a reload could bring back that the caller doesn't already have — `commitShift`
@@ -96,6 +96,7 @@ export declare function applyAutoSchedule(req: FdtoScheduleAutoScheduleApplyReq)
96
96
  * their own to read back from yet). */
97
97
  export declare function createAssignment(req: FdtoScheduleSaveAssignmentReq): Promise<FdtoScheduleAssignment>;
98
98
  export declare function updateAssignment(id: string, req: FdtoScheduleSaveAssignmentReq): Promise<FdtoScheduleAssignment | null>;
99
+ export declare function bulkSaveAssignments(req: Parameters<typeof ScheduleAPI.bulkSaveAssignments>[1]): Promise<Awaited<ReturnType<typeof ScheduleAPI.bulkSaveAssignments>>>;
99
100
  /** Deletes a batch of existing assignments in a single request — see
100
101
  * `ScheduleAPI.deleteAssignments`. Deleting one is just this with a single-id array. */
101
102
  export declare function deleteAssignments(ids: string[]): Promise<void>;
@@ -35,6 +35,8 @@ export interface WorkSlot {
35
35
  * round-tripped to the backend yet, or it's an OpenShift fill (see openId), which has its
36
36
  * own record shape and no write path of its own yet. */
37
37
  assignmentId?: string;
38
+ /** Server timestamp used to reject stale background saves. */
39
+ updatedAt?: string;
38
40
  /** Client-only — never sent to the backend (there's no linking field in
39
41
  * FdtoScheduleAssignment to persist it against). Shared by every period of ONE shift
40
42
  * authored through the popover's "+ Split", set there and nowhere else. Two workslots on
@@ -85,6 +87,8 @@ export interface EmployeeAvailHours {
85
87
  }
86
88
  export interface Employee {
87
89
  id: number;
90
+ /** Stable backend identity. The numeric id is only a board/view-model id. */
91
+ sourceId: string;
88
92
  name: string;
89
93
  employmentType: 'FULLTIME' | 'PARTTIME';
90
94
  role: string;
@@ -227,6 +231,7 @@ export interface ScheduleRules {
227
231
  }
228
232
  export interface PendingChange {
229
233
  empId: number;
234
+ employeeKey: string;
230
235
  dayIdx: number;
231
236
  kind: 'add' | 'change' | 'remove';
232
237
  label: string;
@@ -337,9 +342,6 @@ export interface Proposal {
337
342
  start: string;
338
343
  end: string;
339
344
  role: string;
340
- /** The position backing `role`, when the auto-schedule result named one. `null`/absent means
341
- * any position (an unnamed need). */
342
- positionId?: string | null;
343
345
  /** Set when this proposal would fill a named OpenShift record. */
344
346
  openId?: number;
345
347
  status: 'pending' | 'rejected';