@flowselections/logistiek-engine 1.0.2 → 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.
Files changed (39) hide show
  1. package/README.md +24 -24
  2. package/dist-lib/integrations/supabase/auth-middleware.d.ts +516 -0
  3. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  4. package/dist-lib/integrations/supabase/client.d.ts +516 -0
  5. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  6. package/dist-lib/integrations/supabase/client.server.d.ts +516 -0
  7. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  8. package/dist-lib/integrations/supabase/types.d.ts +518 -0
  9. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  10. package/dist-lib/lib/bulkLoadCarrierPlanning.server.d.ts +4 -3
  11. package/dist-lib/lib/bulkLoadCarrierPlanning.server.d.ts.map +1 -1
  12. package/dist-lib/lib/bulkLoadCarrierPlanning.server.js +13 -15
  13. package/dist-lib/lib/floridayDocuments.functions.d.ts +1548 -0
  14. package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
  15. package/dist-lib/lib/handlers/index.d.ts +2 -0
  16. package/dist-lib/lib/handlers/index.d.ts.map +1 -0
  17. package/dist-lib/lib/handlers/index.js +4 -0
  18. package/dist-lib/lib/handlers/logistics-tick.server.d.ts +3 -0
  19. package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -0
  20. package/dist-lib/lib/handlers/logistics-tick.server.js +54 -0
  21. package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +2615 -50
  22. package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
  23. package/dist-lib/lib/loadCarrierPlanning.functions.js +13 -8
  24. package/dist-lib/lib/loadCarrierPlanning.server.d.ts +7 -6
  25. package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
  26. package/dist-lib/lib/loadCarrierPlanning.server.js +31 -33
  27. package/dist-lib/lib/loadCarrierTaskSync.server.d.ts +2 -1
  28. package/dist-lib/lib/loadCarrierTaskSync.server.d.ts.map +1 -1
  29. package/dist-lib/lib/loadCarrierTaskSync.server.js +4 -6
  30. package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +1032 -0
  31. package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
  32. package/dist-lib/lib/logisticsRecalcJob.functions.js +4 -2
  33. package/dist-lib/lib/logisticsRecalcJob.server.d.ts +6 -5
  34. package/dist-lib/lib/logisticsRecalcJob.server.d.ts.map +1 -1
  35. package/dist-lib/lib/logisticsRecalcJob.server.js +17 -19
  36. package/dist-lib/lib/logisticsRecalculate.functions.d.ts +516 -0
  37. package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
  38. package/dist-lib/lib/modulePrompts.js +911 -911
  39. package/package.json +18 -3
@@ -7,15 +7,17 @@ export const startRecalcJob = createServerFn({ method: "POST" })
7
7
  .middleware([requireSupabaseAuth])
8
8
  .inputValidator((data) => data ?? {})
9
9
  .handler(async ({ data, context }) => {
10
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
10
11
  const { startJob } = await import("./logisticsRecalcJob.server");
11
- const job = await startJob(context.userId ?? null, data.strategyId ?? null);
12
+ const job = await startJob(supabaseAdmin, context.userId ?? null, data.strategyId ?? null);
12
13
  return { id: job.id, status: job.status, phase: job.phase };
13
14
  });
14
15
  export const tickRecalcJob = createServerFn({ method: "POST" })
15
16
  .middleware([requireSupabaseAuth])
16
17
  .handler(async () => {
18
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
17
19
  const { tickJob } = await import("./logisticsRecalcJob.server");
18
- const job = await tickJob();
20
+ const job = await tickJob(supabaseAdmin);
19
21
  return job
20
22
  ? {
21
23
  id: job.id,
@@ -1,3 +1,4 @@
1
+ import type { SupabaseClient } from "@supabase/supabase-js";
1
2
  export interface RecalcJob {
2
3
  id: string;
3
4
  status: "running" | "done" | "error";
@@ -17,14 +18,14 @@ export interface RecalcJob {
17
18
  finished_at: string | null;
18
19
  updated_at: string;
19
20
  }
20
- export declare function getRunningJob(): Promise<RecalcJob | null>;
21
- export declare function getLatestJob(): Promise<RecalcJob | null>;
21
+ export declare function getRunningJob(sb: SupabaseClient): Promise<RecalcJob | null>;
22
+ export declare function getLatestJob(sb: SupabaseClient): Promise<RecalcJob | null>;
22
23
  /** Start een nieuwe job, of geeft de al lopende job terug. */
23
- export declare function startJob(startedBy: string | null, strategyId: string | null): Promise<RecalcJob>;
24
+ export declare function startJob(sb: SupabaseClient, startedBy: string | null, strategyId: string | null): Promise<RecalcJob>;
24
25
  /** Verwerkt één batch van de lopende job. Geeft de bijgewerkte job terug. */
25
- export declare function tickJob(): Promise<RecalcJob | null>;
26
+ export declare function tickJob(sb: SupabaseClient): Promise<RecalcJob | null>;
26
27
  /** Draait de afsluitende herberekenstappen (planning, tellingen, capaciteit). */
27
- export declare function runFinalSteps(days?: number): Promise<{
28
+ export declare function runFinalSteps(sb: SupabaseClient, days?: number): Promise<{
28
29
  step: string;
29
30
  ok: boolean;
30
31
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"logisticsRecalcJob.server.d.ts","sourceRoot":"","sources":["../../src/lib/logisticsRecalcJob.server.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACzC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAG/D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAO9D;AAED,8DAA8D;AAC9D,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,SAAS,CAAC,CAsBpB;AAED,6EAA6E;AAC7E,wBAAsB,OAAO,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA2CzD;AAED,iFAAiF;AACjF,wBAAsB,aAAa,CAAC,IAAI,SAAK;UAiBhB,MAAM;QAAM,OAAO;YAAU,MAAM;KAM/D"}
1
+ {"version":3,"file":"logisticsRecalcJob.server.d.ts","sourceRoot":"","sources":["../../src/lib/logisticsRecalcJob.server.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM5D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACzC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAGjF;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAOhF;AAED,8DAA8D;AAC9D,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,SAAS,CAAC,CAsBpB;AAED,6EAA6E;AAC7E,wBAAsB,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA2C3E;AAED,iFAAiF;AACjF,wBAAsB,aAAa,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,SAAK;UAiBpC,MAAM;QAAM,OAAO;YAAU,MAAM;KAM/D"}
@@ -5,17 +5,15 @@
5
5
  // batch, zodat er nooit een timeout ontstaat en de job doorloopt ook als de
6
6
  // gebruiker de pagina verlaat.
7
7
  // ============================================================================
8
- import { supabaseAdmin } from "../integrations/supabase/client.server";
9
- import { planBuffersBatch, planLooseOrdersBatch } from "./bulkLoadCarrierPlanning.server";
10
- const db = () => supabaseAdmin;
8
+ import { planBuffersBatch, planLooseOrdersBatch } from "./bulkLoadCarrierPlanning.server.js";
11
9
  const TABLE = "logistics_recalc_jobs";
12
10
  const BATCH = 20;
13
- export async function getRunningJob() {
14
- const { data } = await db().from(TABLE).select("*").eq("status", "running").limit(1);
11
+ export async function getRunningJob(sb) {
12
+ const { data } = await sb.from(TABLE).select("*").eq("status", "running").limit(1);
15
13
  return Array.isArray(data) && data.length > 0 ? data[0] : null;
16
14
  }
17
- export async function getLatestJob() {
18
- const { data } = await db()
15
+ export async function getLatestJob(sb) {
16
+ const { data } = await sb
19
17
  .from(TABLE)
20
18
  .select("*")
21
19
  .order("created_at", { ascending: false })
@@ -23,11 +21,11 @@ export async function getLatestJob() {
23
21
  return Array.isArray(data) && data.length > 0 ? data[0] : null;
24
22
  }
25
23
  /** Start een nieuwe job, of geeft de al lopende job terug. */
26
- export async function startJob(startedBy, strategyId) {
27
- const running = await getRunningJob();
24
+ export async function startJob(sb, startedBy, strategyId) {
25
+ const running = await getRunningJob(sb);
28
26
  if (running)
29
27
  return running;
30
- const { data, error } = await db()
28
+ const { data, error } = await sb
31
29
  .from(TABLE)
32
30
  .insert({
33
31
  status: "running",
@@ -39,7 +37,7 @@ export async function startJob(startedBy, strategyId) {
39
37
  .single();
40
38
  if (error) {
41
39
  // Race: iemand anders startte net een job.
42
- const existing = await getRunningJob();
40
+ const existing = await getRunningJob(sb);
43
41
  if (existing)
44
42
  return existing;
45
43
  throw new Error(error.message);
@@ -47,8 +45,8 @@ export async function startJob(startedBy, strategyId) {
47
45
  return data;
48
46
  }
49
47
  /** Verwerkt één batch van de lopende job. Geeft de bijgewerkte job terug. */
50
- export async function tickJob() {
51
- const job = await getRunningJob();
48
+ export async function tickJob(sb) {
49
+ const job = await getRunningJob(sb);
52
50
  if (!job)
53
51
  return null;
54
52
  const patch = { last_tick_at: new Date().toISOString() };
@@ -56,8 +54,8 @@ export async function tickJob() {
56
54
  try {
57
55
  if (job.phase === "buffers" || job.phase === "orders") {
58
56
  const batch = job.phase === "buffers"
59
- ? await planBuffersBatch(job.cursor, BATCH)
60
- : await planLooseOrdersBatch(job.cursor, BATCH);
57
+ ? await planBuffersBatch(sb, job.cursor, BATCH)
58
+ : await planLooseOrdersBatch(sb, job.cursor, BATCH);
61
59
  patch['processed'] = job.processed + batch.processed;
62
60
  patch['carts_created'] = job.carts_created + batch.cartsCreated;
63
61
  patch['skipped_locked'] = job.skipped_locked + batch.skippedLocked;
@@ -76,7 +74,7 @@ export async function tickJob() {
76
74
  }
77
75
  }
78
76
  else {
79
- const steps = await runFinalSteps();
77
+ const steps = await runFinalSteps(sb);
80
78
  patch['steps'] = steps;
81
79
  patch['status'] = steps.every((s) => s.ok) ? "done" : "error";
82
80
  patch['finished_at'] = new Date().toISOString();
@@ -88,11 +86,11 @@ export async function tickJob() {
88
86
  patch['status'] = "error";
89
87
  patch['finished_at'] = new Date().toISOString();
90
88
  }
91
- const { data } = await db().from(TABLE).update(patch).eq("id", job.id).select("*").single();
89
+ const { data } = await sb.from(TABLE).update(patch).eq("id", job.id).select("*").single();
92
90
  return (data ?? null);
93
91
  }
94
92
  /** Draait de afsluitende herberekenstappen (planning, tellingen, capaciteit). */
95
- export async function runFinalSteps(days = 21) {
93
+ export async function runFinalSteps(sb, days = 21) {
96
94
  const today = new Date();
97
95
  const until = new Date(today.getTime() + days * 24 * 60 * 60 * 1000);
98
96
  const iso = (d) => d.toISOString().slice(0, 10);
@@ -109,7 +107,7 @@ export async function runFinalSteps(days = 21) {
109
107
  ];
110
108
  const steps = [];
111
109
  for (const call of calls) {
112
- const { error } = await db().rpc(call.fn, call.args);
110
+ const { error } = await sb.rpc(call.fn, call.args);
113
111
  steps.push({ step: call.step, ok: !error, ...(error ? { error: error.message } : {}) });
114
112
  }
115
113
  return steps;