@flowselections/logistiek-engine 1.0.27 → 1.0.29

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 (101) hide show
  1. package/README.md +24 -24
  2. package/dist-lib/components/AfmetingenBronnenCard.d.ts +2 -0
  3. package/dist-lib/components/AfmetingenBronnenCard.d.ts.map +1 -0
  4. package/dist-lib/components/AfmetingenBronnenCard.js +46 -0
  5. package/dist-lib/components/BufferDebugCard.d.ts.map +1 -1
  6. package/dist-lib/components/BufferDebugCard.js +6 -1
  7. package/dist-lib/components/ConsistentieCard.d.ts.map +1 -1
  8. package/dist-lib/components/ConsistentieCard.js +1 -1
  9. package/dist-lib/components/GeblokkeerdeOrdersCard.d.ts +2 -0
  10. package/dist-lib/components/GeblokkeerdeOrdersCard.d.ts.map +1 -0
  11. package/dist-lib/components/GeblokkeerdeOrdersCard.js +44 -0
  12. package/dist-lib/components/KarplanStatusCard.d.ts +2 -0
  13. package/dist-lib/components/KarplanStatusCard.d.ts.map +1 -0
  14. package/dist-lib/components/KarplanStatusCard.js +31 -0
  15. package/dist-lib/components/RegiePage.d.ts.map +1 -1
  16. package/dist-lib/components/RegiePage.js +4 -1
  17. package/dist-lib/components/RuleEnginePage.d.ts.map +1 -1
  18. package/dist-lib/components/RuleEnginePage.js +7 -4
  19. package/dist-lib/components/rule-engine/FloridayConnectionBanner.d.ts +2 -0
  20. package/dist-lib/components/rule-engine/FloridayConnectionBanner.d.ts.map +1 -0
  21. package/dist-lib/components/rule-engine/FloridayConnectionBanner.js +41 -0
  22. package/dist-lib/components/rule-engine/RuleFieldInput.d.ts.map +1 -1
  23. package/dist-lib/components/rule-engine/RuleFieldInput.js +9 -0
  24. package/dist-lib/hooks/useGeblokkeerdeOrders.d.ts +28 -0
  25. package/dist-lib/hooks/useGeblokkeerdeOrders.d.ts.map +1 -0
  26. package/dist-lib/hooks/useGeblokkeerdeOrders.js +94 -0
  27. package/dist-lib/hooks/useRecalcJob.d.ts.map +1 -1
  28. package/dist-lib/hooks/useRecalcJob.js +26 -1
  29. package/dist-lib/hooks/useScannersPrinters.d.ts +11 -0
  30. package/dist-lib/hooks/useScannersPrinters.d.ts.map +1 -0
  31. package/dist-lib/hooks/useScannersPrinters.js +65 -0
  32. package/dist-lib/index.d.ts +3 -0
  33. package/dist-lib/index.d.ts.map +1 -1
  34. package/dist-lib/index.js +3 -0
  35. package/dist-lib/integrations/supabase/auth-middleware.d.ts +2105 -68
  36. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  37. package/dist-lib/integrations/supabase/client.d.ts +20293 -0
  38. package/dist-lib/integrations/supabase/client.d.ts.map +1 -0
  39. package/dist-lib/integrations/supabase/client.js +13 -0
  40. package/dist-lib/integrations/supabase/client.server.d.ts +2105 -68
  41. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  42. package/dist-lib/integrations/supabase/client.server.js +1 -1
  43. package/dist-lib/integrations/supabase/moduleClient.d.ts +2105 -68
  44. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
  45. package/dist-lib/integrations/supabase/types.d.ts +2135 -54
  46. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  47. package/dist-lib/integrations/supabase/types.js +1 -0
  48. package/dist-lib/lib/attachAuthToken.d.ts +2 -0
  49. package/dist-lib/lib/attachAuthToken.d.ts.map +1 -0
  50. package/dist-lib/lib/attachAuthToken.js +50 -0
  51. package/dist-lib/lib/bufferMatching.d.ts.map +1 -1
  52. package/dist-lib/lib/bufferMatching.js +1 -0
  53. package/dist-lib/lib/cartPlanRequests.server.d.ts +13 -0
  54. package/dist-lib/lib/cartPlanRequests.server.d.ts.map +1 -0
  55. package/dist-lib/lib/cartPlanRequests.server.js +168 -0
  56. package/dist-lib/lib/controlScan.server.d.ts +12 -0
  57. package/dist-lib/lib/controlScan.server.d.ts.map +1 -0
  58. package/dist-lib/lib/controlScan.server.js +197 -0
  59. package/dist-lib/lib/dimensionData.server.d.ts +11 -1
  60. package/dist-lib/lib/dimensionData.server.d.ts.map +1 -1
  61. package/dist-lib/lib/dimensionData.server.js +58 -48
  62. package/dist-lib/lib/dimensionPlanner.d.ts +26 -1
  63. package/dist-lib/lib/dimensionPlanner.d.ts.map +1 -1
  64. package/dist-lib/lib/dimensionPlanner.js +37 -6
  65. package/dist-lib/lib/floridayDocuments.functions.d.ts +6314 -203
  66. package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
  67. package/dist-lib/lib/floridayDocuments.functions.js +4 -3
  68. package/dist-lib/lib/floridayPush.functions.d.ts +2106 -69
  69. package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
  70. package/dist-lib/lib/floridayPush.functions.js +2 -1
  71. package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
  72. package/dist-lib/lib/handlers/logistics-tick.server.js +64 -0
  73. package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +10480 -295
  74. package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
  75. package/dist-lib/lib/loadCarrierPlanning.functions.js +6 -5
  76. package/dist-lib/lib/loadCarrierPlanning.server.d.ts +42 -0
  77. package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
  78. package/dist-lib/lib/loadCarrierPlanning.server.js +583 -31
  79. package/dist-lib/lib/logisticsPlanner.d.ts.map +1 -1
  80. package/dist-lib/lib/logisticsPlanner.js +24 -9
  81. package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +4231 -157
  82. package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
  83. package/dist-lib/lib/logisticsRecalcJob.functions.js +3 -2
  84. package/dist-lib/lib/logisticsRecalcJob.server.d.ts.map +1 -1
  85. package/dist-lib/lib/logisticsRecalcJob.server.js +1 -0
  86. package/dist-lib/lib/logisticsRecalculate.functions.d.ts +2106 -69
  87. package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
  88. package/dist-lib/lib/logisticsRecalculate.functions.js +3 -1
  89. package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
  90. package/dist-lib/lib/modulePrompts.js +2560 -1586
  91. package/dist-lib/lib/planQueue.server.d.ts.map +1 -1
  92. package/dist-lib/lib/planQueue.server.js +6 -0
  93. package/dist-lib/lib/readableServerErrors.d.ts +2 -0
  94. package/dist-lib/lib/readableServerErrors.d.ts.map +1 -0
  95. package/dist-lib/lib/readableServerErrors.js +36 -0
  96. package/dist-lib/lib/ruleEngineSchema.d.ts +1 -1
  97. package/dist-lib/lib/ruleEngineSchema.d.ts.map +1 -1
  98. package/dist-lib/lib/ruleEngineSchema.js +72 -51
  99. package/dist-lib/lib/ruleEngineWizard.d.ts.map +1 -1
  100. package/dist-lib/lib/ruleEngineWizard.js +5 -6
  101. package/package.json +1 -1
@@ -3,9 +3,10 @@
3
3
  // ============================================================================
4
4
  import { createServerFn } from "@tanstack/react-start";
5
5
  import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
6
+ import { readableServerErrors } from "../lib/readableServerErrors";
6
7
  /** Zet een order opnieuw in de wachtrij (handmatig opnieuw proberen). */
7
8
  export const retryFloridayPush = createServerFn({ method: "POST" })
8
- .middleware([requireSupabaseAuth])
9
+ .middleware([readableServerErrors, requireSupabaseAuth])
9
10
  .inputValidator((data) => {
10
11
  if (!data || typeof data.orderRef !== "string" || data.orderRef.length === 0) {
11
12
  throw new Error("orderRef is verplicht");
@@ -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;AAQ5D,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,CAqFnB"}
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;AAQ5D,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,CA2JnB"}
@@ -32,6 +32,13 @@ export async function handleLogisticsTick(request, supabase) {
32
32
  }
33
33
  // Alle databasetoegang loopt via de meegegeven client (geen gedeelde state).
34
34
  const { tickJob } = await import("../logisticsRecalcJob.server.js");
35
+ // Hartslag: de schermen kunnen zo laten zien of de verwerking nog loopt.
36
+ try {
37
+ await supabase.rpc("logistics_tick_ping");
38
+ }
39
+ catch {
40
+ // Een ontbrekende hartslag mag de verwerking nooit tegenhouden.
41
+ }
35
42
  // Meerdere batches per aanroep, met een ruime marge tot de time-out.
36
43
  const deadline = Date.now() + 8000;
37
44
  let last = null;
@@ -44,6 +51,17 @@ export async function handleLogisticsTick(request, supabase) {
44
51
  if (last.status !== "running")
45
52
  break;
46
53
  }
54
+ // Ophaalmomenten rollend bijwerken vanuit de klantinstellingen (vervoerders).
55
+ let pickupMoments = null;
56
+ try {
57
+ const { data, error } = await supabase.rpc("logistics_refresh_pickup_moments", {
58
+ p_weeks: 4,
59
+ });
60
+ pickupMoments = error ? { error: error.message } : data;
61
+ }
62
+ catch (e) {
63
+ pickupMoments = { error: String(e?.message ?? e) };
64
+ }
47
65
  // Wees-taken van verwijderde orders afsluiten, zodat elke module dezelfde
48
66
  // verzameling orders ziet (één waarheid).
49
67
  let orphans = null;
@@ -64,6 +82,16 @@ export async function handleLogisticsTick(request, supabase) {
64
82
  catch (e) {
65
83
  plan = { error: String(e?.message ?? e) };
66
84
  }
85
+ // Altijd ná de planning: die kan de pickwachtrij opnieuw vullen. Zo blijft
86
+ // per buffer alleen de vaste leidende regel over, ook na elke cron-run.
87
+ let bufferQueue = null;
88
+ try {
89
+ const { data, error } = await supabase.rpc("logistics_prune_buffer_member_queue");
90
+ bufferQueue = error ? { error: error.message } : data;
91
+ }
92
+ catch (e) {
93
+ bufferQueue = { error: String(e?.message ?? e) };
94
+ }
67
95
  // Floriday-pushwachtrij verwerken binnen dezelfde aanroep, met eigen marge.
68
96
  let push = null;
69
97
  try {
@@ -74,6 +102,37 @@ export async function handleLogisticsTick(request, supabase) {
74
102
  catch (e) {
75
103
  push = { error: String(e?.message ?? e) };
76
104
  }
105
+ // Controlepost: goedgekeurde scans afronden met de juiste afleverbrief.
106
+ let control = null;
107
+ try {
108
+ const { runControlScanQueue } = await import("../controlScan.server.js");
109
+ control = await runControlScanQueue(supabase, { limit: 10 });
110
+ }
111
+ catch (e) {
112
+ control = { error: String(e?.message ?? e) };
113
+ }
114
+ // Seintjes van de pickschermen: karplan ontbreekt. Direct oppakken.
115
+ let cartPlanRequests = null;
116
+ try {
117
+ const { runCartPlanRequests } = await import("../cartPlanRequests.server.js");
118
+ cartPlanRequests = await runCartPlanRequests(supabase, { limit: 20 });
119
+ }
120
+ catch (e) {
121
+ cartPlanRequests = { error: String(e?.message ?? e) };
122
+ }
123
+ // Barcodeverzoeken van de Layout maker: de Engine bepaalt de kar en levert
124
+ // de vaste barcode terug in het verzoek én in de printopdracht. Kan het
125
+ // niet, dan wordt het verzoek geannuleerd met een reden (fail closed).
126
+ let barcodes = null;
127
+ try {
128
+ const { data, error } = await supabase.rpc("logistics_fulfill_barcode_requests", {
129
+ p_limit: 100,
130
+ });
131
+ barcodes = error ? { error: error.message } : data;
132
+ }
133
+ catch (e) {
134
+ barcodes = { error: String(e?.message ?? e) };
135
+ }
77
136
  return Response.json({
78
137
  ok: true,
79
138
  ticks,
@@ -82,6 +141,11 @@ export async function handleLogisticsTick(request, supabase) {
82
141
  processed: last?.processed ?? 0,
83
142
  plan,
84
143
  orphans,
144
+ bufferQueue,
145
+ pickupMoments,
85
146
  push,
147
+ control,
148
+ barcodes,
149
+ cartPlanRequests,
86
150
  }, { headers: CORS_HEADERS });
87
151
  }