@flowselections/logistiek-engine 1.0.157 → 1.0.162
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/components/AfrondWachtrijCard.js +1 -1
- package/dist-lib/components/BeheerPage.js +5 -5
- package/dist-lib/components/BeladingIndelingCard.js +3 -3
- package/dist-lib/components/BeladingsafwijkingenCard.js +1 -1
- package/dist-lib/components/BufferDebugCard.d.ts +1 -1
- package/dist-lib/components/BufferDebugCard.js +1 -1
- package/dist-lib/components/CapaciteitMeldingenCard.js +1 -1
- package/dist-lib/components/FloridayPoortCard.js +1 -1
- package/dist-lib/components/FloridayPushCard.js +1 -1
- package/dist-lib/components/FlowCanvas.d.ts +5 -5
- package/dist-lib/components/FlowCanvas.js +4 -4
- package/dist-lib/components/FlowOrders.d.ts +1 -1
- package/dist-lib/components/FlowOrders.js +3 -3
- package/dist-lib/components/FlowPage.js +21 -21
- package/dist-lib/components/GearchiveerdeOrdersCard.js +1 -1
- package/dist-lib/components/GeblokkeerdeOrdersCard.js +1 -1
- package/dist-lib/components/KardekkingCard.js +1 -1
- package/dist-lib/components/LadingdragersPage.js +2 -2
- package/dist-lib/components/LogistiekEnginePage.js +5 -5
- package/dist-lib/components/LogistiekEngineQueuePage.js +3 -3
- package/dist-lib/components/MinuutrondeCard.d.ts.map +1 -1
- package/dist-lib/components/MinuutrondeCard.js +4 -4
- package/dist-lib/components/ModulePromptsPage.js +3 -3
- package/dist-lib/components/NodeTracePanel.d.ts +2 -2
- package/dist-lib/components/NodeTracePanel.js +4 -4
- package/dist-lib/components/OrderJourneyBar.d.ts +1 -1
- package/dist-lib/components/OrderJourneyBar.js +2 -2
- package/dist-lib/components/OrderLogboek.d.ts +1 -1
- package/dist-lib/components/OrderLogboek.js +1 -1
- package/dist-lib/components/OrderStopBanner.d.ts +1 -1
- package/dist-lib/components/OrderStopBanner.js +4 -4
- package/dist-lib/components/OrderTraceDetails.d.ts +1 -1
- package/dist-lib/components/OrderTraceDetails.js +2 -2
- package/dist-lib/components/PlanWachtrijPage.js +3 -3
- package/dist-lib/components/PlannerDiffCard.js +1 -1
- package/dist-lib/components/PrintjobsCard.js +1 -1
- package/dist-lib/components/RegiePage.js +11 -11
- package/dist-lib/components/RolPoort.d.ts +1 -1
- package/dist-lib/components/RolPoort.js +1 -1
- package/dist-lib/components/RuleEnginePage.js +11 -11
- package/dist-lib/components/StrategieDialog.d.ts +1 -1
- package/dist-lib/components/TaakGezondheidCard.js +1 -1
- package/dist-lib/components/VertragingMeldingenCard.js +1 -1
- package/dist-lib/components/VoorraadMeldingenCard.js +1 -1
- package/dist-lib/components/WerktijdenCard.js +1 -1
- package/dist-lib/components/WerkwijzeHerindelingCard.js +1 -1
- package/dist-lib/components/rule-engine/CollapsibleGroup.js +1 -1
- package/dist-lib/components/rule-engine/ConditionsEditor.d.ts +1 -1
- package/dist-lib/components/rule-engine/ConditionsEditor.js +1 -1
- package/dist-lib/components/rule-engine/ImpactPanel.d.ts +1 -1
- package/dist-lib/components/rule-engine/ImpactPanel.js +1 -1
- package/dist-lib/components/rule-engine/RuleFieldInput.d.ts +1 -1
- package/dist-lib/components/rule-engine/RuleFieldInput.js +5 -5
- package/dist-lib/components/rule-engine/VersionsPanel.d.ts +2 -2
- package/dist-lib/components/rule-engine/VersionsPanel.js +1 -1
- package/dist-lib/hooks/useFloridayPushes.js +1 -1
- package/dist-lib/hooks/useLadingdragers.d.ts +1 -1
- package/dist-lib/hooks/useLogistiekTaken.d.ts +1 -1
- package/dist-lib/hooks/useLogistiekTaken.js +1 -1
- package/dist-lib/hooks/useMinuutronde.d.ts +5 -0
- package/dist-lib/hooks/useMinuutronde.d.ts.map +1 -1
- package/dist-lib/hooks/useMinuutronde.js +3 -0
- package/dist-lib/hooks/useOrderNodeTrace.d.ts +3 -3
- package/dist-lib/hooks/useOrderNodeTrace.js +3 -3
- package/dist-lib/hooks/useOrderVersies.d.ts +2 -2
- package/dist-lib/hooks/useOrderVersies.js +1 -1
- package/dist-lib/hooks/useRecalcJob.js +1 -1
- package/dist-lib/hooks/useRuleEngine.d.ts +1 -1
- package/dist-lib/hooks/useRuleEngine.js +1 -1
- package/dist-lib/hooks/useShellAdres.d.ts +1 -1
- package/dist-lib/hooks/useShellAdres.js +2 -2
- package/dist-lib/hooks/useWerkwijzeStatus.js +1 -1
- package/dist-lib/index.d.ts +74 -74
- package/dist-lib/index.js +75 -75
- package/dist-lib/integrations/supabase/auth-attacher.js +1 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +236 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/dimensionData.server.d.ts +3 -3
- package/dist-lib/lib/floridayDocuments.functions.d.ts +1 -1
- package/dist-lib/lib/floridayDocuments.functions.js +3 -3
- package/dist-lib/lib/floridayPush.functions.js +1 -1
- package/dist-lib/lib/flowGraph.d.ts +2 -2
- package/dist-lib/lib/flowGraph.js +2 -2
- package/dist-lib/lib/flowJourney.d.ts +2 -2
- package/dist-lib/lib/flowJourney.js +1 -1
- package/dist-lib/lib/flowRoute.d.ts +4 -4
- package/dist-lib/lib/flowRoute.js +4 -4
- package/dist-lib/lib/flowTree.d.ts +1 -1
- package/dist-lib/lib/flowTree.js +2 -2
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +4 -4
- package/dist-lib/lib/loadCarrierPlanning.functions.js +7 -7
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts +3 -3
- package/dist-lib/lib/loadCarrierPlanning.server.js +6 -6
- package/dist-lib/lib/loadCarrierTaskSync.server.d.ts +1 -1
- package/dist-lib/lib/loadCarrierTypes.d.ts +1 -1
- package/dist-lib/lib/logisticsPlanner.d.ts +2 -2
- package/dist-lib/lib/logisticsPlanner.js +2 -2
- package/dist-lib/lib/logisticsRecalcJob.functions.js +2 -2
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +54 -1
- package/dist-lib/lib/moduleVersion.d.ts +1 -1
- package/dist-lib/lib/moduleVersion.js +1 -1
- package/dist-lib/lib/nodeTrace.d.ts +1 -1
- package/dist-lib/lib/nodeTrace.js +1 -1
- package/dist-lib/lib/planQueue.server.d.ts +2 -0
- package/dist-lib/lib/planQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/planQueue.server.js +11 -0
- package/dist-lib/lib/plannerDiff.functions.js +1 -1
- package/dist-lib/lib/ruleEngineImpact.d.ts +1 -1
- package/dist-lib/lib/ruleEngineImpact.js +1 -1
- package/dist-lib/lib/ruleEngineWizard.d.ts +1 -1
- package/dist-lib/lib/ruleEngineWizard.js +1 -1
- package/dist-lib/lib/stopReden.d.ts +3 -3
- package/dist-lib/lib/stopReden.js +3 -3
- package/dist-lib/lib/vakUitleg.d.ts +1 -1
- package/dist-lib/lib/vakUitleg.js +3 -3
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
-
import type { PlannerInputItem } from "./loadCarrierPlanner";
|
|
3
|
-
import type { LoadCarrierTypeRow } from "./loadCarrierTypes";
|
|
4
|
-
import type { DimensionCarrier, DimensionItem } from "./dimensionPlanner";
|
|
2
|
+
import type { PlannerInputItem } from "./loadCarrierPlanner.js";
|
|
3
|
+
import type { LoadCarrierTypeRow } from "./loadCarrierTypes.js";
|
|
4
|
+
import type { DimensionCarrier, DimensionItem } from "./dimensionPlanner.js";
|
|
5
5
|
export interface MissingDimension {
|
|
6
6
|
/** product | fust | ladingdrager */
|
|
7
7
|
subject: "product" | "fust" | "ladingdrager";
|
|
@@ -3,7 +3,7 @@ export declare const getFloridayConnection: import("@tanstack/start-client-core"
|
|
|
3
3
|
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
4
4
|
userId: string;
|
|
5
5
|
claims: import("@supabase/auth-js").User;
|
|
6
|
-
}, undefined, undefined, undefined>], undefined, Promise<import("./floridayDocuments.server").FloridayActiveConnection | import("./floridayDocuments.server").FloridayConnectionError>>;
|
|
6
|
+
}, undefined, undefined, undefined>], undefined, Promise<import("./floridayDocuments.server.js").FloridayActiveConnection | import("./floridayDocuments.server.js").FloridayConnectionError>>;
|
|
7
7
|
/** Eén document voor een printtaak. ok:false is een printfout, geen crash. */
|
|
8
8
|
export declare const fetchLogisticsDocument: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, undefined, undefined, undefined>, import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
9
9
|
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
@@ -11,7 +11,7 @@ export const getFloridayConnection = createServerFn({ method: "GET" })
|
|
|
11
11
|
.middleware([readableServerErrors, requireSupabaseAuth])
|
|
12
12
|
.handler(async () => {
|
|
13
13
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
14
|
-
const { getFlorydayActiveConnection } = await import("./floridayDocuments.server");
|
|
14
|
+
const { getFlorydayActiveConnection } = await import("./floridayDocuments.server.js");
|
|
15
15
|
return getFlorydayActiveConnection(supabaseAdmin);
|
|
16
16
|
});
|
|
17
17
|
/** Eén document voor een printtaak. ok:false is een printfout, geen crash. */
|
|
@@ -20,7 +20,7 @@ export const fetchLogisticsDocument = createServerFn({ method: "POST" })
|
|
|
20
20
|
.inputValidator((input) => input)
|
|
21
21
|
.handler(async ({ data }) => {
|
|
22
22
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
23
|
-
const { getFlorydayDocument, claimDocumentPrint, finishDocumentPrint } = await import("./floridayDocuments.server");
|
|
23
|
+
const { getFlorydayDocument, claimDocumentPrint, finishDocumentPrint } = await import("./floridayDocuments.server.js");
|
|
24
24
|
const supabase = supabaseAdmin;
|
|
25
25
|
const claim = await claimDocumentPrint(supabase, {
|
|
26
26
|
orderRef: data.orderRef,
|
|
@@ -49,7 +49,7 @@ export const fetchMergedLogisticsDocuments = createServerFn({ method: "POST" })
|
|
|
49
49
|
.inputValidator((input) => input)
|
|
50
50
|
.handler(async ({ data }) => {
|
|
51
51
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
52
|
-
const { getFlorydayMergedDocument, claimDocumentPrint, finishDocumentPrint } = await import("./floridayDocuments.server");
|
|
52
|
+
const { getFlorydayMergedDocument, claimDocumentPrint, finishDocumentPrint } = await import("./floridayDocuments.server.js");
|
|
53
53
|
const supabase = supabaseAdmin;
|
|
54
54
|
const claim = await claimDocumentPrint(supabase, {
|
|
55
55
|
orderRef: data.orderRef,
|
|
@@ -15,7 +15,7 @@ export const retryFloridayPush = createServerFn({ method: "POST" })
|
|
|
15
15
|
})
|
|
16
16
|
.handler(async ({ data }) => {
|
|
17
17
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
18
|
-
const { queueFloridayPush } = await import("./floridayPush.server");
|
|
18
|
+
const { queueFloridayPush } = await import("./floridayPush.server.js");
|
|
19
19
|
await queueFloridayPush(supabaseAdmin, data.orderRef);
|
|
20
20
|
return { ok: true };
|
|
21
21
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type RuleEngineSettings, type RuleField, type RuleGroup } from "./ruleEngineSchema";
|
|
2
|
-
import { type WizardStep } from "./ruleEngineWizard";
|
|
1
|
+
import { type RuleEngineSettings, type RuleField, type RuleGroup } from "./ruleEngineSchema.js";
|
|
2
|
+
import { type WizardStep } from "./ruleEngineWizard.js";
|
|
3
3
|
export interface FlowBranch {
|
|
4
4
|
value: string;
|
|
5
5
|
label: string;
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
// de engine gebruikt. Er wordt hier geen aparte flow beschreven: verandert een
|
|
7
7
|
// instelling, dan verandert dit schema mee.
|
|
8
8
|
// ============================================================================
|
|
9
|
-
import { fieldVisible, optionLabel, conditionFieldLabel, conditionOperatorLabel, } from "./ruleEngineSchema";
|
|
10
|
-
import { WIZARD_STEPS } from "./ruleEngineWizard";
|
|
9
|
+
import { fieldVisible, optionLabel, conditionFieldLabel, conditionOperatorLabel, } from "./ruleEngineSchema.js";
|
|
10
|
+
import { WIZARD_STEPS } from "./ruleEngineWizard.js";
|
|
11
11
|
const DAY_SHORT = {
|
|
12
12
|
mon: "ma",
|
|
13
13
|
tue: "di",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FlowTree, TreeNode } from "./flowTree";
|
|
2
|
-
import type { TraceEvent } from "./trace.server";
|
|
1
|
+
import type { FlowTree, TreeNode } from "./flowTree.js";
|
|
2
|
+
import type { TraceEvent } from "./trace.server.js";
|
|
3
3
|
/** Eén vakje op de route die voor deze order geldt. */
|
|
4
4
|
export interface JourneyVak {
|
|
5
5
|
nodeId: string;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
//
|
|
10
10
|
// Puur observerend: hier wordt niets besloten, gepland, geprint of gewijzigd.
|
|
11
11
|
// ============================================================================
|
|
12
|
-
import { FLOW_NODE, bronNodeVoor } from "./flowNodes";
|
|
12
|
+
import { FLOW_NODE, bronNodeVoor } from "./flowNodes.js";
|
|
13
13
|
const HOOFDSTAPPEN = new Set([
|
|
14
14
|
FLOW_NODE.samenvoegen,
|
|
15
15
|
FLOW_NODE.ontvangst,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { FlowTree } from "./flowTree";
|
|
2
|
-
import type { NodeTraceGroep } from "./nodeTrace";
|
|
3
|
-
import { type StopReden } from "./stopReden";
|
|
4
|
-
import type { TraceOrderStand } from "../hooks/useOrderTrace";
|
|
1
|
+
import type { FlowTree } from "./flowTree.js";
|
|
2
|
+
import type { NodeTraceGroep } from "./nodeTrace.js";
|
|
3
|
+
import { type StopReden } from "./stopReden.js";
|
|
4
|
+
import type { TraceOrderStand } from "../hooks/useOrderTrace.js";
|
|
5
5
|
/** Eén herberekening zoals `logistics_trace_versions` die teruggeeft. */
|
|
6
6
|
export interface OrderVersie {
|
|
7
7
|
id: string;
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
// stap gold, komt uit de instellingen van nú; het logboek bewaart (nog) geen
|
|
12
12
|
// momentopname van de werkwijze per herberekening. Dat melden we in de kaart.
|
|
13
13
|
// ============================================================================
|
|
14
|
-
import { WIZARD_STEPS } from "./ruleEngineWizard";
|
|
15
|
-
import { FLOW_NODE, bronNodeVoor } from "./flowNodes";
|
|
16
|
-
import { vakUitleg } from "./vakUitleg";
|
|
17
|
-
import { stopReden, samenkomstStop } from "./stopReden";
|
|
14
|
+
import { WIZARD_STEPS } from "./ruleEngineWizard.js";
|
|
15
|
+
import { FLOW_NODE, bronNodeVoor } from "./flowNodes.js";
|
|
16
|
+
import { vakUitleg } from "./vakUitleg.js";
|
|
17
|
+
import { stopReden, samenkomstStop } from "./stopReden.js";
|
|
18
18
|
const STEP_IDS = WIZARD_STEPS.map((s) => s.id);
|
|
19
19
|
const STAP = {
|
|
20
20
|
combineren: STEP_IDS[0] ?? "orders_combineren",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type RuleEngineSettings, type RuleField } from "./ruleEngineSchema";
|
|
1
|
+
import { type RuleEngineSettings, type RuleField } from "./ruleEngineSchema.js";
|
|
2
2
|
export type FlowState = "active" | "possible" | "disabled";
|
|
3
3
|
export type TreeNodeKind = "start" | "end" | "source" | "step" | "decision" | "setting" | "option" | "merge";
|
|
4
4
|
export interface TreeOption {
|
package/dist-lib/lib/flowTree.js
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
// dezelfde `fieldVisible`-logica bepaald die de engine en het instelscherm
|
|
9
9
|
// gebruiken. Er staat hier geen aparte flowlogica.
|
|
10
10
|
// ============================================================================
|
|
11
|
-
import { fieldVisible, optionLabel, } from "./ruleEngineSchema";
|
|
12
|
-
import { WIZARD_STEPS, fieldHelp } from "./ruleEngineWizard";
|
|
11
|
+
import { fieldVisible, optionLabel, } from "./ruleEngineSchema.js";
|
|
12
|
+
import { WIZARD_STEPS, fieldHelp } from "./ruleEngineWizard.js";
|
|
13
13
|
export const NODE_SIZE = {
|
|
14
14
|
start: { w: 240, h: 60 },
|
|
15
15
|
end: { w: 240, h: 60 },
|
|
@@ -10,7 +10,7 @@ export declare const replanOrderLoadCarriers: import("@tanstack/start-client-cor
|
|
|
10
10
|
orderId: string;
|
|
11
11
|
dryRun?: boolean;
|
|
12
12
|
carrierType?: string | null;
|
|
13
|
-
}, Promise<import("./loadCarrierPlanning.server").ReplanResult | null>>;
|
|
13
|
+
}, Promise<import("./loadCarrierPlanning.server.js").ReplanResult | null>>;
|
|
14
14
|
export declare const replanBufferLoadCarriers: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, undefined, undefined, undefined>, import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
15
15
|
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
16
16
|
userId: string;
|
|
@@ -23,7 +23,7 @@ export declare const replanBufferLoadCarriers: import("@tanstack/start-client-co
|
|
|
23
23
|
bufferId: string;
|
|
24
24
|
dryRun?: boolean;
|
|
25
25
|
carrierType?: string | null;
|
|
26
|
-
}, Promise<import("./loadCarrierPlanning.server").ReplanResult>>;
|
|
26
|
+
}, Promise<import("./loadCarrierPlanning.server.js").ReplanResult>>;
|
|
27
27
|
/**
|
|
28
28
|
* Deelt alle orders in, in batches. De client roept dit net zo lang aan tot
|
|
29
29
|
* `done` waar is en schakelt dan door naar de volgende fase.
|
|
@@ -40,7 +40,7 @@ export declare const planAllLoadCarriers: import("@tanstack/start-client-core").
|
|
|
40
40
|
phase?: "buffers" | "orders";
|
|
41
41
|
cursor?: string | null;
|
|
42
42
|
limit?: number;
|
|
43
|
-
}, Promise<import("./bulkLoadCarrierPlanning.server").BulkPlanBatchResult>>;
|
|
43
|
+
}, Promise<import("./bulkLoadCarrierPlanning.server.js").BulkPlanBatchResult>>;
|
|
44
44
|
/**
|
|
45
45
|
* Zet voor orders zonder takenketen alsnog een melding klaar, zodat de Engine
|
|
46
46
|
* de volledige keten (inclusief load.compose) aanmaakt.
|
|
@@ -70,5 +70,5 @@ export declare const previewLoadCarrierPlan: import("@tanstack/start-client-core
|
|
|
70
70
|
}) => {
|
|
71
71
|
orderId: string;
|
|
72
72
|
carrierType?: string | null;
|
|
73
|
-
}, Promise<import("./loadCarrierPlanning.server").ReplanResult | null>>;
|
|
73
|
+
}, Promise<import("./loadCarrierPlanning.server.js").ReplanResult | null>>;
|
|
74
74
|
//# sourceMappingURL=loadCarrierPlanning.functions.d.ts.map
|
|
@@ -14,8 +14,8 @@ export const replanOrderLoadCarriers = createServerFn({ method: "POST" })
|
|
|
14
14
|
})
|
|
15
15
|
.handler(async ({ data }) => {
|
|
16
16
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
17
|
-
const { replanOrderInternal } = await import("./loadCarrierPlanning.server");
|
|
18
|
-
const { attachIndelingToTasks } = await import("./loadCarrierTaskSync.server");
|
|
17
|
+
const { replanOrderInternal } = await import("./loadCarrierPlanning.server.js");
|
|
18
|
+
const { attachIndelingToTasks } = await import("./loadCarrierTaskSync.server.js");
|
|
19
19
|
const result = await replanOrderInternal(supabaseAdmin, data.orderId, {
|
|
20
20
|
dryRun: data.dryRun,
|
|
21
21
|
carrierType: data.carrierType ?? null,
|
|
@@ -34,8 +34,8 @@ export const replanBufferLoadCarriers = createServerFn({ method: "POST" })
|
|
|
34
34
|
})
|
|
35
35
|
.handler(async ({ data }) => {
|
|
36
36
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
37
|
-
const { replanBufferInternal } = await import("./loadCarrierPlanning.server");
|
|
38
|
-
const { attachIndelingToTasks } = await import("./loadCarrierTaskSync.server");
|
|
37
|
+
const { replanBufferInternal } = await import("./loadCarrierPlanning.server.js");
|
|
38
|
+
const { attachIndelingToTasks } = await import("./loadCarrierTaskSync.server.js");
|
|
39
39
|
const result = await replanBufferInternal(supabaseAdmin, data.bufferId, {
|
|
40
40
|
dryRun: data.dryRun,
|
|
41
41
|
carrierType: data.carrierType ?? null,
|
|
@@ -53,7 +53,7 @@ export const planAllLoadCarriers = createServerFn({ method: "POST" })
|
|
|
53
53
|
.inputValidator((data) => data ?? {})
|
|
54
54
|
.handler(async ({ data }) => {
|
|
55
55
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
56
|
-
const { planBuffersBatch, planLooseOrdersBatch } = await import("./bulkLoadCarrierPlanning.server");
|
|
56
|
+
const { planBuffersBatch, planLooseOrdersBatch } = await import("./bulkLoadCarrierPlanning.server.js");
|
|
57
57
|
const limit = Math.min(Math.max(Number(data.limit ?? 20), 1), 50);
|
|
58
58
|
const cursor = data.cursor ?? null;
|
|
59
59
|
if (data.phase === "orders")
|
|
@@ -69,7 +69,7 @@ export const ensureLogisticsTasks = createServerFn({ method: "POST" })
|
|
|
69
69
|
.inputValidator((data) => data ?? {})
|
|
70
70
|
.handler(async ({ data, context }) => {
|
|
71
71
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
72
|
-
const { findOrdersWithoutTasks } = await import("./bulkLoadCarrierPlanning.server");
|
|
72
|
+
const { findOrdersWithoutTasks } = await import("./bulkLoadCarrierPlanning.server.js");
|
|
73
73
|
const limit = Math.min(Math.max(Number(data.limit ?? 50), 1), 200);
|
|
74
74
|
const orders = await findOrdersWithoutTasks(supabaseAdmin, limit);
|
|
75
75
|
let created = 0;
|
|
@@ -107,6 +107,6 @@ export const previewLoadCarrierPlan = createServerFn({ method: "POST" })
|
|
|
107
107
|
})
|
|
108
108
|
.handler(async ({ data }) => {
|
|
109
109
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
110
|
-
const { replanOrderInternal } = await import("./loadCarrierPlanning.server");
|
|
110
|
+
const { replanOrderInternal } = await import("./loadCarrierPlanning.server.js");
|
|
111
111
|
return replanOrderInternal(supabaseAdmin, data.orderId, { dryRun: true, carrierType: data.carrierType ?? null });
|
|
112
112
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
-
import { type CarrierProfile, type PlannedLoadUnit, type PlannerInputItem } from "./loadCarrierPlanner";
|
|
3
|
-
import { type LoadCarrierTypeRow } from "./loadCarrierTypes";
|
|
4
|
-
import { type DimensionCart } from "./dimensionPlanner";
|
|
2
|
+
import { type CarrierProfile, type PlannedLoadUnit, type PlannerInputItem } from "./loadCarrierPlanner.js";
|
|
3
|
+
import { type LoadCarrierTypeRow } from "./loadCarrierTypes.js";
|
|
4
|
+
import { type DimensionCart } from "./dimensionPlanner.js";
|
|
5
5
|
export declare function resolveBufferForOrderInternal(sb: SupabaseClient, orderId: string): Promise<string | null>;
|
|
6
6
|
interface Belading {
|
|
7
7
|
plants_per_crate: number;
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
// draait de pure planner per ladingdragertype en schrijft het resultaat weg
|
|
6
6
|
// naar order_carts / order_cart_items.
|
|
7
7
|
// ============================================================================
|
|
8
|
-
import { planLoadUnits, LOAD_CARRIER_PLANNER_VERSION, } from "./loadCarrierPlanner";
|
|
9
|
-
import { traceBatch } from "./trace.server";
|
|
10
|
-
import { MODULE_VERSION } from "./moduleVersion";
|
|
11
|
-
import { fallbackCarrierProfile } from "./loadCarrierTypes";
|
|
12
|
-
import { planByDimensions, DIMENSION_PLANNER_VERSION } from "./dimensionPlanner";
|
|
13
|
-
import { buildDimensionItems, carrierDimensions } from "./dimensionData.server";
|
|
8
|
+
import { planLoadUnits, LOAD_CARRIER_PLANNER_VERSION, } from "./loadCarrierPlanner.js";
|
|
9
|
+
import { traceBatch } from "./trace.server.js";
|
|
10
|
+
import { MODULE_VERSION } from "./moduleVersion.js";
|
|
11
|
+
import { fallbackCarrierProfile } from "./loadCarrierTypes.js";
|
|
12
|
+
import { planByDimensions, DIMENSION_PLANNER_VERSION } from "./dimensionPlanner.js";
|
|
13
|
+
import { buildDimensionItems, carrierDimensions } from "./dimensionData.server.js";
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
15
15
|
// Buffer
|
|
16
16
|
// ---------------------------------------------------------------------------
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
-
import type { ReplanResult } from "./loadCarrierPlanning.server";
|
|
2
|
+
import type { ReplanResult } from "./loadCarrierPlanning.server.js";
|
|
3
3
|
export declare function attachIndelingToTasks(sb: SupabaseClient, result: ReplanResult | null): Promise<number>;
|
|
4
4
|
//# sourceMappingURL=loadCarrierTaskSync.server.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CapacityModel, CarrierProfile } from "./loadCarrierPlanner";
|
|
1
|
+
import type { CapacityModel, CarrierProfile } from "./loadCarrierPlanner.js";
|
|
2
2
|
export type LoadCarrierCode = "trolley" | "danish_container" | "euro_rolcontainer" | "pallet" | "euro_pallet" | "loose";
|
|
3
3
|
export interface LoadCarrierTypeRow extends CarrierProfile {
|
|
4
4
|
id: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { RuleEngineSettings } from "./ruleEngineSchema";
|
|
2
|
-
import { type LogisticsModuleKey, type LogisticsTaskType } from "./logisticsTasks";
|
|
1
|
+
import type { RuleEngineSettings } from "./ruleEngineSchema.js";
|
|
2
|
+
import { type LogisticsModuleKey, type LogisticsTaskType } from "./logisticsTasks.js";
|
|
3
3
|
export type LoadCarrierType = "trolley" | "danish_container" | "euro_rolcontainer" | "pallet" | "euro_pallet" | "loose";
|
|
4
4
|
export interface PlannerLoadCarrier {
|
|
5
5
|
type: LoadCarrierType;
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
// Volledig deterministisch: zelfde input geeft altijd dezelfde taken.
|
|
6
6
|
// Geen database, geen netwerk — daardoor los testbaar.
|
|
7
7
|
// ============================================================================
|
|
8
|
-
import { TASK_OWNER } from "./logisticsTasks";
|
|
9
|
-
import { normalizeBufferCriteria } from "./bufferMatching";
|
|
8
|
+
import { TASK_OWNER } from "./logisticsTasks.js";
|
|
9
|
+
import { normalizeBufferCriteria } from "./bufferMatching.js";
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
11
11
|
// Hulp
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
@@ -9,7 +9,7 @@ export const startRecalcJob = createServerFn({ method: "POST" })
|
|
|
9
9
|
.inputValidator((data) => data ?? {})
|
|
10
10
|
.handler(async ({ data, context }) => {
|
|
11
11
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
12
|
-
const { startJob } = await import("./logisticsRecalcJob.server");
|
|
12
|
+
const { startJob } = await import("./logisticsRecalcJob.server.js");
|
|
13
13
|
const job = await startJob(supabaseAdmin, context.userId ?? null, data.strategyId ?? null);
|
|
14
14
|
return { id: job.id, status: job.status, phase: job.phase };
|
|
15
15
|
});
|
|
@@ -17,7 +17,7 @@ export const tickRecalcJob = createServerFn({ method: "POST" })
|
|
|
17
17
|
.middleware([readableServerErrors, requireSupabaseAuth])
|
|
18
18
|
.handler(async () => {
|
|
19
19
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
20
|
-
const { tickJob } = await import("./logisticsRecalcJob.server");
|
|
20
|
+
const { tickJob } = await import("./logisticsRecalcJob.server.js");
|
|
21
21
|
const job = await tickJob(supabaseAdmin);
|
|
22
22
|
return job
|
|
23
23
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modulePrompts.d.ts","sourceRoot":"","sources":["../../src/lib/modulePrompts.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CAKvB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAKhE,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;
|
|
1
|
+
{"version":3,"file":"modulePrompts.d.ts","sourceRoot":"","sources":["../../src/lib/modulePrompts.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CAKvB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAKhE,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;AAguLD,eAAO,MAAM,cAAc,EAAE,YAAY,EAUL,CAAC;AAErC,gEAAgE;AAChE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,oBAAoB,GAC7B,MAAM,CAmBR;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE9D;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,IAAI,MAAM,CAiB9C;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,eAAe,EAC1B,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAIR"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// bij (oplopend genummerd). Zo kan een al verstuurde prompt gewoon blijven
|
|
7
7
|
// staan en stuur je alleen het nieuwe stuk door.
|
|
8
8
|
// ============================================================================
|
|
9
|
-
import { LOGISTICS_MODULES } from "./logisticsTasks";
|
|
9
|
+
import { LOGISTICS_MODULES } from "./logisticsTasks.js";
|
|
10
10
|
/**
|
|
11
11
|
* Modules met een koppelprompt. Naast de modules die taken uitvoeren staat hier
|
|
12
12
|
* ook de Layout maker: die voert geen logistieke taken uit, maar levert wel de
|
|
@@ -1050,6 +1050,59 @@ REGELS
|
|
|
1050
1050
|
CONTROLELIJST
|
|
1051
1051
|
[ ] Buffer met 2 orders en 2 karren: beide orders tonen 2 karren, "gedeeld".
|
|
1052
1052
|
[ ] Losse order: geen "gedeeld".
|
|
1053
|
+
[ ] Meld terug met je pakketversie.`,
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
number: 24,
|
|
1057
|
+
title: "Ophaalmoment uitsluitend uit logistics_order_departure",
|
|
1058
|
+
date: "2026-10-19",
|
|
1059
|
+
summary: "Verkoop rekent ophalen/aanmelden zelf en toont bij HO-2601441 wo 21-10; de juiste uitkomst is di 20-10 15:00. Toon alleen wat de Engine teruggeeft.",
|
|
1060
|
+
body: `KOPPELPROMPT VERKOOP 24 – vereist Logistiek Engine 1.0.160
|
|
1061
|
+
|
|
1062
|
+
WAAROM
|
|
1063
|
+
Bij HO-2601441 (levering wo 21 okt 08:00, vervoerder met ophaalmoment
|
|
1064
|
+
"1 werkdag vóór levering 15:00, aanmelden 13:00") toont Verkoop
|
|
1065
|
+
"wo 21 okt 15:00 ophalen · aanmelden di 20 okt 13:00 · aanlevering 08:00".
|
|
1066
|
+
Dat klopt niet: ophalen is di 20 okt 15:00, aanmelden di 20 okt 13:00.
|
|
1067
|
+
Verkoop rekent het ophaalmoment zelf uit en telt de dagen voor ophalen niet
|
|
1068
|
+
terug. Pickstation, taken en karren gebruiken de Engine-uitkomst; Verkoop
|
|
1069
|
+
moet exact hetzelfde tonen.
|
|
1070
|
+
|
|
1071
|
+
WAT ER IS
|
|
1072
|
+
public.logistics_order_departure(p_order_id uuid) RETURNS jsonb
|
|
1073
|
+
Rechten: authenticated en service_role (niet anon). Eén aanroep per order.
|
|
1074
|
+
Velden (ontbrekend = null):
|
|
1075
|
+
- ok boolean – false als er geen geldig ophaalmoment is
|
|
1076
|
+
- reason text – Nederlandse reden als ok = false (of bij terugval op levermoment)
|
|
1077
|
+
- carrierId uuid – vervoerder van de order
|
|
1078
|
+
- momentKey text – ophaalmomentsleutel in Afhandeling-formaat, bv. "1@15:00|1@13:00"
|
|
1079
|
+
- departureAt timestamptz – ophaal/vertrekmoment
|
|
1080
|
+
- signupDeadline timestamptz – aanmelddeadline
|
|
1081
|
+
- lateSignup boolean – order kwam binnen na de aanmelddeadline
|
|
1082
|
+
Werkdagen komen uit logistics_is_pick_workday (incl. afwijkende dagen), de
|
|
1083
|
+
tijdzone uit Werktijden.
|
|
1084
|
+
|
|
1085
|
+
WAT JIJ DOET
|
|
1086
|
+
1. Verwijder de eigen berekening van ophaal- en aanmeldmoment in Verkoop.
|
|
1087
|
+
2. Toon "ophalen" uit departureAt en "aanmelden" uit signupDeadline, in de
|
|
1088
|
+
tijdzone die de Shell al gebruikt voor datums.
|
|
1089
|
+
3. lateSignup = true: toon "te laat aangemeld" naast het ophaalmoment.
|
|
1090
|
+
4. ok = false of geen antwoord: toon de reden uit reason, geen eigen
|
|
1091
|
+
berekening of terugvaltijd.
|
|
1092
|
+
5. "aanlevering" (levermoment van de order) mag blijven, maar los van het
|
|
1093
|
+
ophaalmoment.
|
|
1094
|
+
6. Meerdere orders tegelijk: roep per zichtbare order aan, of vraag de
|
|
1095
|
+
Engine om een lijstfunctie (meld dat terug); niet zelf rekenen.
|
|
1096
|
+
|
|
1097
|
+
REGELS
|
|
1098
|
+
- Match op id. Geen omgevingswaarden. Wijzig geen Engine-functies of -rechten.
|
|
1099
|
+
- Teksten in "je"-vorm, zonder technische termen.
|
|
1100
|
+
|
|
1101
|
+
CONTROLELIJST
|
|
1102
|
+
[ ] HO-2601441: "di 20 okt 15:00 ophalen · aanmelden di 20 okt 13:00".
|
|
1103
|
+
[ ] FO-2601440 (levering ma 26 okt): "vr 23 okt 15:00 ophalen".
|
|
1104
|
+
[ ] MO-2601442: "wo 21 okt 09:30 ophalen".
|
|
1105
|
+
[ ] Order zonder vervoerder: reden zichtbaar, geen verzonnen tijd.
|
|
1053
1106
|
[ ] Meld terug met je pakketversie.`,
|
|
1054
1107
|
},
|
|
1055
1108
|
],
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const MODULE_VERSION = "1.0.
|
|
1
|
+
export declare const MODULE_VERSION = "1.0.162";
|
|
2
2
|
//# sourceMappingURL=moduleVersion.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatisch gegenereerd door prebuild:lib; niet handmatig aanpassen.
|
|
2
|
-
export const MODULE_VERSION = "1.0.
|
|
2
|
+
export const MODULE_VERSION = "1.0.162";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TraceEventRow } from "../hooks/useLogisticsTrace";
|
|
1
|
+
import type { TraceEventRow } from "../hooks/useLogisticsTrace.js";
|
|
2
2
|
export type NodeStatus = "geslaagd" | "wachtend" | "waarschuwing" | "overgeslagen" | "mislukt";
|
|
3
3
|
export interface NodeTraceGroep {
|
|
4
4
|
nodeId: string;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// gebeurtenissen missen dat; die plaatsen we met een terugval op stap/fase.
|
|
6
6
|
// Alleen lezen: hier wordt niets bepaald, alleen gegroepeerd.
|
|
7
7
|
// ============================================================================
|
|
8
|
-
import { FLOW_NODE } from "./flowNodes";
|
|
8
|
+
import { FLOW_NODE } from "./flowNodes.js";
|
|
9
9
|
/** Terugval voor oude gebeurtenissen zonder vastgelegd vakje. */
|
|
10
10
|
export function gokNode(e) {
|
|
11
11
|
if (e.nodeId)
|
|
@@ -14,6 +14,8 @@ export declare function runPlanQueue(sb: SupabaseClient, options?: {
|
|
|
14
14
|
deadlineAt?: number;
|
|
15
15
|
limit?: number | null;
|
|
16
16
|
}): Promise<PlanQueueResult>;
|
|
17
|
+
/** Elke minuut: vertrek op nieuwe karren en taakstatus laten meelopen (alleen nieuwe orders). */
|
|
18
|
+
export declare const FOLLOW_UP_CALLS: readonly ["logistics_fill_cart_departure", "logistics_sync_task_status"];
|
|
17
19
|
/** Ruimt afgeronde wachtrijrijen op volgens de ingestelde bewaartermijn. */
|
|
18
20
|
export declare function prunePlanQueue(sb: SupabaseClient): Promise<void>;
|
|
19
21
|
//# sourceMappingURL=planQueue.server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/planQueue.server.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwBD,wFAAwF;AACxF,wBAAsB,YAAY,CAChC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAC3D,OAAO,CAAC,eAAe,CAAC,CAwR1B;
|
|
1
|
+
{"version":3,"file":"planQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/planQueue.server.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwBD,wFAAwF;AACxF,wBAAsB,YAAY,CAChC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAC3D,OAAO,CAAC,eAAe,CAAC,CAwR1B;AAgCD,iGAAiG;AACjG,eAAO,MAAM,eAAe,0EAA2E,CAAC;AAgCxG,4EAA4E;AAE5E,wBAAsB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE"}
|
|
@@ -310,6 +310,16 @@ async function runDayLevelSteps(sb, dates, result) {
|
|
|
310
310
|
if (error && result.errors.length < 10)
|
|
311
311
|
result.errors.push(`${call.fn}: ${error.message}`);
|
|
312
312
|
}
|
|
313
|
+
await runCartAndTaskFollowUp(sb, result);
|
|
314
|
+
}
|
|
315
|
+
/** Elke minuut: vertrek op nieuwe karren en taakstatus laten meelopen (alleen nieuwe orders). */
|
|
316
|
+
export const FOLLOW_UP_CALLS = ["logistics_fill_cart_departure", "logistics_sync_task_status"];
|
|
317
|
+
async function runCartAndTaskFollowUp(sb, result) {
|
|
318
|
+
for (const fn of FOLLOW_UP_CALLS) {
|
|
319
|
+
const { error } = await sb.rpc(fn, {});
|
|
320
|
+
if (error && result.errors.length < 10)
|
|
321
|
+
result.errors.push(`${fn}: ${error.message}`);
|
|
322
|
+
}
|
|
313
323
|
}
|
|
314
324
|
/** Werkt alleen de pickwachtrij bij, ook als er niets te plannen viel. */
|
|
315
325
|
async function syncPickQueue(sb, result) {
|
|
@@ -322,6 +332,7 @@ async function syncPickQueue(sb, result) {
|
|
|
322
332
|
if (pruneError && result.errors.length < 10) {
|
|
323
333
|
result.errors.push(`logistics_prune_buffer_member_queue: ${pruneError.message}`);
|
|
324
334
|
}
|
|
335
|
+
await runCartAndTaskFollowUp(sb, result);
|
|
325
336
|
// Ook zonder nieuwe planning schuift de reis van bestaande orders door.
|
|
326
337
|
const { error: traceError } = await sb.rpc("logistics_trace_progress", { p_limit: 200 });
|
|
327
338
|
if (traceError && result.errors.length < 10) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createServerFn } from "@tanstack/react-start";
|
|
3
3
|
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
|
|
4
4
|
import { readableServerErrors } from "./readableServerErrors.js";
|
|
5
|
-
import { summarizeDiffRuns } from "./plannerDiff";
|
|
5
|
+
import { summarizeDiffRuns } from "./plannerDiff.js";
|
|
6
6
|
export const getPlannerDiffOverview = createServerFn({ method: "GET" })
|
|
7
7
|
.middleware([readableServerErrors, requireSupabaseAuth])
|
|
8
8
|
.handler(async () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// src/lib/ruleEngineImpact.ts — impactanalyse en versievergelijking
|
|
3
3
|
// ============================================================================
|
|
4
|
-
import { RULE_STEPS, optionLabel, } from "./ruleEngineSchema";
|
|
4
|
+
import { RULE_STEPS, optionLabel, } from "./ruleEngineSchema.js";
|
|
5
5
|
function f(settings, step, key) {
|
|
6
6
|
return settings?.[step]?.fields?.[key];
|
|
7
7
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// stappen en blokken. De opslag blijft ongewijzigd: elke wizardstap schrijft
|
|
6
6
|
// naar de bestaande stap-id uit RULE_STEPS (`storeId`).
|
|
7
7
|
// ============================================================================
|
|
8
|
-
import { RULE_STEPS, optionLabel, } from "./ruleEngineSchema";
|
|
8
|
+
import { RULE_STEPS, optionLabel, } from "./ruleEngineSchema.js";
|
|
9
9
|
function step(id) {
|
|
10
10
|
const found = RULE_STEPS.find((s) => s.id === id);
|
|
11
11
|
if (!found)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { TraceOrderStand } from "../hooks/useOrderTrace";
|
|
2
|
-
import type { ShippingNoteDiagnose } from "../hooks/useShippingNoteDiagnose";
|
|
3
|
-
import type { NodeTraceGroep } from "./nodeTrace";
|
|
1
|
+
import type { TraceOrderStand } from "../hooks/useOrderTrace.js";
|
|
2
|
+
import type { ShippingNoteDiagnose } from "../hooks/useShippingNoteDiagnose.js";
|
|
3
|
+
import type { NodeTraceGroep } from "./nodeTrace.js";
|
|
4
4
|
export type StopSoort = "mislukt" | "wachtrij" | "handeling" | "nietvastgelegd" | "klaar";
|
|
5
5
|
export interface StopReden {
|
|
6
6
|
soort: StopSoort;
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
// de kaart, in het zijpaneel en in de balk boven de kaart wordt getoond.
|
|
6
6
|
// Alleen lezen: hier wordt niets bepaald of gewijzigd.
|
|
7
7
|
// ============================================================================
|
|
8
|
-
import { FLOW_NODE, flowNodeLabel } from "./flowNodes";
|
|
9
|
-
import { foutSoort, foutTekst } from "./foutTekst";
|
|
10
|
-
import { vakUitleg } from "./vakUitleg";
|
|
8
|
+
import { FLOW_NODE, flowNodeLabel } from "./flowNodes.js";
|
|
9
|
+
import { foutSoort, foutTekst } from "./foutTekst.js";
|
|
10
|
+
import { vakUitleg } from "./vakUitleg.js";
|
|
11
11
|
const WACHTRIJ_TEKST = {
|
|
12
12
|
pending: "de berekening staat in de wachtrij en is nog niet opgepakt",
|
|
13
13
|
queued: "de berekening staat in de wachtrij en is nog niet opgepakt",
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
// Eén bron van uitleg voor zowel het vakje op de flowkaart als het zijpaneel.
|
|
5
5
|
// Alleen lezen: hier wordt niets bepaald, alleen leesbaar gemaakt.
|
|
6
6
|
// ============================================================================
|
|
7
|
-
import { FLOW_NODE } from "./flowNodes";
|
|
8
|
-
import { foutTekst } from "./foutTekst";
|
|
9
|
-
import { isAutomatisch } from "./nodeTrace";
|
|
7
|
+
import { FLOW_NODE } from "./flowNodes.js";
|
|
8
|
+
import { foutTekst } from "./foutTekst.js";
|
|
9
|
+
import { isAutomatisch } from "./nodeTrace.js";
|
|
10
10
|
const LABELS = {
|
|
11
11
|
aanmeldmoment: "Aanmeldmoment",
|
|
12
12
|
nu: "Huidige tijd",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowselections/logistiek-engine",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.162",
|
|
4
4
|
"flowselections": {
|
|
5
5
|
"moduleId": "logistiek-engine",
|
|
6
6
|
"pages": [
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"dev": "vite dev",
|
|
113
113
|
"build": "vite build",
|
|
114
114
|
"prebuild:lib": "node -e \"const v=require('./package.json').version;require('fs').writeFileSync('src/lib/moduleVersion.ts','// Automatisch gegenereerd door prebuild:lib; niet handmatig aanpassen.\\nexport const MODULE_VERSION = '+JSON.stringify(v)+';\\n')\"",
|
|
115
|
-
"build:lib": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && node -e \"require('fs').writeFileSync('dist-lib/styles.css', '@source \\\"./\\\";\\n')\"",
|
|
115
|
+
"build:lib": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && node -e \"require('fs').writeFileSync('dist-lib/styles.css', '@source \\\"./\\\";\\n')\"",
|
|
116
116
|
"build:lib:watch": "tsc -p tsconfig.build.json --watch",
|
|
117
117
|
"build:dev": "vite build --mode development",
|
|
118
118
|
"preview": "vite preview",
|