@flowselections/logistiek-engine 1.0.3 → 1.0.4

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.
@@ -1,3 +1,4 @@
1
+ import type { SupabaseClient } from "@supabase/supabase-js";
1
2
  export interface BulkPlanBatchResult {
2
3
  phase: "buffers" | "orders";
3
4
  processed: number;
@@ -10,14 +11,14 @@ export interface BulkPlanBatchResult {
10
11
  errors: string[];
11
12
  }
12
13
  /** Deelt een batch orderbuffers in. */
13
- export declare function planBuffersBatch(cursor: string | null, limit?: number): Promise<BulkPlanBatchResult>;
14
+ export declare function planBuffersBatch(sb: SupabaseClient, cursor: string | null, limit?: number): Promise<BulkPlanBatchResult>;
14
15
  /** Deelt een batch orders in die (nog) niet aan een buffer hangen. */
15
- export declare function planLooseOrdersBatch(cursor: string | null, limit?: number): Promise<BulkPlanBatchResult>;
16
+ export declare function planLooseOrdersBatch(sb: SupabaseClient, cursor: string | null, limit?: number): Promise<BulkPlanBatchResult>;
16
17
  export interface OrderWithoutTasks {
17
18
  id: string;
18
19
  orderRef: string;
19
20
  pickupAt: string | null;
20
21
  }
21
22
  /** Orders die nog geen enkele taak in de Engine hebben. */
22
- export declare function findOrdersWithoutTasks(limit?: number): Promise<OrderWithoutTasks[]>;
23
+ export declare function findOrdersWithoutTasks(sb: SupabaseClient, limit?: number): Promise<OrderWithoutTasks[]>;
23
24
  //# sourceMappingURL=bulkLoadCarrierPlanning.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bulkLoadCarrierPlanning.server.d.ts","sourceRoot":"","sources":["../../src/lib/bulkLoadCarrierPlanning.server.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAaD,uCAAuC;AACvC,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,SAAK,GACT,OAAO,CAAC,mBAAmB,CAAC,CA+B9B;AAED,sEAAsE;AACtE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,SAAK,GACT,OAAO,CAAC,mBAAmB,CAAC,CAsC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,2DAA2D;AAC3D,wBAAsB,sBAAsB,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0BrF"}
1
+ {"version":3,"file":"bulkLoadCarrierPlanning.server.d.ts","sourceRoot":"","sources":["../../src/lib/bulkLoadCarrierPlanning.server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAaD,uCAAuC;AACvC,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,SAAK,GACT,OAAO,CAAC,mBAAmB,CAAC,CA+B9B;AAED,sEAAsE;AACtE,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,SAAK,GACT,OAAO,CAAC,mBAAmB,CAAC,CAsC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,2DAA2D;AAC3D,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0BzG"}
@@ -6,10 +6,8 @@
6
6
  // Werkt in batches met een cursor zodat grote aantallen niet in een timeout
7
7
  // lopen: de UI roept net zo lang opnieuw aan tot `done` waar is.
8
8
  // ============================================================================
9
- import { supabaseAdmin } from "../integrations/supabase/client.server";
10
- import { replanBufferInternal, replanOrderInternal } from "./loadCarrierPlanning.server";
11
- import { attachIndelingToTasks } from "./loadCarrierTaskSync.server";
12
- const db = () => supabaseAdmin;
9
+ import { replanBufferInternal, replanOrderInternal } from "./loadCarrierPlanning.server.js";
10
+ import { attachIndelingToTasks } from "./loadCarrierTaskSync.server.js";
13
11
  const EMPTY = {
14
12
  processed: 0,
15
13
  cartsCreated: 0,
@@ -21,8 +19,8 @@ const EMPTY = {
21
19
  errors: [],
22
20
  };
23
21
  /** Deelt een batch orderbuffers in. */
24
- export async function planBuffersBatch(cursor, limit = 20) {
25
- let query = db().from("order_buffers").select("id").order("id", { ascending: true }).limit(limit);
22
+ export async function planBuffersBatch(sb, cursor, limit = 20) {
23
+ let query = sb.from("order_buffers").select("id").order("id", { ascending: true }).limit(limit);
26
24
  if (cursor)
27
25
  query = query.gt("id", cursor);
28
26
  const { data, error } = await query;
@@ -35,14 +33,14 @@ export async function planBuffersBatch(cursor, limit = 20) {
35
33
  const id = String(buffer.id);
36
34
  result.nextCursor = id;
37
35
  try {
38
- const plan = await replanBufferInternal(id);
36
+ const plan = await replanBufferInternal(sb, id);
39
37
  if (plan.skipped === "locked") {
40
38
  result.skippedLocked++;
41
39
  }
42
40
  else {
43
41
  result.processed++;
44
42
  result.cartsCreated += Number(plan.cartsCreated ?? 0);
45
- result.tasksUpdated += await attachIndelingToTasks(plan);
43
+ result.tasksUpdated += await attachIndelingToTasks(sb, plan);
46
44
  }
47
45
  }
48
46
  catch (err) {
@@ -55,8 +53,8 @@ export async function planBuffersBatch(cursor, limit = 20) {
55
53
  return result;
56
54
  }
57
55
  /** Deelt een batch orders in die (nog) niet aan een buffer hangen. */
58
- export async function planLooseOrdersBatch(cursor, limit = 20) {
59
- let query = db()
56
+ export async function planLooseOrdersBatch(sb, cursor, limit = 20) {
57
+ let query = sb
60
58
  .from("orders")
61
59
  .select("id")
62
60
  .is("buffer_id", null)
@@ -75,7 +73,7 @@ export async function planLooseOrdersBatch(cursor, limit = 20) {
75
73
  const id = String(order.id);
76
74
  result.nextCursor = id;
77
75
  try {
78
- const plan = await replanOrderInternal(id);
76
+ const plan = await replanOrderInternal(sb, id);
79
77
  if (!plan)
80
78
  continue;
81
79
  if (plan.skipped === "locked") {
@@ -84,7 +82,7 @@ export async function planLooseOrdersBatch(cursor, limit = 20) {
84
82
  else {
85
83
  result.processed++;
86
84
  result.cartsCreated += Number(plan.cartsCreated ?? 0);
87
- result.tasksUpdated += await attachIndelingToTasks(plan);
85
+ result.tasksUpdated += await attachIndelingToTasks(sb, plan);
88
86
  }
89
87
  }
90
88
  catch (err) {
@@ -97,8 +95,8 @@ export async function planLooseOrdersBatch(cursor, limit = 20) {
97
95
  return result;
98
96
  }
99
97
  /** Orders die nog geen enkele taak in de Engine hebben. */
100
- export async function findOrdersWithoutTasks(limit = 50) {
101
- const { data: orders } = await db()
98
+ export async function findOrdersWithoutTasks(sb, limit = 50) {
99
+ const { data: orders } = await sb
102
100
  .from("orders")
103
101
  .select("id, order_number, delivery_date, custom_fields")
104
102
  .is("deleted_at", null)
@@ -109,7 +107,7 @@ export async function findOrdersWithoutTasks(limit = 50) {
109
107
  if (list.length === 0)
110
108
  return [];
111
109
  const refs = list.map((o) => String(o.order_number));
112
- const { data: tasks } = await db().from("logistics_tasks").select("order_ref").in("order_ref", refs);
110
+ const { data: tasks } = await sb.from("logistics_tasks").select("order_ref").in("order_ref", refs);
113
111
  const known = new Set((Array.isArray(tasks) ? tasks : []).map((t) => String(t.order_ref)));
114
112
  const missing = [];
115
113
  for (const o of list) {
@@ -1,2 +1,3 @@
1
- export declare function handleLogisticsTick(request: Request): Promise<Response>;
1
+ import type { SupabaseClient } from "@supabase/supabase-js";
2
+ export declare function handleLogisticsTick(request: Request, supabase: SupabaseClient): Promise<Response>;
2
3
  //# 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":"AAkBA,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6C7E"}
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,CAgDnB"}
@@ -14,7 +14,7 @@ const CORS_HEADERS = {
14
14
  "Access-Control-Allow-Headers": "apikey, authorization, content-type",
15
15
  "Access-Control-Allow-Methods": "POST, OPTIONS",
16
16
  };
17
- export async function handleLogisticsTick(request) {
17
+ export async function handleLogisticsTick(request, supabase) {
18
18
  if (request.method === "OPTIONS") {
19
19
  return new Response(null, { status: 204, headers: CORS_HEADERS });
20
20
  }
@@ -30,13 +30,14 @@ export async function handleLogisticsTick(request) {
30
30
  headers: { "Content-Type": "application/json", ...CORS_HEADERS },
31
31
  });
32
32
  }
33
+ // Alle databasetoegang loopt via de meegegeven client (geen gedeelde state).
33
34
  const { tickJob } = await import("../logisticsRecalcJob.server.js");
34
35
  // Meerdere batches per aanroep, met een ruime marge tot de time-out.
35
36
  const deadline = Date.now() + 20000;
36
37
  let last = null;
37
38
  let ticks = 0;
38
39
  while (Date.now() < deadline) {
39
- last = await tickJob();
40
+ last = await tickJob(supabase);
40
41
  if (!last)
41
42
  break;
42
43
  ticks++;
@@ -51,7 +51,12 @@ export declare const replanOrderLoadCarriers: import("@tanstack/start-client-cor
51
51
  signup_mail_purpose?: string;
52
52
  transport_register_days_before?: number;
53
53
  updated_at?: string;
54
- user_id?: string;
54
+ user_id
55
+ /**
56
+ * Deelt alle orders in, in batches. De client roept dit net zo lang aan tot
57
+ * `done` waar is en schakelt dan door naar de volgende fase.
58
+ */
59
+ ?: string;
55
60
  };
56
61
  Relationships: [];
57
62
  };
@@ -20354,7 +20359,12 @@ export declare const replanBufferLoadCarriers: import("@tanstack/start-client-co
20354
20359
  signup_mail_purpose?: string;
20355
20360
  transport_register_days_before?: number;
20356
20361
  updated_at?: string;
20357
- user_id?: string;
20362
+ user_id
20363
+ /**
20364
+ * Deelt alle orders in, in batches. De client roept dit net zo lang aan tot
20365
+ * `done` waar is en schakelt dan door naar de volgende fase.
20366
+ */
20367
+ ?: string;
20358
20368
  };
20359
20369
  Relationships: [];
20360
20370
  };
@@ -40661,7 +40671,12 @@ export declare const planAllLoadCarriers: import("@tanstack/start-client-core").
40661
40671
  signup_mail_purpose?: string;
40662
40672
  transport_register_days_before?: number;
40663
40673
  updated_at?: string;
40664
- user_id?: string;
40674
+ user_id
40675
+ /**
40676
+ * Deelt alle orders in, in batches. De client roept dit net zo lang aan tot
40677
+ * `done` waar is en schakelt dan door naar de volgende fase.
40678
+ */
40679
+ ?: string;
40665
40680
  };
40666
40681
  Relationships: [];
40667
40682
  };
@@ -60968,7 +60983,12 @@ export declare const ensureLogisticsTasks: import("@tanstack/start-client-core")
60968
60983
  signup_mail_purpose?: string;
60969
60984
  transport_register_days_before?: number;
60970
60985
  updated_at?: string;
60971
- user_id?: string;
60986
+ user_id
60987
+ /**
60988
+ * Deelt alle orders in, in batches. De client roept dit net zo lang aan tot
60989
+ * `done` waar is en schakelt dan door naar de volgende fase.
60990
+ */
60991
+ ?: string;
60972
60992
  };
60973
60993
  Relationships: [];
60974
60994
  };
@@ -81273,7 +81293,12 @@ export declare const previewLoadCarrierPlan: import("@tanstack/start-client-core
81273
81293
  signup_mail_purpose?: string;
81274
81294
  transport_register_days_before?: number;
81275
81295
  updated_at?: string;
81276
- user_id?: string;
81296
+ user_id
81297
+ /**
81298
+ * Deelt alle orders in, in batches. De client roept dit net zo lang aan tot
81299
+ * `done` waar is en schakelt dan door naar de volgende fase.
81300
+ */
81301
+ ?: string;
81277
81302
  };
81278
81303
  Relationships: [];
81279
81304
  };