@flowselections/logistiek-engine 1.0.242 → 1.0.244

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 (63) hide show
  1. package/db/schema/logistiek-engine.sql +9696 -34
  2. package/dist-lib/components/BeheerPage.d.ts.map +1 -1
  3. package/dist-lib/components/BeheerPage.js +2 -1
  4. package/dist-lib/components/DataGereedheidCard.d.ts +1 -0
  5. package/dist-lib/components/DataGereedheidCard.d.ts.map +1 -1
  6. package/dist-lib/components/DataGereedheidCard.js +4 -3
  7. package/dist-lib/components/GeblokkeerdeOrdersCard.d.ts.map +1 -1
  8. package/dist-lib/components/GeblokkeerdeOrdersCard.js +14 -3
  9. package/dist-lib/components/GereedheidCard.d.ts +14 -0
  10. package/dist-lib/components/GereedheidCard.d.ts.map +1 -0
  11. package/dist-lib/components/GereedheidCard.js +60 -0
  12. package/dist-lib/components/LadingdragersPage.d.ts.map +1 -1
  13. package/dist-lib/components/LadingdragersPage.js +5 -1
  14. package/dist-lib/components/MinuutrondeCard.js +1 -1
  15. package/dist-lib/components/StartlijstCard.d.ts.map +1 -1
  16. package/dist-lib/components/StartlijstCard.js +4 -1
  17. package/dist-lib/components/rule-engine/RuleFieldInput.d.ts.map +1 -1
  18. package/dist-lib/components/rule-engine/RuleFieldInput.js +1 -1
  19. package/dist-lib/hooks/useGeblokkeerdeOrders.d.ts +14 -0
  20. package/dist-lib/hooks/useGeblokkeerdeOrders.d.ts.map +1 -1
  21. package/dist-lib/hooks/useGeblokkeerdeOrders.js +40 -3
  22. package/dist-lib/index.d.ts +1 -0
  23. package/dist-lib/index.d.ts.map +1 -1
  24. package/dist-lib/index.js +1 -0
  25. package/dist-lib/integrations/supabase/types.d.ts +3350 -150
  26. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  27. package/dist-lib/lib/beladingRegels.d.ts +17 -0
  28. package/dist-lib/lib/beladingRegels.d.ts.map +1 -1
  29. package/dist-lib/lib/beladingRegels.js +29 -3
  30. package/dist-lib/lib/dimensionPlanner.d.ts +10 -0
  31. package/dist-lib/lib/dimensionPlanner.d.ts.map +1 -1
  32. package/dist-lib/lib/dimensionPlanner.js +20 -0
  33. package/dist-lib/lib/engineStatusTeksten.d.ts +1 -1
  34. package/dist-lib/lib/engineStatusTeksten.js +1 -1
  35. package/dist-lib/lib/flowRoute.d.ts.map +1 -1
  36. package/dist-lib/lib/flowRoute.js +2 -2
  37. package/dist-lib/lib/handlers/logistics-tick.server.d.ts +2 -0
  38. package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
  39. package/dist-lib/lib/handlers/logistics-tick.server.js +259 -184
  40. package/dist-lib/lib/loadCarrierPlanning.server.d.ts +21 -0
  41. package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
  42. package/dist-lib/lib/loadCarrierPlanning.server.js +162 -21
  43. package/dist-lib/lib/loadCarrierTypes.d.ts +2 -0
  44. package/dist-lib/lib/loadCarrierTypes.d.ts.map +1 -1
  45. package/dist-lib/lib/logisticsRecalcJob.server.d.ts.map +1 -1
  46. package/dist-lib/lib/logisticsRecalcJob.server.js +8 -1
  47. package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
  48. package/dist-lib/lib/modulePrompts.js +57 -0
  49. package/dist-lib/lib/moduleVersion.d.ts +1 -1
  50. package/dist-lib/lib/moduleVersion.js +1 -1
  51. package/dist-lib/lib/ruleEngineSchema.d.ts +2 -0
  52. package/dist-lib/lib/ruleEngineSchema.d.ts.map +1 -1
  53. package/dist-lib/lib/ruleEngineSchema.js +70 -2
  54. package/dist-lib/lib/scheduleTasks.server.d.ts +3 -1
  55. package/dist-lib/lib/scheduleTasks.server.d.ts.map +1 -1
  56. package/dist-lib/lib/scheduleTasks.server.js +5 -2
  57. package/dist-lib/lib/statusFase.d.ts +11 -0
  58. package/dist-lib/lib/statusFase.d.ts.map +1 -0
  59. package/dist-lib/lib/statusFase.js +58 -0
  60. package/dist-lib/lib/werkers.server.d.ts +17 -0
  61. package/dist-lib/lib/werkers.server.d.ts.map +1 -0
  62. package/dist-lib/lib/werkers.server.js +31 -0
  63. package/package.json +34 -7
@@ -110,13 +110,30 @@ export interface FysiekeInvoer {
110
110
  ladingdrager_hoogte_cm: number | null;
111
111
  max_crates_per_layer: number | null;
112
112
  standaard_lagen: number | null;
113
+ /** Golf 1 / 11: blokkeergrens uit de werkwijze (standaard 1,5×). Daaronder is een afwijking een vraag. */
114
+ blokkeer_factor?: number | null;
115
+ /** Golf 1 / 11: eerder bevestigd aantal per laag voor dit product + fust + ladingdrager. */
116
+ laag_bevestigd?: number | null;
113
117
  }
118
+ /** Golf 1 / 11: vraag "Klopt N?" als de bron meer fusten per laag opgeeft dan de berekening. */
119
+ export interface LaagVraag {
120
+ opgegeven: number;
121
+ berekend: number;
122
+ tekst: string;
123
+ }
124
+ export declare const STANDAARD_BLOKKEER_FACTOR = 1.5;
114
125
  export type FysiekeStatus = "gecontroleerd" | "niet_te_controleren" | "onmogelijk";
115
126
  export interface FysiekOordeel {
116
127
  status: FysiekeStatus;
117
128
  blokkeren: string[];
118
129
  waarschuwen: string[];
119
130
  ontbreekt: string[];
131
+ /** Golf 1 / 11: te bevestigen afwijkingen (blokkeren de indeling tot bevestigd, nooit "onmogelijk"). */
132
+ vragen: LaagVraag[];
120
133
  }
134
+ /** Golf 1 / 11: zelfde tekst als public.logistics_laag_vraag_tekst. */
135
+ export declare function laagVraagTekst(bron: string, opgegeven: number, berekend: number): string;
136
+ /** Golf 1 / 11: ok / vraag / onmogelijk — zelfde regel als public.logistics_laag_oordeel. */
137
+ export declare function laagOordeel(opgegeven: number, berekend: number | null | undefined, factor: number | null | undefined, bevestigd: number | null | undefined): "ok" | "vraag" | "onmogelijk";
121
138
  export declare function fysiekeBelading(i: FysiekeInvoer): FysiekOordeel;
122
139
  //# sourceMappingURL=beladingRegels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"beladingRegels.d.ts","sourceRoot":"","sources":["../../src/lib/beladingRegels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"beladingRegels.d.ts","sourceRoot":"","sources":["../../src/lib/beladingRegels.ts"],"names":[],"mappings":"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"}
@@ -168,11 +168,29 @@ export function traystickerWachtReden(regels) {
168
168
  export function opnieuwOverSeconden(pogingen) {
169
169
  return Math.min(300, 15 * Math.pow(2, Math.max(0, Math.min(5, pogingen))));
170
170
  }
171
+ export const STANDAARD_BLOKKEER_FACTOR = 1.5;
172
+ /** Golf 1 / 11: zelfde tekst als public.logistics_laag_vraag_tekst. */
173
+ export function laagVraagTekst(bron, opgegeven, berekend) {
174
+ const wie = /floriday/i.test(bron) ? "Floriday" : "Het artikel";
175
+ return `${wie} zegt ${opgegeven} per laag, de berekening ${berekend}. Klopt ${opgegeven}?`;
176
+ }
177
+ /** Golf 1 / 11: ok / vraag / onmogelijk — zelfde regel als public.logistics_laag_oordeel. */
178
+ export function laagOordeel(opgegeven, berekend, factor, bevestigd) {
179
+ if (berekend == null || !(opgegeven > berekend))
180
+ return "ok";
181
+ const f = typeof factor === "number" && Number.isFinite(factor) && factor >= 1 ? factor : STANDAARD_BLOKKEER_FACTOR;
182
+ if (opgegeven > f * berekend + 1e-9)
183
+ return "onmogelijk";
184
+ if (typeof bevestigd === "number" && opgegeven <= bevestigd)
185
+ return "ok";
186
+ return "vraag";
187
+ }
171
188
  const pos = (n) => typeof n === "number" && Number.isFinite(n) && n > 0;
172
189
  export function fysiekeBelading(i) {
173
190
  const blokkeren = [];
174
191
  const waarschuwen = [];
175
192
  const ontbreekt = [];
193
+ const vragen = [];
176
194
  // Lagen tegen hoogte
177
195
  if (pos(i.fust_hoogte_cm) && pos(i.plant_hoogte_cm) && pos(i.ladingdrager_hoogte_cm)) {
178
196
  const laag = Math.max(i.fust_hoogte_cm, i.plant_hoogte_cm);
@@ -199,11 +217,19 @@ export function fysiekeBelading(i) {
199
217
  }
200
218
  // Fusten per laag
201
219
  if (i.layerspace_max != null && i.crates_per_layer > i.layerspace_max) {
202
- blokkeren.push(`${i.product}: ${i.crates_per_layer} fust per laag (bron: ${i.bron}), maar op een laag van ${i.ladingdrager} passen er volgens fustmaat × laagmaat maximaal ${i.layerspace_max}`);
220
+ // Golf 1 / 11: afwijking van de berekening is een vraag; alleen boven de blokkeergrens onmogelijk.
221
+ const o = laagOordeel(i.crates_per_layer, i.layerspace_max, i.blokkeer_factor, i.laag_bevestigd);
222
+ const f = pos(i.blokkeer_factor) && i.blokkeer_factor >= 1 ? i.blokkeer_factor : STANDAARD_BLOKKEER_FACTOR;
223
+ if (o === "onmogelijk") {
224
+ blokkeren.push(`${i.product}: ${i.crates_per_layer} fust per laag (bron: ${i.bron}), maar op een laag van ${i.ladingdrager} passen er volgens fustmaat × laagmaat maximaal ${i.layerspace_max}; meer dan ${String(f).replace(".", ",")}× de berekening kan niet`);
225
+ }
226
+ else if (o === "vraag") {
227
+ vragen.push({ opgegeven: i.crates_per_layer, berekend: i.layerspace_max, tekst: laagVraagTekst(i.bron, i.crates_per_layer, i.layerspace_max) });
228
+ }
203
229
  }
204
230
  if (i.layerspace_max != null && i.layerspace_strikt != null &&
205
231
  i.crates_per_layer <= i.layerspace_max && i.crates_per_layer > i.layerspace_strikt) {
206
- waarschuwen.push(`${i.product}: ${i.crates_per_layer} per laag past alleen met overstek (binnen 1 % tolerantie)`);
232
+ waarschuwen.push(`${i.product}: ${i.crates_per_layer} per laag past alleen met overstek (binnen de tolerantie van de ladingdrager)`);
207
233
  }
208
234
  if (pos(i.max_crates_per_layer) && i.crates_per_layer > i.max_crates_per_layer) {
209
235
  blokkeren.push(`${i.product}: ${i.crates_per_layer} fust per laag (bron: ${i.bron}), maar ${i.ladingdrager} staat maximaal ${i.max_crates_per_layer} fust per laag toe`);
@@ -216,7 +242,7 @@ export function fysiekeBelading(i) {
216
242
  waarschuwen.push(`${i.product}: ${i.layers_per_cart} lagen opgegeven, standaard ${i.standaard_lagen}; niet te controleren omdat de ${mist} ontbreekt. Vul dit in bij Beheer → Gegevens voor karindeling.`);
217
243
  }
218
244
  const status = blokkeren.length > 0 ? "onmogelijk" : ontbreekt.length > 0 ? "niet_te_controleren" : "gecontroleerd";
219
- return { status, blokkeren, waarschuwen, ontbreekt };
245
+ return { status, blokkeren, waarschuwen, ontbreekt, vragen };
220
246
  }
221
247
  function r1(n) {
222
248
  return String(Number(n.toFixed(1))).replace(".", ",");
@@ -110,4 +110,14 @@ export declare const LAAG_TOLERANTIE = 0.01;
110
110
  export declare function maxFustenPerLaag(laagLengteCm: number | null | undefined, laagBreedteCm: number | null | undefined, fustLengteCm: number | null | undefined, fustBreedteCm: number | null | undefined, tolerantie?: number): number | null;
111
111
  /** 1.0.210: overstek in mm (op de laagbreedte) die nodig is om n fusten te laten passen; null als het strikt al past of niet binnen de tolerantie. */
112
112
  export declare function overstekMm(laagLengteCm: number, laagBreedteCm: number, fustLengteCm: number, fustBreedteCm: number, n: number): number | null;
113
+ /** Golf 1 / 11: standaard overstek per ladingdrager (cm) als de ladingdrager er geen heeft. */
114
+ export declare const STANDAARD_OVERSTEK_CM = 2;
115
+ /**
116
+ * Golf 1 / 11: fusten per laag met precieze pasvorm en het overstek van de ladingdrager
117
+ * (cm, op lengte en breedte). Nooit lager dan de bestaande berekening met 1 % tolerantie.
118
+ * SQL-tegenhanger: public.logistics_max_fusten_per_laag_v2 (zelfde uitkomst, test bewaakt dat).
119
+ */
120
+ export declare function maxFustenPerLaagMetOverstek(laagLengteCm: number | null | undefined, laagBreedteCm: number | null | undefined, fustLengteCm: number | null | undefined, fustBreedteCm: number | null | undefined, overstekCm?: number | null | undefined): number | null;
121
+ /** Golf 1 / 11: fust herkennen op zijn maat in mm (zelfde als public.logistics_fust_sleutel). */
122
+ export declare function fustSleutel(lengteMm: number | null | undefined, breedteMm: number | null | undefined): string | null;
113
123
  //# sourceMappingURL=dimensionPlanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dimensionPlanner.d.ts","sourceRoot":"","sources":["../../src/lib/dimensionPlanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dimensionPlanner.d.ts","sourceRoot":"","sources":["../../src/lib/dimensionPlanner.ts"],"names":[],"mappings":"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"}
@@ -298,3 +298,23 @@ export function overstekMm(laagLengteCm, laagBreedteCm, fustLengteCm, fustBreedt
298
298
  }
299
299
  return Math.max(1, Math.ceil(hi * laagBreedteCm * 10 - 1e-6));
300
300
  }
301
+ /** Golf 1 / 11: standaard overstek per ladingdrager (cm) als de ladingdrager er geen heeft. */
302
+ export const STANDAARD_OVERSTEK_CM = 2;
303
+ /**
304
+ * Golf 1 / 11: fusten per laag met precieze pasvorm en het overstek van de ladingdrager
305
+ * (cm, op lengte en breedte). Nooit lager dan de bestaande berekening met 1 % tolerantie.
306
+ * SQL-tegenhanger: public.logistics_max_fusten_per_laag_v2 (zelfde uitkomst, test bewaakt dat).
307
+ */
308
+ export function maxFustenPerLaagMetOverstek(laagLengteCm, laagBreedteCm, fustLengteCm, fustBreedteCm, overstekCm = STANDAARD_OVERSTEK_CM) {
309
+ const oud = maxFustenPerLaag(laagLengteCm, laagBreedteCm, fustLengteCm, fustBreedteCm);
310
+ if (oud == null)
311
+ return null;
312
+ const o = typeof overstekCm === "number" && Number.isFinite(overstekCm) && overstekCm > 0 ? overstekCm : 0;
313
+ const metOverstek = maxFustenPerLaag(laagLengteCm + o, laagBreedteCm + o, fustLengteCm, fustBreedteCm, 0) ?? 0;
314
+ return Math.max(oud, metOverstek);
315
+ }
316
+ /** Golf 1 / 11: fust herkennen op zijn maat in mm (zelfde als public.logistics_fust_sleutel). */
317
+ export function fustSleutel(lengteMm, breedteMm) {
318
+ const ok = (n) => typeof n === "number" && Number.isFinite(n) && n > 0;
319
+ return ok(lengteMm) && ok(breedteMm) ? `${Math.round(lengteMm)}x${Math.round(breedteMm)}` : null;
320
+ }
@@ -1,5 +1,5 @@
1
1
  /** Schemaversie die deze moduleversie verwacht (gelijk aan logistics_schema_versie()). */
2
- export declare const VERWACHTE_SCHEMA_VERSIE = "2026-11-10d";
2
+ export declare const VERWACHTE_SCHEMA_VERSIE = "2026-11-10i";
3
3
  /** True als de database ouder is dan de module (geen of oudere versiemarkering). */
4
4
  export declare function schemaVersieOud(versie: string | null | undefined): boolean;
5
5
  /** "X leeg (Pickmodule)" -> "X ontbreken: de Pickschermen-module moet worden bijgewerkt." */
@@ -1,6 +1,6 @@
1
1
  // Teksten voor de Engine-status in gewone taal.
2
2
  /** Schemaversie die deze moduleversie verwacht (gelijk aan logistics_schema_versie()). */
3
- export const VERWACHTE_SCHEMA_VERSIE = "2026-11-10d";
3
+ export const VERWACHTE_SCHEMA_VERSIE = "2026-11-10i";
4
4
  /** True als de database ouder is dan de module (geen of oudere versiemarkering). */
5
5
  export function schemaVersieOud(versie) {
6
6
  if (!versie)
@@ -1 +1 @@
1
- {"version":3,"file":"flowRoute.d.ts","sourceRoot":"","sources":["../../src/lib/flowRoute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowRoute.d.ts","sourceRoot":"","sources":["../../src/lib/flowRoute.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  // stap gold, komt uit de instellingen van nú; het logboek bewaart (nog) geen
12
12
  // momentopname van de werkwijze per herberekening. Dat melden we in de kaart.
13
13
  // ============================================================================
14
+ import { isAfgerondeFase } from "./statusFase.js";
14
15
  import { WIZARD_STEPS } from "./ruleEngineWizard.js";
15
16
  import { FLOW_NODE, bronNodeVoor } from "./flowNodes.js";
16
17
  import { vakUitleg } from "./vakUitleg.js";
@@ -39,7 +40,6 @@ export function redenTekst(code, error) {
39
40
  return `${label} — ${error}`;
40
41
  return label ?? error ?? "Onbekende reden";
41
42
  }
42
- const AFGEROND = new Set(["verzonden", "gereed voor facturatie", "afgehandeld", "gefactureerd", "afgemeld"]);
43
43
  /** Leidt uit één versie + de huidige stand van de order de gelopen route af. */
44
44
  export function bepaalRoute(versie, order, carts, isLaatste) {
45
45
  const bron = order?.orderSource ? bronNodeVoor(order.orderSource) : null;
@@ -128,7 +128,7 @@ export function bepaalRoute(versie, order, carts, isLaatste) {
128
128
  }
129
129
  }
130
130
  }
131
- if (isLaatste && order?.status && AFGEROND.has(order.status.toLowerCase())) {
131
+ if (isLaatste && order?.status && isAfgerondeFase(order.status)) {
132
132
  if (!reached.includes(STAP.controle))
133
133
  reached.push(STAP.drukte, STAP.stations, STAP.controle);
134
134
  busy = null;
@@ -17,4 +17,6 @@ export declare function handleLogisticsTick(request: Request, supabase: Supabase
17
17
  export declare function runLockedTickRound(supabase: SupabaseClient, ident: ReturnType<typeof engineIdent>): Promise<Response>;
18
18
  /** Vaste sleutel van het rondeslot; gelijk aan de check in logistics_plan_kick(). */
19
19
  export declare const TICK_ROUND_LOCK_KEY = "tick:ronde";
20
+ /** Golf 1: hard budget van één HTTP-ronde (planwachtrij, karindeling, printen). */
21
+ export declare const RONDE_BUDGET_MS = 20000;
20
22
  //# sourceMappingURL=logistics-tick.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logistics-tick.server.d.ts","sourceRoot":"","sources":["../../../src/lib/handlers/logistics-tick.server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE;;;;EAE7D;AAQD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,EACxB,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAAC,QAAQ,CAAC,CA0BnB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GACpC,OAAO,CAAC,QAAQ,CAAC,CAmFnB;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,eAAe,CAAC"}
1
+ {"version":3,"file":"logistics-tick.server.d.ts","sourceRoot":"","sources":["../../../src/lib/handlers/logistics-tick.server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE;;;;EAE7D;AAQD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,EACxB,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAAC,QAAQ,CAAC,CA0BnB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GACpC,OAAO,CAAC,QAAQ,CAAC,CAqFnB;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,mFAAmF;AACnF,eAAO,MAAM,eAAe,QAAS,CAAC"}