@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
@@ -0,0 +1,58 @@
1
+ // ============================================================================
2
+ // src/lib/statusFase.ts — orderstatus naar vaste fase
3
+ // ============================================================================
4
+ // Spiegel van public.logistics_status_fasen_standaard() in de database. De
5
+ // database vult de statuslijst alleen uit die standaard (logistics_ensure_defaults),
6
+ // dus deze indeling is gelijk aan wat logistics_status_fase() teruggeeft. Een test
7
+ // (tests/lib/statusFase.test.ts) bewaakt dat beide lijsten gelijk blijven.
8
+ export const STATUS_FASEN_STANDAARD = {
9
+ concept: "concept",
10
+ draft: "concept",
11
+ open: "open",
12
+ nieuw: "open",
13
+ new: "open",
14
+ "nog te picken": "te_picken",
15
+ "te picken": "te_picken",
16
+ gepickt: "gepickt",
17
+ picked: "gepickt",
18
+ verzonden: "verzonden",
19
+ shipped: "verzonden",
20
+ geleverd: "verzonden",
21
+ delivered: "verzonden",
22
+ afgerond: "verzonden",
23
+ afgehandeld: "verzonden",
24
+ afgemeld: "verzonden",
25
+ "gereed voor facturatie": "gereed_voor_facturatie",
26
+ gefactureerd: "gefactureerd",
27
+ invoiced: "gefactureerd",
28
+ geannuleerd: "geannuleerd",
29
+ cancelled: "geannuleerd",
30
+ canceled: "geannuleerd",
31
+ gereserveerd: "gereserveerd",
32
+ reserved: "gereserveerd",
33
+ "afgehandeld floriday": "afgehandeld_floriday",
34
+ "afgehandeld via floriday": "afgehandeld_floriday",
35
+ };
36
+ /** Zelfde regel als logistics_status_fase(): hoofdletters en spaties rondom tellen niet mee. */
37
+ export function statusFase(status) {
38
+ const sleutel = String(status ?? "").trim().toLowerCase();
39
+ if (!sleutel)
40
+ return "onbekend";
41
+ return STATUS_FASEN_STANDAARD[sleutel] ?? "onbekend";
42
+ }
43
+ /** Fases waarin de order klaar is met de logistiek: niet meer indelen. */
44
+ export const AFGERONDE_FASEN = new Set([
45
+ "verzonden",
46
+ "gereed_voor_facturatie",
47
+ "gefactureerd",
48
+ "afgehandeld_floriday",
49
+ ]);
50
+ /** Order hoeft niet (meer) ingedeeld te worden: afgerond of geannuleerd. */
51
+ export function isTerminaleFase(status) {
52
+ const fase = statusFase(status);
53
+ return fase === "geannuleerd" || AFGERONDE_FASEN.has(fase);
54
+ }
55
+ /** Order is logistiek afgerond (niet geannuleerd). */
56
+ export function isAfgerondeFase(status) {
57
+ return AFGERONDE_FASEN.has(statusFase(status));
58
+ }
@@ -0,0 +1,17 @@
1
+ import type { SupabaseClient } from "@supabase/supabase-js";
2
+ /**
3
+ * Golf 1 stap 2: databasewerkers (planning, pickwachtrij, taken, onderhoud).
4
+ * Draait een werker (laatste ronde < 5 min geleden), dan slaat de HTTP-ronde
5
+ * van de shell diens SQL-stappen over. Draait hij niet (nog niet ingepland,
6
+ * oud schema), dan doet de HTTP-ronde alles zelf zoals voorheen.
7
+ */
8
+ export type WerkersActief = {
9
+ planning: boolean;
10
+ pickwachtrij: boolean;
11
+ taken: boolean;
12
+ onderhoud: boolean;
13
+ };
14
+ export declare const GEEN_WERKERS: WerkersActief;
15
+ export declare function leesWerkersActief(data: unknown): WerkersActief;
16
+ export declare function werkersActief(sb: SupabaseClient): Promise<WerkersActief>;
17
+ //# sourceMappingURL=werkers.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"werkers.server.d.ts","sourceRoot":"","sources":["../../src/lib/werkers.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,aAK1B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAS9D;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAY9E"}
@@ -0,0 +1,31 @@
1
+ export const GEEN_WERKERS = {
2
+ planning: false,
3
+ pickwachtrij: false,
4
+ taken: false,
5
+ onderhoud: false,
6
+ };
7
+ export function leesWerkersActief(data) {
8
+ if (!data || typeof data !== "object")
9
+ return { ...GEEN_WERKERS };
10
+ const d = data;
11
+ return {
12
+ planning: d.planning === true,
13
+ pickwachtrij: d.pickwachtrij === true,
14
+ taken: d.taken === true,
15
+ onderhoud: d.onderhoud === true,
16
+ };
17
+ }
18
+ export async function werkersActief(sb) {
19
+ try {
20
+ const { data, error } = await sb.rpc("logistics_werkers_actief");
21
+ if (error) {
22
+ console.warn("[logistics-werkers] stand niet leesbaar; ronde doet alles zelf:", error.message);
23
+ return { ...GEEN_WERKERS };
24
+ }
25
+ return leesWerkersActief(data);
26
+ }
27
+ catch (e) {
28
+ console.warn("[logistics-werkers] stand niet leesbaar; ronde doet alles zelf:", String(e?.message ?? e));
29
+ return { ...GEEN_WERKERS };
30
+ }
31
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/logistiek-engine",
3
- "version": "1.0.242",
3
+ "version": "1.0.244",
4
4
  "flowselections": {
5
5
  "moduleId": "logistiek-engine",
6
6
  "pages": [
@@ -152,12 +152,6 @@
152
152
  "kind": "sql",
153
153
  "sql": "SELECT public.logistics_plan_coverage_check(50)"
154
154
  },
155
- {
156
- "name": "logistics-reapply-buffer-decisions",
157
- "schedule": "*/5 * * * *",
158
- "kind": "sql",
159
- "sql": "SELECT public.logistics_reapply_buffer_decisions()"
160
- },
161
155
  {
162
156
  "name": "logistics-recalc-tick",
163
157
  "schedule": "* * * * *",
@@ -187,6 +181,39 @@
187
181
  "schedule": "33 3 * * *",
188
182
  "kind": "sql",
189
183
  "sql": "SELECT public.logistics_tick_runs_prune()"
184
+ },
185
+ {
186
+ "name": "logistics-status-onbekend",
187
+ "schedule": "13 * * * *",
188
+ "kind": "sql",
189
+ "sql": "SELECT public.logistics_status_onbekend_controle()"
190
+ },
191
+ {
192
+ "name": "logistics-werker-planning",
193
+ "schedule": "* * * * *",
194
+ "kind": "sql",
195
+ "sql": "SELECT public.logistics_werker_planning()",
196
+ "replaces": [
197
+ "logistics-reapply-buffer-decisions"
198
+ ]
199
+ },
200
+ {
201
+ "name": "logistics-werker-pickwachtrij",
202
+ "schedule": "* * * * *",
203
+ "kind": "sql",
204
+ "sql": "SELECT public.logistics_werker_pickwachtrij()"
205
+ },
206
+ {
207
+ "name": "logistics-werker-taken",
208
+ "schedule": "* * * * *",
209
+ "kind": "sql",
210
+ "sql": "SELECT public.logistics_werker_taken()"
211
+ },
212
+ {
213
+ "name": "logistics-werker-onderhoud",
214
+ "schedule": "*/15 * * * *",
215
+ "kind": "sql",
216
+ "sql": "SELECT public.logistics_werker_onderhoud()"
190
217
  }
191
218
  ],
192
219
  "install": {