@feedmepos/mf-hrm-portal 2.2.5-dev.9 → 2.3.0-dev

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 (116) hide show
  1. package/dist/{ApprovalCodeList-D5l9vIsE.js → ApprovalCodeList-cG0zmQVJ.js} +5 -5
  2. package/dist/{AuditLogList-ByTa5UJY.js → AuditLogList-BTifJhO1.js} +4 -4
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-mNdn1TYV.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js} +2 -2
  4. package/dist/{EmployeeList-Bv6ANk-P.js → EmployeeList-DzcMtxJ3.js} +6 -6
  5. package/dist/{GrantUserList-Bt8w3p4j.js → GrantUserList-D5b7tJ8Y.js} +6 -6
  6. package/dist/{Main-DqiGpT4v.js → Main-B2r59IOW.js} +5 -5
  7. package/dist/{Main-DHJcgePj.js → Main-DFwdAWqn.js} +8 -8
  8. package/dist/{Main-DkP8dWgn.js → Main-DkLBemi7.js} +11 -11
  9. package/dist/{PermissionSetList-BIGv1u67.js → PermissionSetList-B80hrfMW.js} +7 -7
  10. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js +4167 -0
  11. package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-XHuHin8t.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.js} +1 -1
  12. package/dist/{RoleList-CH6NDKPU.js → RoleList-DHO4JRKF.js} +9 -9
  13. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +452 -0
  14. package/dist/ScheduleGeneralPage-WlBM8bxV.js +629 -0
  15. package/dist/SchedulePage-Nm0krGVU.js +17056 -0
  16. package/dist/SchedulePositionPage-C0hrO11d.js +263 -0
  17. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DTDXir_7.js +1150 -0
  18. package/dist/{TeamMemberList-BwfG3go2.js → TeamMemberList-CgFWLRBM.js} +10 -10
  19. package/dist/{TimesheetList-DcoqzbLO.js → TimesheetList-Dp40G-0I.js} +7 -7
  20. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-RyhiKTSd.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BFjrMhUG.js} +3 -3
  21. package/dist/{app-BcZ6C8M8.js → app-CmBSTvaI.js} +851 -739
  22. package/dist/app.js +1 -1
  23. package/dist/{approval-code-jIjkeVEb.js → approval-code-C9DmR4Md.js} +1 -1
  24. package/dist/{dayjs.min-Ch0iysTG.js → dayjs.min-CfL2DQ3d.js} +1 -1
  25. package/dist/{employee-DwYHFacQ.js → employee-DQcHjoij.js} +4 -4
  26. package/dist/{grant-user-SNiDV22U.js → grant-user-Bv-pJ9Wt.js} +1 -1
  27. package/dist/{iteration-D1uWLp0V.js → iteration-BlavheWG.js} +1 -1
  28. package/dist/{lodash-DErxm7xf.js → lodash-QerqayrJ.js} +1 -1
  29. package/dist/{restaurant-BTpBmfBV.js → restaurant-D7PEQjPY.js} +257 -251
  30. package/dist/{role-B9VanAny.js → role-RM2YLO7n.js} +2 -2
  31. package/dist/{rule-C4f_Ilzr.js → rule-DjlvYIuP.js} +3 -3
  32. package/dist/src/api/restaurant/index.d.ts +2 -0
  33. package/dist/src/api/schedule/index.d.ts +12 -2
  34. package/dist/src/composables/useMessage.d.ts +8 -2
  35. package/dist/src/types/schedule.d.ts +10 -218
  36. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModal.vue.d.ts +2 -0
  37. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +11 -0
  38. package/dist/src/views/scheduling/components/ScheduleAutoScheduleDetailsModal.vue.d.ts +6 -0
  39. package/dist/src/views/scheduling/components/ScheduleCloneOutletModal.vue.d.ts +6 -0
  40. package/dist/src/views/scheduling/components/{ScheduleLegendBar.vue.d.ts → ScheduleCoach.vue.d.ts} +2 -2
  41. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +9 -1
  42. package/dist/src/views/scheduling/components/ScheduleCostRailEmptyArt.vue.d.ts +2 -0
  43. package/dist/src/views/scheduling/components/ScheduleExportDoneDialog.vue.d.ts +6 -0
  44. package/dist/src/views/scheduling/components/ScheduleLeaveEditModal.vue.d.ts +0 -2
  45. package/dist/src/views/scheduling/components/ScheduleOnboardingComplete.vue.d.ts +10 -0
  46. package/dist/src/views/scheduling/components/ScheduleOnboardingDoneArt.vue.d.ts +2 -0
  47. package/dist/src/views/scheduling/components/ScheduleOnboardingWelcome.vue.d.ts +1 -2
  48. package/dist/src/views/scheduling/components/ScheduleShiftCardMenu.vue.d.ts +2 -2
  49. package/dist/src/views/scheduling/components/ScheduleShiftCell.vue.d.ts +6 -6
  50. package/dist/src/views/scheduling/components/ScheduleShiftMoreOptions.vue.d.ts +2 -0
  51. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +0 -2
  52. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +6 -6
  53. package/dist/src/views/scheduling/components/ScheduleTourAllSet.vue.d.ts +6 -0
  54. package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +33 -0
  55. package/dist/src/views/scheduling/composables/onboarding-constants.d.ts +5 -0
  56. package/dist/src/views/scheduling/composables/onboarding-hours.d.ts +7 -0
  57. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +50 -0
  58. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +8 -2
  59. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +22 -1
  60. package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +3 -0
  61. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +2 -8
  62. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +12 -0
  63. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +11 -8
  64. package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +10 -2
  65. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +13 -0
  66. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +158 -12
  67. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +110 -13
  68. package/dist/src/views/scheduling/composables/useScheduleClashDetection.d.ts +11 -1
  69. package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +19 -0
  70. package/dist/src/views/scheduling/composables/useScheduleCoach.d.ts +80 -0
  71. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -3
  72. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +24 -1
  73. package/dist/src/views/scheduling/composables/useScheduleDemandRow.d.ts +4 -2
  74. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +33 -1
  75. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +17 -0
  76. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +1 -3
  77. package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +20 -31
  78. package/dist/src/views/scheduling/composables/useScheduleOnboardingFlow.d.ts +9 -0
  79. package/dist/src/views/scheduling/composables/useScheduleOnboardingPersistence.d.ts +13 -0
  80. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +327 -75
  81. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +5 -3
  82. package/dist/src/views/scheduling/composables/useSchedulePageBootstrap.d.ts +9 -0
  83. package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +20 -0
  84. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +18 -0
  85. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +2 -0
  86. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +0 -5
  87. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +25 -0
  88. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +53 -1
  89. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +7 -4
  90. package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +8 -9
  91. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +63 -92
  92. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +30 -2
  93. package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +5 -11
  94. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +0 -1
  95. package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +4 -4
  96. package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +93 -0
  97. package/dist/src/views/scheduling/data.d.ts +6 -19
  98. package/dist/src/views/scheduling/locales/index.d.ts +116 -4
  99. package/dist/src/views/scheduling/schedule-state.d.ts +679 -0
  100. package/dist/src/views/scheduling/schedule-store.d.ts +16 -60
  101. package/dist/src/views/scheduling/types.d.ts +29 -2
  102. package/dist/style.css +1 -1
  103. package/dist/tsconfig.app.tsbuildinfo +1 -1
  104. package/dist/{useAppStore-DCwd8GWN.js → useAppStore-d_nHyK5u.js} +1 -1
  105. package/dist/{useLoading-CXzTpIVv.js → useLoading-JFoghhRz.js} +1 -1
  106. package/dist/{useReportPermissions-CTr56kBo.js → useReportPermissions-Bl6Br79r.js} +3 -3
  107. package/package.json +3 -2
  108. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-niywl_DX.js +0 -4167
  109. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-T1ACkX_6.js +0 -426
  110. package/dist/ScheduleButton.vue_vue_type_script_setup_true_lang-BzQuLLf5.js +0 -690
  111. package/dist/ScheduleGeneralPage-DJPENJZ2.js +0 -320
  112. package/dist/SchedulePage-C1egcbIC.js +0 -14421
  113. package/dist/SchedulePositionPage-OhL_hsqG.js +0 -293
  114. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-B8W4sTsA.js +0 -242
  115. package/dist/src/views/scheduling/composables/scheduleAutoSolver.d.ts +0 -21
  116. package/dist/src/views/scheduling/composables/useScheduleLegendBar.d.ts +0 -35
@@ -1,8 +1,8 @@
1
1
  import { defineStore as x, storeToRefs as b } from "pinia";
2
2
  import { ref as w } from "vue";
3
3
  import { useCoreStore as B } from "@feedmepos/mf-common";
4
- import { s as v } from "./iteration-D1uWLp0V.js";
5
- import { g as f, b as p, u as I } from "./restaurant-BTpBmfBV.js";
4
+ import { s as v } from "./iteration-BlavheWG.js";
5
+ import { g as f, b as p, u as I } from "./restaurant-D7PEQjPY.js";
6
6
  const R = {
7
7
  async readRoles() {
8
8
  return f(await p().get("/pos-roles"));
@@ -1,7 +1,7 @@
1
- import { s as W, c as q, e as y } from "./iteration-D1uWLp0V.js";
2
- import { e as O, b as V, c as _, v as F, n as h, O as ee, D as M } from "./app-BcZ6C8M8.js";
1
+ import { s as W, c as q, e as y } from "./iteration-BlavheWG.js";
2
+ import { e as O, b as V, c as _, v as F, n as h, O as ee, D as M } from "./app-CmBSTvaI.js";
3
3
  import { s as se } from "./utils-BZkjJbju.js";
4
- import { g, b as v, q as x, u as te } from "./restaurant-BTpBmfBV.js";
4
+ import { g, b as v, q as x, u as te } from "./restaurant-D7PEQjPY.js";
5
5
  import { defineStore as z, storeToRefs as K } from "pinia";
6
6
  import { ref as S, computed as T } from "vue";
7
7
  import { useCoreStore as X } from "@feedmepos/mf-common";
@@ -1,5 +1,7 @@
1
1
  import type { HrmRestaurant } from '@/types/restaurant';
2
+ import type { FdtoScheduleDayOperatingHours } from '@feedmepos/hrm-schedule-contract';
2
3
  declare const RestaurantAPI: {
3
4
  readRestaurants(): Promise<HrmRestaurant[]>;
5
+ saveOperationalHours(restaurantId: string, operatingHours: FdtoScheduleDayOperatingHours[]): Promise<void>;
4
6
  };
5
7
  export default RestaurantAPI;
@@ -1,8 +1,18 @@
1
- import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoSchedulePosition, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleScheduleDay, FdtoScheduleUpdateEmployeeProfileReq } from '@/types/schedule';
1
+ import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoSchedulePosition, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleSettings, FdtoScheduleScheduleDay, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq } from '@/types/schedule';
2
2
  declare const ScheduleAPI: {
3
- generateAutoSchedule(restaurantId: string, req: FdtoScheduleAutoScheduleReq): Promise<FdtoScheduleAutoScheduleResult>;
3
+ listEmployeeProfiles(employeeIds?: string[]): Promise<FdtoScheduleEmployee[]>;
4
+ listEmployeeConfigs(restaurantId: string): Promise<FdtoScheduleEmployeeConfig[]>;
5
+ saveEmployeeConfigs(restaurantId: string, req: FdtoScheduleSaveEmployeeConfigsReq): Promise<FdtoScheduleEmployeeConfig[]>;
6
+ getSettings(restaurantId: string): Promise<FdtoScheduleSettings>;
7
+ saveSettings(restaurantId: string, req: FdtoScheduleSaveSettingsReq): Promise<FdtoScheduleSettings>;
8
+ generateAutoSchedule(restaurantId: string, req: FdtoScheduleAutoScheduleGenerateReq): Promise<FdtoScheduleAutoScheduleResult>;
9
+ getAutoScheduleCapabilities(restaurantId: string): Promise<FdtoScheduleAutoScheduleCapabilities>;
10
+ applyAutoSchedule(restaurantId: string, req: FdtoScheduleAutoScheduleApplyReq): Promise<FdtoScheduleAutoScheduleApplyResult>;
4
11
  /** One outlet's whole board over `[from, to]` (inclusive, 'YYYY-MM-DD'). */
5
12
  readBoard(restaurantId: string, from: string, to: string): Promise<FdtoScheduleBoard>;
13
+ createTimeOff(restaurantId: string, req: FdtoScheduleCreateTimeOffReq): Promise<FdtoScheduleTimeOff>;
14
+ updateTimeOffStatus(restaurantId: string, id: string, req: FdtoScheduleUpdateTimeOffStatusReq): Promise<FdtoScheduleTimeOff | null>;
15
+ deleteTimeOff(restaurantId: string, id: string): Promise<void>;
6
16
  /** Creates or updates the employee's shared business-level scheduling profile. */
7
17
  createEmployeeProfile(_restaurantId: string, req: FdtoScheduleCreateEmployeeProfileReq): Promise<FdtoScheduleEmployee>;
8
18
  /** Edits the employee's shared business-level scheduling profile. */
@@ -1,4 +1,10 @@
1
+ import { SnackbarPosition } from '@feedmepos/ui-library';
2
+ export interface MessageOptions {
3
+ /** Where the snackbar is anchored. Defaults to the library's own default (top-right). */
4
+ position?: SnackbarPosition;
5
+ }
1
6
  export declare function useMessage(): {
2
- success: (message: string) => void;
3
- error: (message: string) => void;
7
+ success: (message: string, options?: MessageOptions) => void;
8
+ error: (message: string, options?: MessageOptions) => void;
4
9
  };
10
+ export { SnackbarPosition };
@@ -1,187 +1,13 @@
1
- export interface FdtoSchedulePosition {
2
- id: string;
3
- name: string;
4
- }
5
- /** Creates or renames a position — see the backend DTO of the same name. Positions are
6
- * business-level, not per-outlet, so this carries nothing that names one. */
7
- export interface FdtoScheduleSavePositionReq {
8
- name: string;
9
- }
10
- export interface FdtoSchedulePositionRef {
11
- positionId: string;
12
- positionName: string;
13
- }
14
- /** What a create/update request names a position by — see the backend DTO of the same name.
15
- * `positionId` wins server-side when it resolves; `positionName` is what every picker on this
16
- * board actually has to offer (see `POSITIONS`/`positionIdOf` in `data.ts`), so it's always
17
- * sent too, as the fallback a stale or not-yet-loaded id catalogue would need. */
18
- export interface FdtoSchedulePositionSelectorReq {
19
- positionId?: string;
20
- positionName: string;
21
- }
22
- /** Multipliers on an hour's pay, by the kind of day it falls on. A NORMAL day carries only an
23
- * overtime multiplier — its ordinary hours are 1× by definition. */
24
- export interface FdtoSchedulePayRate {
25
- NORMAL: {
26
- overtime: number;
27
- };
28
- REST_DAY: {
29
- regular: number;
30
- overtime: number;
31
- };
32
- PUBLIC_HOLIDAY: {
33
- regular: number;
34
- overtime: number;
35
- };
36
- }
37
- export interface FdtoScheduleSettings {
38
- payRate: FdtoSchedulePayRate;
39
- }
40
- /** When the outlet trades, from its own Restaurants profile — ScheduleSettings no longer
41
- * carries it. `dayOfWeek` is JS `getDay()` (0 = Sunday). A closed day carries no windows; an
42
- * open day carries one or more `{start, end}` windows (a lunch/dinner split reads as two, not
43
- * one that spans the gap between them). */
44
- export interface FdtoScheduleDayOperatingHours {
45
- dayOfWeek: number;
46
- closed: boolean;
47
- hours: Array<{
48
- start: string;
49
- end: string;
50
- }>;
51
- }
52
- export interface FdtoScheduleRestaurantProfile {
53
- operatingHours: FdtoScheduleDayOperatingHours[];
54
- }
55
- /** Creates or updates the employee's business-level scheduling profile through POST /employees. */
56
- export interface FdtoScheduleCreateEmployeeProfileReq {
57
- employeeId: string;
58
- employeeName: string;
59
- employmentType?: 'FULLTIME' | 'PARTTIME';
60
- workingHour?: number;
61
- wage?: {
62
- type: 'HOURLY' | 'MONTHLY';
63
- amount: number;
64
- };
65
- primaryPosition?: FdtoSchedulePositionSelectorReq;
66
- secondaryPositions?: FdtoSchedulePositionSelectorReq[];
67
- availability?: Array<{
68
- dayOfWeek: number;
69
- start: string;
70
- end: string;
71
- }>;
72
- }
73
- /** Editable profile fields. The API helper adds employeeId to the POST /employees body. */
74
- export type FdtoScheduleUpdateEmployeeProfileReq = Omit<FdtoScheduleCreateEmployeeProfileReq, 'employeeId'>;
75
- export interface FdtoScheduleEmployee {
76
- employeeId: string;
77
- name: string;
78
- employmentType: 'FULLTIME' | 'PARTTIME';
79
- workingHour: number;
80
- wage: {
81
- type: 'HOURLY' | 'MONTHLY';
82
- amount: number;
83
- };
84
- primaryPosition: FdtoSchedulePositionRef | null;
85
- secondaryPositions: FdtoSchedulePositionRef[];
86
- availability: Array<{
87
- dayOfWeek: number;
88
- start: string;
89
- end: string;
90
- }>;
91
- }
92
- export interface FdtoScheduleAssignment {
93
- id: string;
94
- employeeId: string;
95
- position: FdtoSchedulePositionRef | null;
96
- date: string;
97
- startTime: string;
98
- endTime: string;
99
- breakMinutes: number;
100
- status: 'DRAFT' | 'PUBLISHED' | 'CONFIRMED';
101
- }
102
- /** Creates or replaces one plain assignment — see the backend DTO of the same name for the
103
- * full contract. */
104
- export interface FdtoScheduleSaveAssignmentReq {
105
- employeeId: string;
106
- date: string;
107
- startTime: string;
108
- endTime: string;
109
- breakMinutes?: number;
110
- position?: FdtoSchedulePositionSelectorReq;
111
- status?: 'DRAFT' | 'PUBLISHED' | 'CONFIRMED';
112
- }
113
- /** Flips a batch of existing assignments to one status in a single request — see the backend
114
- * DTO of the same name. */
115
- export interface FdtoScheduleBulkUpdateAssignmentStatusReq {
116
- ids: string[];
117
- status: 'DRAFT' | 'PUBLISHED' | 'CONFIRMED';
118
- }
119
- export type FdtoScheduleAutoScheduleObjective = 'BALANCED' | 'SERVICE' | 'LOWER_COST' | 'STABLE_HOURS';
120
- export interface FdtoScheduleAutoScheduleReq {
121
- from: string;
122
- to: string;
123
- objective: FdtoScheduleAutoScheduleObjective;
124
- fillDemandGaps: boolean;
125
- allowOvertime?: boolean;
126
- minimumCoveragePercent?: number;
127
- }
128
- export interface FdtoScheduleAutoScheduleProposal {
129
- employeeId: string;
130
- date: string;
131
- startTime: string;
132
- endTime: string;
133
- position: string;
134
- }
135
- export interface FdtoScheduleAutoScheduleResult {
136
- proposals: FdtoScheduleAutoScheduleProposal[];
137
- unfilledCount: number;
138
- metrics: {
139
- minimumCoveragePercent: number;
140
- recommendedCoveragePercent: number;
141
- totalHours: number;
142
- estimatedLabourCost: number | null;
143
- costCoveragePercent: number;
144
- overtimeHours: number;
145
- targetHoursVariance: number;
146
- unfilledIntervals: number;
147
- };
148
- readiness: {
149
- ready: boolean;
150
- capabilities: string[];
151
- issues: Array<{
152
- code: string;
153
- severity: 'BLOCKER' | 'WARNING' | 'INFO';
154
- message: string;
155
- }>;
156
- coverage: {
157
- position: number;
158
- availability: number;
159
- wage: number;
160
- targetHours: number;
161
- };
162
- };
163
- explanations: string[];
164
- solver: string;
165
- }
166
- export interface FdtoScheduleDemand {
167
- id: string;
168
- date: string | null;
169
- dayOfWeek: number | null;
170
- startTime: string;
171
- endTime: string;
172
- headcount: number;
173
- position: FdtoSchedulePositionRef | null;
174
- }
175
- /** Creates or updates one flat demand interval for a date OR standing weekday. */
176
- export interface FdtoScheduleSaveDemandReq {
177
- date?: string;
178
- dayOfWeek?: number;
179
- startTime: string;
180
- endTime: string;
181
- headcount: number;
182
- position?: FdtoSchedulePositionSelectorReq;
183
- }
184
- /** UI-level replacement command. The store expands these periods into flat ShiftDemand rows. */
1
+ /**
2
+ * Public portal-facing Schedule types.
3
+ *
4
+ * Wire contracts are inferred once from the shared package. This file keeps
5
+ * only view-model commands that intentionally do not cross HTTP (for example
6
+ * replacing a period made up of several persisted demand rows).
7
+ */
8
+ export type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoSchedulePlanner, FdtoScheduleAutoScheduleProposal, FdtoScheduleAutoScheduleRejection, FdtoScheduleAutoScheduleResult, FdtoScheduleAutoScheduleTiming, FdtoScheduleAutoScheduleUnfilledNeed, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBreak, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDayOperatingHours, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoScheduleOptionalDateRange, FdtoSchedulePayRate, FdtoSchedulePosition, FdtoSchedulePositionRef, FdtoSchedulePositionSelectorReq, FdtoScheduleRestaurantProfile, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleScheduleDay, FdtoScheduleSettings, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleTimeOffDayPart, FdtoScheduleTimeOffQuery, FdtoScheduleTimeOffStatus, FdtoScheduleTimeOffType, FdtoScheduleUpdateTimeOffStatusReq, } from '@feedmepos/hrm-schedule-contract';
9
+ /** UI-level replacement command. The store expands these periods into flat
10
+ * ShiftDemand rows before calling the shared HTTP contract. */
185
11
  export interface ScheduleReplaceDemandReq {
186
12
  date?: string;
187
13
  dayOfWeek?: number;
@@ -196,37 +22,3 @@ export interface ScheduleReplaceDemandReq {
196
22
  }>;
197
23
  }>;
198
24
  }
199
- /** Whatever a manager has authored about one DATE — a titled note, and whether it bills at the
200
- * holiday rate — see the backend DTO of the same name. A date nothing has ever been set on
201
- * reads the same as one whose document was deleted after being cleared back to empty. */
202
- export interface FdtoScheduleScheduleDay {
203
- id: string;
204
- date: string;
205
- title: string;
206
- description: string;
207
- isPublicHoliday: boolean;
208
- }
209
- /** Replaces one date's note/holiday-mark in one write — see the backend DTO of the same name.
210
- * All three fields back to empty/false clears it. */
211
- export interface FdtoScheduleSaveScheduleDayReq {
212
- title?: string;
213
- description?: string;
214
- isPublicHoliday?: boolean;
215
- }
216
- export interface FdtoScheduleBoard {
217
- outlet: {
218
- id: string;
219
- name: string;
220
- };
221
- range: {
222
- from: string;
223
- to: string;
224
- };
225
- settings: FdtoScheduleSettings;
226
- restaurantProfile: FdtoScheduleRestaurantProfile;
227
- positions: FdtoSchedulePosition[];
228
- employees: FdtoScheduleEmployee[];
229
- assignments: FdtoScheduleAssignment[];
230
- demands: FdtoScheduleDemand[];
231
- days: FdtoScheduleScheduleDay[];
232
- }
@@ -3,8 +3,10 @@ type __VLS_Props = {
3
3
  wizard: ReturnType<typeof useScheduleAddEmployee>;
4
4
  };
5
5
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
+ remove: (employeeId: number | null) => any;
6
7
  newPosition: (target: "primary" | "secondary") => any;
7
8
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ onRemove?: ((employeeId: number | null) => any) | undefined;
8
10
  onNewPosition?: ((target: "primary" | "secondary") => any) | undefined;
9
11
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
12
  export default _default;
@@ -2,12 +2,17 @@ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
2
  import type { ScheduleAreaBoardApi } from '../composables/useScheduleAreaBoard';
3
3
  import type { ScheduleOpenShiftCardApi } from '../composables/useScheduleOpenShiftCard';
4
4
  import type { ScheduleAreaDragDropApi } from '../composables/useScheduleAreaDragDrop';
5
+ import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
5
6
  import type { ScheduleDemandRowApi } from '../composables/useScheduleDemandRow';
6
7
  type __VLS_Props = {
7
8
  board: ScheduleBoardApi;
8
9
  areaBoard: ScheduleAreaBoardApi;
9
10
  openShiftCard: ScheduleOpenShiftCardApi;
10
11
  dragDrop: ScheduleAreaDragDropApi;
12
+ /** A card's own drag — dropping it on another card offers a swap, dropping it on empty cell
13
+ * space moves it to that day, the same two gestures the employee view's grid has. Distinct
14
+ * from `dragDrop` above, which is only the staff rail dragged onto an empty cell. */
15
+ shiftDragDrop: ScheduleDragDropApi;
11
16
  demandRow: ScheduleDemandRowApi;
12
17
  };
13
18
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -20,6 +25,9 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
20
25
  segFocus: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
21
26
  openDemandSheet: (dayIdx: number) => any;
22
27
  openNewShift: (dayIdx: number, position: string) => any;
28
+ addPosition: () => any;
29
+ scheduleByPerson: () => any;
30
+ openSwap: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number) => any;
23
31
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
24
32
  onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
25
33
  onOpenAssign?: ((openId: number) => any) | undefined;
@@ -30,5 +38,8 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
30
38
  onSegFocus?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
31
39
  onOpenDemandSheet?: ((dayIdx: number) => any) | undefined;
32
40
  onOpenNewShift?: ((dayIdx: number, position: string) => any) | undefined;
41
+ onAddPosition?: (() => any) | undefined;
42
+ onScheduleByPerson?: (() => any) | undefined;
43
+ onOpenSwap?: ((fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number) => any) | undefined;
33
44
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
34
45
  export default _default;
@@ -0,0 +1,6 @@
1
+ import type { ScheduleAutoScheduleApi } from '../composables/useScheduleAutoSchedule';
2
+ type __VLS_Props = {
3
+ autoSchedule: ScheduleAutoScheduleApi;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { ScheduleCloneOutletModalApi } from '../composables/useScheduleCloneOutletModal';
2
+ type __VLS_Props = {
3
+ modal: ScheduleCloneOutletModalApi;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -1,6 +1,6 @@
1
- import type { ScheduleLegendBarApi } from '../composables/useScheduleLegendBar';
1
+ import type { ScheduleCoachApi } from '../composables/useScheduleCoach';
2
2
  type __VLS_Props = {
3
- legendBar: ScheduleLegendBarApi;
3
+ coach: ScheduleCoachApi;
4
4
  };
5
5
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
6
  export default _default;
@@ -5,9 +5,16 @@ type __VLS_Props = {
5
5
  /** `clash-q` gives the message an orange warning-callout background instead of plain text —
6
6
  * used by the "might conflict" dialog, kept as an opt-in rather than the default look. */
7
7
  messageClass?: string;
8
+ /** A quieter footnote below the message, set off by a hairline — for a pointer to
9
+ * somewhere else ("go to the Employee page to remove permanently"), not a second
10
+ * consequence of pressing the button. Omitted entirely when there's nothing to point to. */
11
+ note?: string;
8
12
  confirmLabel?: string;
9
13
  cancelLabel?: string;
10
14
  tone?: 'primary' | 'danger';
15
+ /** The "!" mark is for dialogs guarding something irreversible — a reversible action
16
+ * (like coming off the roster, profile and POS access untouched) asks plainly instead. */
17
+ icon?: boolean;
11
18
  };
12
19
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
20
  close: () => any;
@@ -16,9 +23,10 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
16
23
  onClose?: (() => any) | undefined;
17
24
  onConfirm?: (() => any) | undefined;
18
25
  }>, {
26
+ icon: boolean;
27
+ confirmLabel: string;
19
28
  tone: "primary" | "danger";
20
29
  messageClass: string;
21
- confirmLabel: string;
22
30
  cancelLabel: string;
23
31
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
32
  export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { ScheduleExportApi } from '../composables/useScheduleExport';
2
+ type __VLS_Props = {
3
+ exportApi: ScheduleExportApi;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -1,8 +1,6 @@
1
1
  import type { ScheduleLeaveApi } from '../composables/useScheduleLeave';
2
- import { type ScheduleTimePickerApi } from '../composables/useScheduleTimePicker';
3
2
  type __VLS_Props = {
4
3
  leave: ScheduleLeaveApi;
5
- timePicker: ScheduleTimePickerApi;
6
4
  };
7
5
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
6
  export default _default;
@@ -0,0 +1,10 @@
1
+ import type { ScheduleOnboardingWizardApi } from '../composables/useScheduleOnboardingWizard';
2
+ import type { ScheduleTourApi } from '../composables/useScheduleTour';
3
+ import type { ScheduleAutoScheduleApi } from '../composables/useScheduleAutoSchedule';
4
+ type __VLS_Props = {
5
+ wizard: ScheduleOnboardingWizardApi;
6
+ tour: ScheduleTourApi;
7
+ autoSchedule: ScheduleAutoScheduleApi;
8
+ };
9
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -1,12 +1,11 @@
1
1
  import type { useScheduleSetupBanner } from '../composables/useScheduleSetupBanner';
2
2
  type __VLS_Props = {
3
3
  setupBanner: ReturnType<typeof useScheduleSetupBanner>;
4
+ outletName: string;
4
5
  };
5
6
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
7
  setUp: () => any;
7
- uploadSchedule: () => any;
8
8
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
9
9
  onSetUp?: (() => any) | undefined;
10
- onUploadSchedule?: (() => any) | undefined;
11
10
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
11
  export default _default;
@@ -5,8 +5,8 @@ type __VLS_Props = {
5
5
  actions: ScheduleShiftActionsApi;
6
6
  };
7
7
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
- editShift: (empId: number, dayIdx: number) => any;
8
+ editShift: (empId: number, dayIdx: number, slotIndex: number) => any;
9
9
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
- onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
10
+ onEditShift?: ((empId: number, dayIdx: number, slotIndex: number) => any) | undefined;
11
11
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
12
  export default _default;
@@ -1,7 +1,9 @@
1
1
  import type { DaySlot, Proposal } from '../types';
2
2
  import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
3
+ import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
3
4
  type __VLS_Props = {
4
5
  board: ScheduleBoardApi;
6
+ dragDrop: ScheduleDragDropApi;
5
7
  slot: DaySlot;
6
8
  empId: number;
7
9
  dayIdx: number;
@@ -12,22 +14,20 @@ type __VLS_Props = {
12
14
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
15
  drop: (empId: number, dayIdx: number, ev: DragEvent) => any;
14
16
  addShift: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
15
- editShift: (empId: number, dayIdx: number) => any;
17
+ editShift: (empId: number, dayIdx: number, slotIndex: number) => any;
16
18
  editLeave: (empId: number, dayIdx: number) => any;
17
- dragStart: (empId: number, dayIdx: number, ev: DragEvent) => any;
19
+ dragStart: (empId: number, dayIdx: number, ev: DragEvent, slotIndex: number) => any;
18
20
  dragEnd: () => any;
19
- openMenu: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
20
21
  toggleProposal: (id: number) => any;
21
22
  proposalDragStart: (id: number, ev: DragEvent) => any;
22
23
  proposalDragEnd: () => any;
23
24
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
24
25
  onDrop?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
25
26
  onAddShift?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
26
- onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
27
+ onEditShift?: ((empId: number, dayIdx: number, slotIndex: number) => any) | undefined;
27
28
  onEditLeave?: ((empId: number, dayIdx: number) => any) | undefined;
28
- onDragStart?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
29
+ onDragStart?: ((empId: number, dayIdx: number, ev: DragEvent, slotIndex: number) => any) | undefined;
29
30
  onDragEnd?: (() => any) | undefined;
30
- onOpenMenu?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
31
31
  onToggleProposal?: ((id: number) => any) | undefined;
32
32
  onProposalDragStart?: ((id: number, ev: DragEvent) => any) | undefined;
33
33
  onProposalDragEnd?: (() => any) | undefined;
@@ -1,6 +1,8 @@
1
1
  import type { ScheduleShiftPopoverApi } from '../composables/useScheduleShiftPopover';
2
+ import { type ScheduleTimePickerApi } from '../composables/useScheduleTimePicker';
2
3
  type __VLS_Props = {
3
4
  popover: ScheduleShiftPopoverApi;
5
+ timePicker: ScheduleTimePickerApi;
4
6
  };
5
7
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
8
  export default _default;
@@ -8,11 +8,9 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
8
8
  openEmployee: (empId: number) => any;
9
9
  openEmployeeMenu: (empId: number, anchor: HTMLElement) => any;
10
10
  addEmployee: () => any;
11
- jumpToOpen: () => any;
12
11
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
13
12
  onOpenEmployee?: ((empId: number) => any) | undefined;
14
13
  onOpenEmployeeMenu?: ((empId: number, anchor: HTMLElement) => any) | undefined;
15
14
  onAddEmployee?: (() => any) | undefined;
16
- onJumpToOpen?: (() => any) | undefined;
17
15
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
16
  export default _default;
@@ -1,11 +1,13 @@
1
1
  import type { Proposal } from '../types';
2
2
  import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
3
+ import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
3
4
  import type { ScheduleRosterApi } from '../composables/useScheduleRoster';
4
5
  import type { ScheduleOpenShiftCardApi } from '../composables/useScheduleOpenShiftCard';
5
6
  import type { ScheduleAllShiftsRowApi } from '../composables/useScheduleAllShiftsRow';
6
7
  import type { ScheduleDemandRowApi } from '../composables/useScheduleDemandRow';
7
8
  type __VLS_Props = {
8
9
  board: ScheduleBoardApi;
10
+ dragDrop: ScheduleDragDropApi;
9
11
  roster: ScheduleRosterApi;
10
12
  openShiftCard: ScheduleOpenShiftCardApi;
11
13
  allShiftsRow: ScheduleAllShiftsRowApi;
@@ -14,7 +16,7 @@ type __VLS_Props = {
14
16
  };
15
17
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
18
  addShift: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
17
- editShift: (empId: number, dayIdx: number) => any;
19
+ editShift: (empId: number, dayIdx: number, slotIndex?: number | undefined) => any;
18
20
  editLeave: (empId: number, dayIdx: number) => any;
19
21
  dragEnd: () => any;
20
22
  toggleProposal: (id: number) => any;
@@ -29,14 +31,13 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
29
31
  segFocus: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
30
32
  openEmployee: (empId: number) => any;
31
33
  openEmployeeMenu: (empId: number, anchor: HTMLElement) => any;
32
- dragShiftStart: (empId: number, dayIdx: number, ev: DragEvent) => any;
34
+ dragShiftStart: (empId: number, dayIdx: number, ev: DragEvent, slotIndex: number) => any;
33
35
  dropOnCell: (empId: number, dayIdx: number, ev: DragEvent) => any;
34
- openCardMenu: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
35
36
  addEmployee: () => any;
36
37
  openDemandSheet: (dayIdx: number) => any;
37
38
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
38
39
  onAddShift?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
39
- onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
40
+ onEditShift?: ((empId: number, dayIdx: number, slotIndex?: number | undefined) => any) | undefined;
40
41
  onEditLeave?: ((empId: number, dayIdx: number) => any) | undefined;
41
42
  onDragEnd?: (() => any) | undefined;
42
43
  onToggleProposal?: ((id: number) => any) | undefined;
@@ -51,9 +52,8 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
51
52
  onSegFocus?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
52
53
  onOpenEmployee?: ((empId: number) => any) | undefined;
53
54
  onOpenEmployeeMenu?: ((empId: number, anchor: HTMLElement) => any) | undefined;
54
- onDragShiftStart?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
55
+ onDragShiftStart?: ((empId: number, dayIdx: number, ev: DragEvent, slotIndex: number) => any) | undefined;
55
56
  onDropOnCell?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
56
- onOpenCardMenu?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
57
57
  onAddEmployee?: (() => any) | undefined;
58
58
  onOpenDemandSheet?: ((dayIdx: number) => any) | undefined;
59
59
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,6 @@
1
+ import type { ScheduleTourApi } from '../composables/useScheduleTour';
2
+ type __VLS_Props = {
3
+ tour: ScheduleTourApi;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,33 @@
1
+ import type { FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoSchedulePlanner, FdtoScheduleAutoScheduleProposal, FdtoScheduleAutoScheduleResult } from '@/types/schedule';
2
+ import { ApiError } from '@/api';
3
+ import type { Proposal } from '../types';
4
+ /** ISO date of `dayIdx` in the week starting `weekKey` (YYYY-MM-DD, local arithmetic). */
5
+ export declare function dateOfProposal(weekKey: string, dayIdx: number): string;
6
+ /** Server proposals → board proposals for the week whose Monday is `weekKey`. A proposal whose
7
+ * date is not one of `dateKeyOf(0..RANGE_LEN-1)` or whose employee the board does not hold is
8
+ * dropped. Ids come from `nextId` so they stay unique across weeks. */
9
+ export declare function proposalsFromResult(proposals: FdtoScheduleAutoScheduleProposal[], weekKey: string, dateKeyOf: (dayIdx: number) => string | null, nextId: () => number, holds: (empId: number) => boolean): Proposal[];
10
+ /** The apply body for the accepted proposals, each re-dated from its own week and day. */
11
+ export declare function applyRequestOf(proposals: Proposal[], allowOvertime: boolean): FdtoScheduleAutoScheduleApplyReq;
12
+ export interface ClassifiedExplanation {
13
+ kind: 'reject' | 'ai' | 'plain';
14
+ text: string;
15
+ }
16
+ /** Sorts one `result.explanations` line into what the Details panel renders it as. The matched
17
+ * prefix is stripped from `text` in every case — the panel re-adds its own label/marker for
18
+ * `reject` and `ai`, so the raw wire prefix never doubles up with it. */
19
+ export declare function classifyExplanation(line: string): ClassifiedExplanation;
20
+ /** Whether `error` is a server refusal whose own message is meant for the user: a client error
21
+ * (0 < status < 500). A network failure (0) or a server error (5xx) is not. */
22
+ export declare function isClientRefusal(error: unknown): error is ApiError;
23
+ /** A client-error refusal shows its own message; a network failure or 5xx shows the generic one. */
24
+ export declare function generateErrorMessage(error: unknown): string;
25
+ /** The result shown when "fill gaps" is off: nothing proposed, one explanation. */
26
+ export declare function fillGapsOffResult(week: {
27
+ from: string;
28
+ to: string;
29
+ }, objective: FdtoScheduleAutoScheduleObjective, allowOvertime: boolean): FdtoScheduleAutoScheduleResult;
30
+ /** The snackbar shown once a run finishes, whether it went to the server or (fill gaps off) was
31
+ * answered locally. `wallMs` is measured client-side around the request — it is what the manager
32
+ * actually waited, not just the server's own `timing.totalMs`. */
33
+ export declare function generateDoneMessage(result: FdtoScheduleAutoScheduleResult, requested: FdtoScheduleAutoSchedulePlanner, wallMs: number): string;