@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.
- package/dist-lib/lib/bulkLoadCarrierPlanning.server.d.ts +4 -3
- package/dist-lib/lib/bulkLoadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/bulkLoadCarrierPlanning.server.js +13 -15
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts +2 -1
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +3 -2
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +30 -5
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.functions.js +13 -8
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts +7 -6
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +31 -33
- package/dist-lib/lib/loadCarrierTaskSync.server.d.ts +2 -1
- package/dist-lib/lib/loadCarrierTaskSync.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierTaskSync.server.js +4 -6
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.functions.js +4 -2
- package/dist-lib/lib/logisticsRecalcJob.server.d.ts +6 -5
- package/dist-lib/lib/logisticsRecalcJob.server.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.server.js +17 -19
- package/package.json +1 -1
|
@@ -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":"
|
|
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 {
|
|
10
|
-
import {
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
-
|
|
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":"
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
};
|