@flowselections/logistiek-engine 1.0.53 → 1.0.90
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/README.md +24 -24
- package/dist-lib/components/AfrondWachtrijCard.d.ts +2 -0
- package/dist-lib/components/AfrondWachtrijCard.d.ts.map +1 -0
- package/dist-lib/components/AfrondWachtrijCard.js +27 -0
- package/dist-lib/components/BeladingsafwijkingenCard.d.ts +2 -0
- package/dist-lib/components/BeladingsafwijkingenCard.d.ts.map +1 -0
- package/dist-lib/components/BeladingsafwijkingenCard.js +44 -0
- package/dist-lib/components/FlowCanvas.d.ts +6 -0
- package/dist-lib/components/FlowCanvas.d.ts.map +1 -1
- package/dist-lib/components/FlowCanvas.js +79 -18
- package/dist-lib/components/FlowOrders.d.ts.map +1 -1
- package/dist-lib/components/FlowOrders.js +59 -13
- package/dist-lib/components/FlowPage.d.ts.map +1 -1
- package/dist-lib/components/FlowPage.js +175 -6
- package/dist-lib/components/GeblokkeerdeOrdersCard.d.ts.map +1 -1
- package/dist-lib/components/GeblokkeerdeOrdersCard.js +21 -2
- package/dist-lib/components/KardekkingCard.d.ts +2 -0
- package/dist-lib/components/KardekkingCard.d.ts.map +1 -0
- package/dist-lib/components/KardekkingCard.js +29 -0
- package/dist-lib/components/LogistiekEnginePage.d.ts.map +1 -1
- package/dist-lib/components/LogistiekEnginePage.js +7 -1
- package/dist-lib/components/LogistiekEngineQueuePage.d.ts.map +1 -1
- package/dist-lib/components/LogistiekEngineQueuePage.js +4 -2
- package/dist-lib/components/NodeTracePanel.d.ts +4 -1
- package/dist-lib/components/NodeTracePanel.d.ts.map +1 -1
- package/dist-lib/components/NodeTracePanel.js +8 -2
- package/dist-lib/components/OrderStopBanner.d.ts +9 -2
- package/dist-lib/components/OrderStopBanner.d.ts.map +1 -1
- package/dist-lib/components/OrderStopBanner.js +27 -13
- package/dist-lib/components/OrderTraceDetails.d.ts.map +1 -1
- package/dist-lib/components/OrderTraceDetails.js +2 -1
- package/dist-lib/components/PlanWachtrijPage.d.ts +2 -0
- package/dist-lib/components/PlanWachtrijPage.d.ts.map +1 -0
- package/dist-lib/components/PlanWachtrijPage.js +99 -0
- package/dist-lib/components/PlannerDiffCard.d.ts +2 -0
- package/dist-lib/components/PlannerDiffCard.d.ts.map +1 -0
- package/dist-lib/components/PlannerDiffCard.js +25 -0
- package/dist-lib/components/RegiePage.d.ts.map +1 -1
- package/dist-lib/components/RegiePage.js +21 -13
- package/dist-lib/components/TaakGezondheidCard.d.ts +2 -0
- package/dist-lib/components/TaakGezondheidCard.d.ts.map +1 -0
- package/dist-lib/components/TaakGezondheidCard.js +31 -0
- package/dist-lib/hooks/useAfrondWachtrij.d.ts +28 -0
- package/dist-lib/hooks/useAfrondWachtrij.d.ts.map +1 -0
- package/dist-lib/hooks/useAfrondWachtrij.js +88 -0
- package/dist-lib/hooks/useBeladingsafwijkingen.d.ts +39 -0
- package/dist-lib/hooks/useBeladingsafwijkingen.d.ts.map +1 -0
- package/dist-lib/hooks/useBeladingsafwijkingen.js +119 -0
- package/dist-lib/hooks/useGeblokkeerdeOrders.d.ts +7 -0
- package/dist-lib/hooks/useGeblokkeerdeOrders.d.ts.map +1 -1
- package/dist-lib/hooks/useGeblokkeerdeOrders.js +28 -2
- package/dist-lib/hooks/useLogisticsTrace.js +1 -1
- package/dist-lib/hooks/useOrderTrace.js +1 -1
- package/dist-lib/hooks/useOrderVersies.d.ts.map +1 -1
- package/dist-lib/hooks/useOrderVersies.js +17 -3
- package/dist-lib/hooks/usePlanWachtrij.d.ts +33 -0
- package/dist-lib/hooks/usePlanWachtrij.d.ts.map +1 -0
- package/dist-lib/hooks/usePlanWachtrij.js +104 -0
- package/dist-lib/hooks/useRecalcJob.js +1 -1
- package/dist-lib/hooks/useShippingNoteDiagnose.d.ts +20 -0
- package/dist-lib/hooks/useShippingNoteDiagnose.d.ts.map +1 -0
- package/dist-lib/hooks/useShippingNoteDiagnose.js +52 -0
- package/dist-lib/hooks/useTaakGezondheid.d.ts +16 -0
- package/dist-lib/hooks/useTaakGezondheid.d.ts.map +1 -0
- package/dist-lib/hooks/useTaakGezondheid.js +43 -0
- package/dist-lib/hooks/useWerktijden.js +1 -1
- package/dist-lib/hooks/useWerkwijzeStatus.js +1 -1
- package/dist-lib/index.d.ts +10 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +10 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +3147 -159
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +3147 -159
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +3147 -159
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/previewAuthStorage.d.ts +1 -1
- package/dist-lib/integrations/supabase/previewAuthStorage.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/previewAuthStorage.js +8 -1
- package/dist-lib/integrations/supabase/types.d.ts +3183 -161
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/attachAuthToken.js +1 -1
- package/dist-lib/lib/bufferDecision.test.d.ts +2 -0
- package/dist-lib/lib/bufferDecision.test.d.ts.map +1 -0
- package/dist-lib/lib/bufferDecision.test.js +104 -0
- package/dist-lib/lib/cartCoverage.functions.d.ts +30820 -0
- package/dist-lib/lib/cartCoverage.functions.d.ts.map +1 -0
- package/dist-lib/lib/cartCoverage.functions.js +20 -0
- package/dist-lib/lib/floridayDocuments.functions.d.ts +8979 -15
- package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.functions.js +5 -5
- package/dist-lib/lib/floridayPush.functions.d.ts +3147 -159
- package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.functions.js +3 -3
- package/dist-lib/lib/flowJourney.d.ts +40 -0
- package/dist-lib/lib/flowJourney.d.ts.map +1 -0
- package/dist-lib/lib/flowJourney.js +156 -0
- package/dist-lib/lib/flowNodes.d.ts +3 -0
- package/dist-lib/lib/flowNodes.d.ts.map +1 -1
- package/dist-lib/lib/flowNodes.js +6 -0
- package/dist-lib/lib/flowRoute.d.ts +11 -1
- package/dist-lib/lib/flowRoute.d.ts.map +1 -1
- package/dist-lib/lib/flowRoute.js +343 -40
- package/dist-lib/lib/flowTree.d.ts +86 -1
- package/dist-lib/lib/flowTree.d.ts.map +1 -1
- package/dist-lib/lib/flowTree.js +391 -2
- package/dist-lib/lib/foutTekst.d.ts +4 -0
- package/dist-lib/lib/foutTekst.d.ts.map +1 -0
- package/dist-lib/lib/foutTekst.js +43 -0
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts +2 -0
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +56 -0
- package/dist-lib/lib/handlers/logistics-tick.test.d.ts +2 -0
- package/dist-lib/lib/handlers/logistics-tick.test.d.ts.map +1 -0
- package/dist-lib/lib/handlers/logistics-tick.test.js +63 -0
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +14965 -25
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.functions.js +7 -7
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts +24 -12
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +490 -211
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +5986 -10
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.functions.js +4 -4
- package/dist-lib/lib/logisticsRecalcJob.server.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.server.js +17 -2
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts +3147 -159
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.js +2 -2
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +3436 -3325
- package/dist-lib/lib/nodeTrace.d.ts +4 -0
- package/dist-lib/lib/nodeTrace.d.ts.map +1 -1
- package/dist-lib/lib/nodeTrace.js +6 -15
- package/dist-lib/lib/planQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/planQueue.server.js +24 -3
- package/dist-lib/lib/plannerDiff.d.ts +37 -0
- package/dist-lib/lib/plannerDiff.d.ts.map +1 -0
- package/dist-lib/lib/plannerDiff.functions.d.ts +30821 -0
- package/dist-lib/lib/plannerDiff.functions.d.ts.map +1 -0
- package/dist-lib/lib/plannerDiff.functions.js +21 -0
- package/dist-lib/lib/plannerDiff.js +74 -0
- package/dist-lib/lib/plannerDiff.server.d.ts +5 -0
- package/dist-lib/lib/plannerDiff.server.d.ts.map +1 -0
- package/dist-lib/lib/plannerDiff.server.js +60 -0
- package/dist-lib/lib/plannerDiff.test.d.ts +2 -0
- package/dist-lib/lib/plannerDiff.test.d.ts.map +1 -0
- package/dist-lib/lib/plannerDiff.test.js +41 -0
- package/dist-lib/lib/resolveBuffer.test.d.ts +2 -0
- package/dist-lib/lib/resolveBuffer.test.d.ts.map +1 -0
- package/dist-lib/lib/resolveBuffer.test.js +38 -0
- package/dist-lib/lib/ruleEngineSchema.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineSchema.js +52 -0
- package/dist-lib/lib/stopReden.d.ts +43 -0
- package/dist-lib/lib/stopReden.d.ts.map +1 -0
- package/dist-lib/lib/stopReden.js +197 -0
- package/dist-lib/lib/taskCounts.d.ts +2 -0
- package/dist-lib/lib/taskCounts.d.ts.map +1 -0
- package/dist-lib/lib/taskCounts.js +15 -0
- package/dist-lib/lib/taskCounts.test.d.ts +2 -0
- package/dist-lib/lib/taskCounts.test.d.ts.map +1 -0
- package/dist-lib/lib/taskCounts.test.js +12 -0
- package/dist-lib/lib/trace.server.d.ts.map +1 -1
- package/dist-lib/lib/trace.server.js +3 -0
- package/dist-lib/lib/vakUitleg.d.ts.map +1 -1
- package/dist-lib/lib/vakUitleg.js +2 -1
- package/package.json +12 -9
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// src/lib/floridayPush.functions.ts — server functions (thin wrappers)
|
|
3
3
|
// ============================================================================
|
|
4
4
|
import { createServerFn } from "@tanstack/react-start";
|
|
5
|
-
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
|
|
6
|
-
import { readableServerErrors } from "./readableServerErrors";
|
|
5
|
+
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
|
|
6
|
+
import { readableServerErrors } from "./readableServerErrors.js";
|
|
7
7
|
/** Zet een order opnieuw in de wachtrij (handmatig opnieuw proberen). */
|
|
8
8
|
export const retryFloridayPush = createServerFn({ method: "POST" })
|
|
9
9
|
.middleware([readableServerErrors, requireSupabaseAuth])
|
|
@@ -14,7 +14,7 @@ export const retryFloridayPush = createServerFn({ method: "POST" })
|
|
|
14
14
|
return data;
|
|
15
15
|
})
|
|
16
16
|
.handler(async ({ data }) => {
|
|
17
|
-
const { supabaseAdmin } = await import("../integrations/supabase/client.server");
|
|
17
|
+
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
18
18
|
const { queueFloridayPush } = await import("./floridayPush.server");
|
|
19
19
|
await queueFloridayPush(supabaseAdmin, data.orderRef);
|
|
20
20
|
return { ok: true };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { FlowTree, TreeNode } from "./flowTree";
|
|
2
|
+
import type { TraceEvent } from "./trace.server";
|
|
3
|
+
/** Eén vakje op de route die voor deze order geldt. */
|
|
4
|
+
export interface JourneyVak {
|
|
5
|
+
nodeId: string;
|
|
6
|
+
kind: TreeNode["kind"];
|
|
7
|
+
label: string;
|
|
8
|
+
/** Keuze die hier geldt (alleen bij beslisvakjes). */
|
|
9
|
+
beslissing: string | null;
|
|
10
|
+
/** Waarom die keuze geldt. */
|
|
11
|
+
waarom: string;
|
|
12
|
+
/** De bepalende instelling. */
|
|
13
|
+
regel: string | null;
|
|
14
|
+
/** Dit is een hoofdstap van de engine. */
|
|
15
|
+
hoofdstap: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* De route door de kaart die voor deze order van toepassing is, in volgorde.
|
|
19
|
+
* Volgt alleen actieve lijnen vanaf "Order komt binnen"; de herkomstvakjes van
|
|
20
|
+
* andere bronnen blijven buiten beschouwing.
|
|
21
|
+
*/
|
|
22
|
+
export declare function journeyPad(tree: FlowTree, orderSource: string | null | undefined, wachtpunten?: Set<string> | null): JourneyVak[];
|
|
23
|
+
/**
|
|
24
|
+
* Tot welk punt van de route is de order gekomen? Dat is het laatste vakje in
|
|
25
|
+
* het pad waarvan de Engine zelf iets heeft vastgelegd.
|
|
26
|
+
*/
|
|
27
|
+
export declare function bereiktTot(pad: JourneyVak[], vastgelegd: Set<string>): number;
|
|
28
|
+
/**
|
|
29
|
+
* De vakjes die voor deze order gelden en waar nog niets van is vastgelegd,
|
|
30
|
+
* tot en met het punt waar de order nu is. Vakjes die verderop liggen blijven
|
|
31
|
+
* leeg: die zijn immers nog niet gebeurd.
|
|
32
|
+
*/
|
|
33
|
+
export declare function ontbrekendeJourneyEvents(input: {
|
|
34
|
+
tree: FlowTree;
|
|
35
|
+
orderRef: string;
|
|
36
|
+
orderSource: string | null | undefined;
|
|
37
|
+
vastgelegd: Set<string>;
|
|
38
|
+
wachtpunten?: Set<string> | null;
|
|
39
|
+
}): TraceEvent[];
|
|
40
|
+
//# sourceMappingURL=flowJourney.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flowJourney.d.ts","sourceRoot":"","sources":["../../src/lib/flowJourney.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;CACpB;AAqDD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAC/B,UAAU,EAAE,CA4Cd;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAM7E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAClC,GAAG,UAAU,EAAE,CAwBf"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/flowJourney.ts — de order langs élk vakje laten lopen dat geldt
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// De Engine legt zelf alleen de grote stappen vast. De keuzevakjes ertussen
|
|
5
|
+
// (de ruitjes met ja/nee) worden hier afgeleid uit exact dezelfde boom als de
|
|
6
|
+
// kaart: welke vakjes gelden voor deze order, welke keuze geldt daar en
|
|
7
|
+
// waarom. Zo is de blauwe route aaneengesloten en zie je welk deel van de
|
|
8
|
+
// route al behandeld is.
|
|
9
|
+
//
|
|
10
|
+
// Puur observerend: hier wordt niets besloten, gepland, geprint of gewijzigd.
|
|
11
|
+
// ============================================================================
|
|
12
|
+
import { FLOW_NODE, bronNodeVoor } from "./flowNodes";
|
|
13
|
+
const HOOFDSTAPPEN = new Set([
|
|
14
|
+
FLOW_NODE.samenvoegen,
|
|
15
|
+
FLOW_NODE.ontvangst,
|
|
16
|
+
FLOW_NODE.indeling,
|
|
17
|
+
FLOW_NODE.vrijgave,
|
|
18
|
+
FLOW_NODE.stations,
|
|
19
|
+
FLOW_NODE.picken,
|
|
20
|
+
FLOW_NODE.controle,
|
|
21
|
+
FLOW_NODE.eind,
|
|
22
|
+
]);
|
|
23
|
+
const BRON_NODES = new Set([
|
|
24
|
+
FLOW_NODE.bronFloriday,
|
|
25
|
+
FLOW_NODE.bronMail,
|
|
26
|
+
FLOW_NODE.bronActiemail,
|
|
27
|
+
FLOW_NODE.bronHandmatig,
|
|
28
|
+
]);
|
|
29
|
+
/** Vakjes zonder eigen betekenis in het logboek (samenkomstpunten en labels). */
|
|
30
|
+
function teltMee(node) {
|
|
31
|
+
return node.kind !== "merge";
|
|
32
|
+
}
|
|
33
|
+
function beslissingVan(node) {
|
|
34
|
+
if (node.kind !== "decision")
|
|
35
|
+
return null;
|
|
36
|
+
const huidig = node.currentValue ?? "";
|
|
37
|
+
const optie = (node.options ?? []).find((o) => o.value === huidig);
|
|
38
|
+
return optie?.label ?? (huidig || null);
|
|
39
|
+
}
|
|
40
|
+
function waaromVan(node, beslissing) {
|
|
41
|
+
if (node.kind === "decision") {
|
|
42
|
+
return beslissing
|
|
43
|
+
? `De instelling "${node.label}" staat op "${beslissing}", dus de order volgt die tak.`
|
|
44
|
+
: `Voor "${node.label}" is geen keuze ingesteld, dus de standaardtak geldt.`;
|
|
45
|
+
}
|
|
46
|
+
if (node.kind === "setting") {
|
|
47
|
+
const regels = Array.isArray(node.lines) ? node.lines : [];
|
|
48
|
+
return regels.length > 0
|
|
49
|
+
? `Deze instellingen golden voor deze order: ${regels.join("; ")}.`
|
|
50
|
+
: `De instellingen van "${node.label}" golden voor deze order.`;
|
|
51
|
+
}
|
|
52
|
+
if (node.kind === "option") {
|
|
53
|
+
return `Dit is de uitkomst die voor deze order geldt.`;
|
|
54
|
+
}
|
|
55
|
+
if (node.kind === "source") {
|
|
56
|
+
return `De order is via deze weg binnengekomen.`;
|
|
57
|
+
}
|
|
58
|
+
return node.sublabel ?? `Deze stap geldt voor deze order.`;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* De route door de kaart die voor deze order van toepassing is, in volgorde.
|
|
62
|
+
* Volgt alleen actieve lijnen vanaf "Order komt binnen"; de herkomstvakjes van
|
|
63
|
+
* andere bronnen blijven buiten beschouwing.
|
|
64
|
+
*/
|
|
65
|
+
export function journeyPad(tree, orderSource, wachtpunten) {
|
|
66
|
+
const byId = new Map(tree.nodes.map((n) => [n.id, n]));
|
|
67
|
+
const bron = bronNodeVoor(orderSource);
|
|
68
|
+
const uit = new Map();
|
|
69
|
+
for (const e of tree.edges) {
|
|
70
|
+
if (e.kind !== "flow" || e.state !== "active")
|
|
71
|
+
continue;
|
|
72
|
+
// Alleen de eigen herkomst van deze order telt mee.
|
|
73
|
+
if (BRON_NODES.has(e.to) && bron && e.to !== bron)
|
|
74
|
+
continue;
|
|
75
|
+
if (BRON_NODES.has(e.from) && bron && e.from !== bron)
|
|
76
|
+
continue;
|
|
77
|
+
const lijst = uit.get(e.from) ?? [];
|
|
78
|
+
lijst.push({ to: e.to });
|
|
79
|
+
uit.set(e.from, lijst);
|
|
80
|
+
}
|
|
81
|
+
const pad = [];
|
|
82
|
+
const gezien = new Set([FLOW_NODE.start]);
|
|
83
|
+
const wachtrij = [FLOW_NODE.start];
|
|
84
|
+
while (wachtrij.length > 0) {
|
|
85
|
+
const id = wachtrij.shift();
|
|
86
|
+
const node = byId.get(id);
|
|
87
|
+
if (node && node.state === "active" && teltMee(node)) {
|
|
88
|
+
const beslissing = beslissingVan(node);
|
|
89
|
+
pad.push({
|
|
90
|
+
nodeId: node.id,
|
|
91
|
+
kind: node.kind,
|
|
92
|
+
label: node.label,
|
|
93
|
+
beslissing,
|
|
94
|
+
waarom: waaromVan(node, beslissing),
|
|
95
|
+
regel: node.storeId && node.fieldKey ? `${node.storeId}.${node.fieldKey}` : null,
|
|
96
|
+
hoofdstap: HOOFDSTAPPEN.has(node.id),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
// Wacht dit samenkomstpunt op andere takken? Dan loopt de reis hier niet verder.
|
|
100
|
+
if (wachtpunten?.has(id))
|
|
101
|
+
continue;
|
|
102
|
+
for (const { to } of uit.get(id) ?? []) {
|
|
103
|
+
if (gezien.has(to))
|
|
104
|
+
continue;
|
|
105
|
+
const doel = byId.get(to);
|
|
106
|
+
if (!doel || doel.state !== "active")
|
|
107
|
+
continue;
|
|
108
|
+
gezien.add(to);
|
|
109
|
+
wachtrij.push(to);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return pad;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Tot welk punt van de route is de order gekomen? Dat is het laatste vakje in
|
|
116
|
+
* het pad waarvan de Engine zelf iets heeft vastgelegd.
|
|
117
|
+
*/
|
|
118
|
+
export function bereiktTot(pad, vastgelegd) {
|
|
119
|
+
let laatste = -1;
|
|
120
|
+
pad.forEach((vak, i) => {
|
|
121
|
+
if (vastgelegd.has(vak.nodeId))
|
|
122
|
+
laatste = i;
|
|
123
|
+
});
|
|
124
|
+
return laatste;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* De vakjes die voor deze order gelden en waar nog niets van is vastgelegd,
|
|
128
|
+
* tot en met het punt waar de order nu is. Vakjes die verderop liggen blijven
|
|
129
|
+
* leeg: die zijn immers nog niet gebeurd.
|
|
130
|
+
*/
|
|
131
|
+
export function ontbrekendeJourneyEvents(input) {
|
|
132
|
+
const pad = journeyPad(input.tree, input.orderSource, input.wachtpunten ?? null);
|
|
133
|
+
const grens = bereiktTot(pad, input.vastgelegd);
|
|
134
|
+
if (grens < 0)
|
|
135
|
+
return [];
|
|
136
|
+
const events = [];
|
|
137
|
+
for (let i = 0; i <= grens; i++) {
|
|
138
|
+
const vak = pad[i];
|
|
139
|
+
if (!vak || input.vastgelegd.has(vak.nodeId))
|
|
140
|
+
continue;
|
|
141
|
+
const volgende = pad[i + 1]?.label ?? null;
|
|
142
|
+
events.push({
|
|
143
|
+
orderRef: input.orderRef,
|
|
144
|
+
phase: "flow",
|
|
145
|
+
step: vak.label,
|
|
146
|
+
status: "geslaagd",
|
|
147
|
+
actor: "afgeleid",
|
|
148
|
+
nodeId: vak.nodeId,
|
|
149
|
+
decision: vak.beslissing ?? "route gevolgd",
|
|
150
|
+
reason: vak.waarom,
|
|
151
|
+
rule: vak.regel ?? undefined,
|
|
152
|
+
nextStep: volgende ?? undefined,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return events;
|
|
156
|
+
}
|
|
@@ -10,7 +10,10 @@ export declare const FLOW_NODE: {
|
|
|
10
10
|
readonly indeling: "stap:beladingindeling";
|
|
11
11
|
readonly picken: "stap:picken";
|
|
12
12
|
readonly vrijgave: "stap:drukte_vertraging";
|
|
13
|
+
readonly klaarOmTePicken: "stap:klaar_om_te_picken";
|
|
13
14
|
readonly stations: "stap:pickstations";
|
|
15
|
+
readonly geprint: "stap:pakbon_geprint";
|
|
16
|
+
readonly afgemeld: "stap:kar_afgemeld";
|
|
14
17
|
readonly controle: "stap:controle";
|
|
15
18
|
readonly eind: "__eind";
|
|
16
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowNodes.d.ts","sourceRoot":"","sources":["../../src/lib/flowNodes.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"flowNodes.d.ts","sourceRoot":"","sources":["../../src/lib/flowNodes.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;CAmBZ,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEpE,oEAAoE;AACpE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmBlD,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO7E;AAGD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGnE"}
|
|
@@ -17,7 +17,10 @@ export const FLOW_NODE = {
|
|
|
17
17
|
indeling: "stap:beladingindeling",
|
|
18
18
|
picken: "stap:picken",
|
|
19
19
|
vrijgave: "stap:drukte_vertraging",
|
|
20
|
+
klaarOmTePicken: "stap:klaar_om_te_picken",
|
|
20
21
|
stations: "stap:pickstations",
|
|
22
|
+
geprint: "stap:pakbon_geprint",
|
|
23
|
+
afgemeld: "stap:kar_afgemeld",
|
|
21
24
|
controle: "stap:controle",
|
|
22
25
|
eind: "__eind",
|
|
23
26
|
};
|
|
@@ -34,7 +37,10 @@ export const FLOW_NODE_LABEL = {
|
|
|
34
37
|
"stap:beladingindeling": "Karrenindeling",
|
|
35
38
|
"stap:picken": "Order picken",
|
|
36
39
|
"stap:drukte_vertraging": "Vrijgave en aanmeldmoment",
|
|
40
|
+
"stap:klaar_om_te_picken": "Klaar om te picken",
|
|
37
41
|
"stap:pickstations": "Pickstations en documenten",
|
|
42
|
+
"stap:pakbon_geprint": "Pakbon geprint",
|
|
43
|
+
"stap:kar_afgemeld": "Kar afgemeld",
|
|
38
44
|
"stap:controle": "Controle en afmelden",
|
|
39
45
|
__eind: "Order afgehandeld",
|
|
40
46
|
};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { FlowTree } from "./flowTree";
|
|
2
2
|
import type { NodeTraceGroep } from "./nodeTrace";
|
|
3
|
+
import { type StopReden } from "./stopReden";
|
|
4
|
+
import type { TraceOrderStand } from "../hooks/useOrderTrace";
|
|
3
5
|
/** Eén herberekening zoals `logistics_trace_versions` die teruggeeft. */
|
|
4
6
|
export interface OrderVersie {
|
|
5
7
|
id: string;
|
|
@@ -90,10 +92,18 @@ export type RouteMarker = {
|
|
|
90
92
|
errorClass?: string | null;
|
|
91
93
|
/** Wat de order hierna doet. */
|
|
92
94
|
nextStep?: string | null;
|
|
95
|
+
/** Bewijs hoort bij een vakje dat door een instellingswijziging niet meer op de kaart ligt. */
|
|
96
|
+
verouderd?: boolean;
|
|
97
|
+
/** Dit is het laatste vakje van de route. */
|
|
98
|
+
eindpunt?: boolean;
|
|
99
|
+
/** Waarom de reis hier ophoudt. */
|
|
100
|
+
stop?: StopReden | null;
|
|
93
101
|
};
|
|
94
102
|
export interface RouteOverlay {
|
|
95
103
|
tree: FlowTree;
|
|
96
104
|
markers: Map<string, RouteMarker>;
|
|
105
|
+
/** Samenkomstpunten waar deze order nu wacht op andere takken. */
|
|
106
|
+
wachtpunten: Set<string>;
|
|
97
107
|
}
|
|
98
108
|
/**
|
|
99
109
|
* Maakt een kopie van de kaart waarin alleen de gelopen route "active" is.
|
|
@@ -103,5 +113,5 @@ export interface RouteOverlay {
|
|
|
103
113
|
* komt dan uit wat de Engine heeft vastgelegd. De heuristiek hieronder blijft
|
|
104
114
|
* de terugval voor oudere gebeurtenissen zonder vakje.
|
|
105
115
|
*/
|
|
106
|
-
export declare function applyRoute(tree: FlowTree, route: OrderRoute | null, groepen?: Map<string, NodeTraceGroep> | null): RouteOverlay;
|
|
116
|
+
export declare function applyRoute(tree: FlowTree, route: OrderRoute | null, groepen?: Map<string, NodeTraceGroep> | null, stand?: TraceOrderStand | null): RouteOverlay;
|
|
107
117
|
//# sourceMappingURL=flowRoute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowRoute.d.ts","sourceRoot":"","sources":["../../src/lib/flowRoute.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAa,QAAQ,EAAY,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"flowRoute.d.ts","sourceRoot":"","sources":["../../src/lib/flowRoute.ts"],"names":[],"mappings":"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"}
|