@flowselections/floriday-afhandeling-module 1.0.25 → 1.0.27

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 (123) hide show
  1. package/dist-lib/components/afhandeling/CapacityWarning.d.ts +10 -0
  2. package/dist-lib/components/afhandeling/CapacityWarning.d.ts.map +1 -0
  3. package/dist-lib/components/afhandeling/CapacityWarning.js +12 -0
  4. package/dist-lib/components/afhandeling/ControlePage.d.ts.map +1 -1
  5. package/dist-lib/components/afhandeling/ControlePage.js +7 -2
  6. package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
  7. package/dist-lib/components/afhandeling/DagDetailDialog.js +158 -62
  8. package/dist-lib/components/afhandeling/LeveringenPage.d.ts.map +1 -1
  9. package/dist-lib/components/afhandeling/LeveringenPage.js +2 -10
  10. package/dist-lib/components/afhandeling/PickAgendaView.d.ts.map +1 -1
  11. package/dist-lib/components/afhandeling/PickAgendaView.js +4 -11
  12. package/dist-lib/components/afhandeling/VervoerdersPage.d.ts.map +1 -1
  13. package/dist-lib/components/afhandeling/VervoerdersPage.js +2 -5
  14. package/dist-lib/components/afhandeling/VerzetOrderDialog.d.ts +14 -0
  15. package/dist-lib/components/afhandeling/VerzetOrderDialog.d.ts.map +1 -0
  16. package/dist-lib/components/afhandeling/VerzetOrderDialog.js +203 -0
  17. package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
  18. package/dist-lib/components/afhandeling/WeekAgendaView.js +7 -3
  19. package/dist-lib/components/pickstation/PickstationPage.d.ts.map +1 -1
  20. package/dist-lib/components/pickstation/PickstationPage.js +1 -0
  21. package/dist-lib/components/settings/VervoerdersSettingsCard.d.ts.map +1 -1
  22. package/dist-lib/components/settings/VervoerdersSettingsCard.js +2 -5
  23. package/dist-lib/hooks/useCapacityCheck.d.ts +10 -0
  24. package/dist-lib/hooks/useCapacityCheck.d.ts.map +1 -0
  25. package/dist-lib/hooks/useCapacityCheck.js +22 -0
  26. package/dist-lib/hooks/useEngineTasks.d.ts +14 -0
  27. package/dist-lib/hooks/useEngineTasks.d.ts.map +1 -0
  28. package/dist-lib/hooks/useEngineTasks.js +49 -0
  29. package/dist-lib/hooks/useOrderPlanning.d.ts +8 -2
  30. package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
  31. package/dist-lib/hooks/useOrderPlanning.js +95 -93
  32. package/dist-lib/index.d.ts +0 -3
  33. package/dist-lib/index.d.ts.map +1 -1
  34. package/dist-lib/index.js +1 -5
  35. package/dist-lib/integrations/supabase/auth-middleware.d.ts +9010 -5433
  36. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  37. package/dist-lib/integrations/supabase/client.d.ts +9010 -5433
  38. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  39. package/dist-lib/integrations/supabase/client.server.d.ts +9010 -5433
  40. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  41. package/dist-lib/integrations/supabase/types.d.ts +9184 -5544
  42. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  43. package/dist-lib/lib/afhandelingSettings.functions.d.ts +7186 -32
  44. package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
  45. package/dist-lib/lib/carriers.functions.d.ts +17965 -80
  46. package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
  47. package/dist-lib/lib/cartAssignments.functions.d.ts +17965 -80
  48. package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
  49. package/dist-lib/lib/cartControl.functions.d.ts +35962 -170
  50. package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
  51. package/dist-lib/lib/cartControl.functions.js +103 -13
  52. package/dist-lib/lib/floriday.functions.d.ts +9010 -5433
  53. package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
  54. package/dist-lib/lib/logisticsEngine/capacity.d.ts +19 -0
  55. package/dist-lib/lib/logisticsEngine/capacity.d.ts.map +1 -0
  56. package/dist-lib/lib/logisticsEngine/capacity.js +91 -0
  57. package/dist-lib/lib/logisticsEngine/engine.d.ts +99 -0
  58. package/dist-lib/lib/logisticsEngine/engine.d.ts.map +1 -0
  59. package/dist-lib/lib/logisticsEngine/engine.js +102 -0
  60. package/dist-lib/lib/logisticsEngine/reschedule.d.ts +65 -0
  61. package/dist-lib/lib/logisticsEngine/reschedule.d.ts.map +1 -0
  62. package/dist-lib/lib/logisticsEngine/reschedule.js +86 -0
  63. package/dist-lib/lib/logisticsEngine/staffPlanning.d.ts +37 -0
  64. package/dist-lib/lib/logisticsEngine/staffPlanning.d.ts.map +1 -0
  65. package/dist-lib/lib/logisticsEngine/staffPlanning.js +100 -0
  66. package/dist-lib/lib/serverFnError.d.ts +10 -0
  67. package/dist-lib/lib/serverFnError.d.ts.map +1 -0
  68. package/dist-lib/lib/serverFnError.js +29 -0
  69. package/dist-lib/lib/serverRoutes/index.d.ts +0 -1
  70. package/dist-lib/lib/serverRoutes/index.d.ts.map +1 -1
  71. package/dist-lib/lib/serverRoutes/index.js +0 -1
  72. package/dist-lib/lib/timezone.d.ts +27 -0
  73. package/dist-lib/lib/timezone.d.ts.map +1 -0
  74. package/dist-lib/lib/timezone.js +68 -0
  75. package/package.json +6 -21
  76. package/dist-lib/components/engine/CapaciteitsmaatregelenPage.d.ts +0 -2
  77. package/dist-lib/components/engine/CapaciteitsmaatregelenPage.d.ts.map +0 -1
  78. package/dist-lib/components/engine/CapaciteitsmaatregelenPage.js +0 -40
  79. package/dist-lib/components/engine/CapaciteitsmonitorPage.d.ts +0 -2
  80. package/dist-lib/components/engine/CapaciteitsmonitorPage.d.ts.map +0 -1
  81. package/dist-lib/components/engine/CapaciteitsmonitorPage.js +0 -49
  82. package/dist-lib/components/engine/FormulesPage.d.ts +0 -2
  83. package/dist-lib/components/engine/FormulesPage.d.ts.map +0 -1
  84. package/dist-lib/components/engine/FormulesPage.js +0 -252
  85. package/dist-lib/components/engine/PlaceholderPage.d.ts +0 -6
  86. package/dist-lib/components/engine/PlaceholderPage.d.ts.map +0 -1
  87. package/dist-lib/components/engine/PlaceholderPage.js +0 -6
  88. package/dist-lib/components/engine/StrategieenPage.d.ts +0 -2
  89. package/dist-lib/components/engine/StrategieenPage.d.ts.map +0 -1
  90. package/dist-lib/components/engine/StrategieenPage.js +0 -80
  91. package/dist-lib/lib/logisticsEngine/capacity.functions.d.ts +0 -64978
  92. package/dist-lib/lib/logisticsEngine/capacity.functions.d.ts.map +0 -1
  93. package/dist-lib/lib/logisticsEngine/capacity.functions.js +0 -90
  94. package/dist-lib/lib/logisticsEngine/config.d.ts +0 -140
  95. package/dist-lib/lib/logisticsEngine/config.d.ts.map +0 -1
  96. package/dist-lib/lib/logisticsEngine/config.js +0 -488
  97. package/dist-lib/lib/logisticsEngine/enginePickTime.d.ts +0 -29
  98. package/dist-lib/lib/logisticsEngine/enginePickTime.d.ts.map +0 -1
  99. package/dist-lib/lib/logisticsEngine/enginePickTime.js +0 -136
  100. package/dist-lib/lib/logisticsEngine/evaluate.functions.d.ts +0 -16278
  101. package/dist-lib/lib/logisticsEngine/evaluate.functions.d.ts.map +0 -1
  102. package/dist-lib/lib/logisticsEngine/evaluate.functions.js +0 -104
  103. package/dist-lib/lib/logisticsEngine/expression.d.ts +0 -21
  104. package/dist-lib/lib/logisticsEngine/expression.d.ts.map +0 -1
  105. package/dist-lib/lib/logisticsEngine/expression.js +0 -263
  106. package/dist-lib/lib/logisticsEngine/formulas.functions.d.ts +0 -32512
  107. package/dist-lib/lib/logisticsEngine/formulas.functions.d.ts.map +0 -1
  108. package/dist-lib/lib/logisticsEngine/formulas.functions.js +0 -58
  109. package/dist-lib/lib/logisticsEngine/safetyLayer.d.ts +0 -83
  110. package/dist-lib/lib/logisticsEngine/safetyLayer.d.ts.map +0 -1
  111. package/dist-lib/lib/logisticsEngine/safetyLayer.js +0 -182
  112. package/dist-lib/lib/logisticsEngine/strategies.functions.d.ts +0 -129961
  113. package/dist-lib/lib/logisticsEngine/strategies.functions.d.ts.map +0 -1
  114. package/dist-lib/lib/logisticsEngine/strategies.functions.js +0 -176
  115. package/dist-lib/lib/logisticsEngine/variables.d.ts +0 -29
  116. package/dist-lib/lib/logisticsEngine/variables.d.ts.map +0 -1
  117. package/dist-lib/lib/logisticsEngine/variables.js +0 -144
  118. package/dist-lib/lib/logisticsEngine/wizard.functions.d.ts +0 -64976
  119. package/dist-lib/lib/logisticsEngine/wizard.functions.d.ts.map +0 -1
  120. package/dist-lib/lib/logisticsEngine/wizard.functions.js +0 -175
  121. package/dist-lib/lib/serverRoutes/logisticsTick.handler.d.ts +0 -3
  122. package/dist-lib/lib/serverRoutes/logisticsTick.handler.d.ts.map +0 -1
  123. package/dist-lib/lib/serverRoutes/logisticsTick.handler.js +0 -42
@@ -1,182 +0,0 @@
1
- /**
2
- * Veiligheidslaag — bewaakt of de huidige pickplanning nog haalbaar is.
3
- *
4
- * Pure functies zonder externe afhankelijkheden zodat dezelfde rekenkern
5
- * op de server (cron/evaluatie) en in de browser (live monitor + simulator)
6
- * gebruikt kan worden.
7
- */
8
- export const DEFAULT_CAPACITY_SETTINGS = {
9
- measures: [
10
- { kind: "skip-break", enabled: true, max: 30 },
11
- { kind: "extra-pickers", enabled: true, max: 5, perUnit: 10 },
12
- { kind: "overtime", enabled: true, max: 2 },
13
- { kind: "earlier-start", enabled: true, max: 2 },
14
- { kind: "postpone-orders", enabled: true, max: 999 },
15
- ],
16
- warningOnly: false,
17
- amberThresholdMinutes: 30,
18
- redThresholdMinutes: 0,
19
- autoApply: false,
20
- };
21
- export const MEASURE_LABELS = {
22
- "earlier-start": "Eerder beginnen",
23
- "skip-break": "Pauze overslaan",
24
- overtime: "Overwerken",
25
- "extra-pickers": "Extra medewerkers inzetten",
26
- "postpone-orders": "Orders doorschuiven",
27
- };
28
- export const MEASURE_UNITS = {
29
- "earlier-start": "uur",
30
- "skip-break": "minuten",
31
- overtime: "uur",
32
- "extra-pickers": "personen",
33
- "postpone-orders": "orders",
34
- };
35
- function measureCapacity(input, extraHours, extraPickers, extraBreakMinutes) {
36
- const hours = Math.max(0, input.remainingWorkHours + extraHours + extraBreakMinutes / 60);
37
- const pickers = Math.max(0, input.pickers + extraPickers);
38
- return hours * input.cartsPerHour * pickers;
39
- }
40
- /**
41
- * Berekent de status en stelt maatregelen voor in de door de gebruiker
42
- * bepaalde volgorde. Stopt zodra het tekort weg is.
43
- */
44
- export function evaluateCapacity(input, settings) {
45
- const baseAvailable = measureCapacity(input, 0, 0, 0);
46
- const required = Math.max(0, input.requiredCarts);
47
- const cartsPerMinute = Math.max(1e-6, (input.cartsPerHour * Math.max(1, input.pickers)) / 60);
48
- const reserveMinutes = (baseAvailable - required) / cartsPerMinute;
49
- let status = "green";
50
- if (reserveMinutes <= settings.redThresholdMinutes)
51
- status = "red";
52
- else if (reserveMinutes <= settings.amberThresholdMinutes)
53
- status = "amber";
54
- const measures = [];
55
- let extraHours = 0;
56
- let extraPickers = 0;
57
- let extraBreakMin = 0;
58
- let postponed = 0;
59
- let currentAvailable = baseAvailable;
60
- let shortage = Math.max(0, required - currentAvailable);
61
- if (shortage > 0 && !settings.warningOnly) {
62
- for (const m of settings.measures) {
63
- if (shortage <= 0)
64
- break;
65
- if (!m.enabled || m.max <= 0)
66
- continue;
67
- const before = currentAvailable;
68
- let usedAmount = 0;
69
- switch (m.kind) {
70
- case "earlier-start": {
71
- const maxRoom = Math.min(m.max, Math.max(0, input.earlierStartRoom));
72
- const needHours = shortage / (input.cartsPerHour * Math.max(1, input.pickers));
73
- usedAmount = Math.min(maxRoom, needHours);
74
- extraHours += usedAmount;
75
- break;
76
- }
77
- case "overtime": {
78
- const needHours = shortage / (input.cartsPerHour * Math.max(1, input.pickers));
79
- usedAmount = Math.min(m.max, needHours);
80
- extraHours += usedAmount;
81
- break;
82
- }
83
- case "skip-break": {
84
- const maxMin = Math.min(m.max, Math.max(0, input.remainingBreakMinutes));
85
- const needMin = (shortage / (input.cartsPerHour * Math.max(1, input.pickers))) * 60;
86
- usedAmount = Math.min(maxMin, needMin);
87
- extraBreakMin += usedAmount;
88
- break;
89
- }
90
- case "extra-pickers": {
91
- const perPickerCarts = Math.max(1, m.perUnit ?? input.cartsPerHour) * Math.max(0.1, input.remainingWorkHours + extraHours);
92
- const needPickers = Math.ceil(shortage / Math.max(1, perPickerCarts));
93
- usedAmount = Math.min(m.max, needPickers);
94
- extraPickers += usedAmount;
95
- break;
96
- }
97
- case "postpone-orders": {
98
- usedAmount = Math.min(m.max, Math.ceil(shortage));
99
- postponed += usedAmount;
100
- break;
101
- }
102
- }
103
- if (usedAmount <= 0)
104
- continue;
105
- if (m.kind === "postpone-orders") {
106
- currentAvailable = before; // capaciteit blijft gelijk, maar shortage wordt verlaagd
107
- shortage = Math.max(0, shortage - usedAmount);
108
- measures.push({
109
- kind: m.kind,
110
- amount: usedAmount,
111
- unit: MEASURE_UNITS[m.kind],
112
- label: MEASURE_LABELS[m.kind],
113
- addsCarts: usedAmount,
114
- });
115
- }
116
- else {
117
- currentAvailable = measureCapacity(input, extraHours, extraPickers, extraBreakMin);
118
- shortage = Math.max(0, required - currentAvailable - postponed);
119
- measures.push({
120
- kind: m.kind,
121
- amount: Math.round(usedAmount * 100) / 100,
122
- unit: MEASURE_UNITS[m.kind],
123
- label: MEASURE_LABELS[m.kind],
124
- addsCarts: Math.max(0, Math.round((currentAvailable - before) * 10) / 10),
125
- });
126
- }
127
- }
128
- }
129
- const finalAvailable = currentAvailable + postponed;
130
- const stillShort = Math.max(0, required - finalAvailable);
131
- const expectedFinishMinutes = input.cartsPerHour > 0 && input.pickers > 0
132
- ? (Math.max(0, required - postponed) / (input.cartsPerHour * Math.max(1, input.pickers))) * 60
133
- : 0;
134
- const reasonParts = [];
135
- if (status === "green")
136
- reasonParts.push(`Planning haalbaar met ${Math.round(reserveMinutes)} min reserve.`);
137
- else if (status === "amber")
138
- reasonParts.push(`Planning wordt kritisch — nog ${Math.max(0, Math.round(reserveMinutes))} min reserve.`);
139
- else
140
- reasonParts.push(`Tekort van ${Math.max(0, Math.ceil(required - baseAvailable))} karren.`);
141
- if (measures.length)
142
- reasonParts.push(`${measures.length} maatregel${measures.length === 1 ? "" : "en"} voorgesteld.`);
143
- if (stillShort > 0)
144
- reasonParts.push(`Na maatregelen nog ${Math.ceil(stillShort)} karren tekort.`);
145
- return {
146
- status,
147
- availableCarts: Math.round(baseAvailable * 10) / 10,
148
- requiredCarts: required,
149
- reserveMinutes: Math.round(reserveMinutes),
150
- shortageCarts: Math.max(0, Math.ceil(required - baseAvailable)),
151
- expectedFinishMinutes: Math.round(expectedFinishMinutes),
152
- measures,
153
- stillShortAfterMeasures: Math.ceil(stillShort),
154
- reason: reasonParts.join(" "),
155
- };
156
- }
157
- /** Bereken beschikbare werkuren op basis van tijden + pauzes. */
158
- export function remainingWorkHours(now, endTime, breaks) {
159
- const [eh, em] = endTime.split(":").map((n) => Number(n) || 0);
160
- const end = new Date(now);
161
- end.setHours(eh, em, 0, 0);
162
- const diffMs = Math.max(0, end.getTime() - now.getTime());
163
- const totalMinutes = diffMs / 60000;
164
- let breakMinutesLeft = 0;
165
- for (const b of breaks ?? []) {
166
- const [sh, sm] = (b.start ?? "0:0").split(":").map((n) => Number(n) || 0);
167
- const [ehh, emm] = (b.end ?? "0:0").split(":").map((n) => Number(n) || 0);
168
- const bs = new Date(now);
169
- bs.setHours(sh, sm, 0, 0);
170
- const be = new Date(now);
171
- be.setHours(ehh, emm, 0, 0);
172
- if (be.getTime() <= now.getTime())
173
- continue;
174
- const start = bs.getTime() < now.getTime() ? now.getTime() : bs.getTime();
175
- const finish = be.getTime() > end.getTime() ? end.getTime() : be.getTime();
176
- breakMinutesLeft += Math.max(0, (finish - start) / 60000);
177
- }
178
- return {
179
- hours: Math.max(0, (totalMinutes - breakMinutesLeft) / 60),
180
- breakMinutesLeft,
181
- };
182
- }