@flowselections/logistiek-engine 1.0.24 → 1.0.25
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/LogistiekEnginePage.d.ts.map +1 -1
- package/dist-lib/components/LogistiekEnginePage.js +8 -2
- package/dist-lib/components/RegiePage.d.ts.map +1 -1
- package/dist-lib/components/RegiePage.js +1 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +226 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +226 -1
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +226 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +228 -1
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.functions.d.ts +678 -3
- package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.functions.d.ts +226 -1
- package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +11 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts +6 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanner.js +3 -0
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +1130 -5
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +3 -0
- package/dist-lib/lib/logisticsPlanner.d.ts +2 -0
- package/dist-lib/lib/logisticsPlanner.d.ts.map +1 -1
- package/dist-lib/lib/logisticsPlanner.js +17 -0
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +452 -2
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts +226 -1
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +185 -0
- package/package.json +1 -1
|
@@ -386,6 +386,47 @@ NIET DOEN
|
|
|
386
386
|
NOT NULL maken; dat kan pas als alle schrijfpaden de kolom zetten.
|
|
387
387
|
- De beslisregel van 26-08 (B1/B2/B3) niet wijzigen — alleen overnemen.`,
|
|
388
388
|
},
|
|
389
|
+
{
|
|
390
|
+
number: 7,
|
|
391
|
+
title: "Orderoverzicht uit de Engine: één waarheid voor alle modules",
|
|
392
|
+
date: "2026-09-01",
|
|
393
|
+
summary: "De verkooplijst toont karren, planten en pickdag uit logistics_order_overview, zodat Verkoop, Afhandeling en Pick exact dezelfde cijfers laten zien.",
|
|
394
|
+
body: `AANVULLING op koppelprompt 1 t/m 6 (die blijven geldig).
|
|
395
|
+
|
|
396
|
+
WAAROM
|
|
397
|
+
Elke module telde tot nu toe zelf karren: de pick agenda telde payload-velden van
|
|
398
|
+
taken (3517 karren), Controle karren telde cart_numbers (27) en Verkoop telde
|
|
399
|
+
order_carts. Drie tellingen, drie antwoorden. De Engine heeft nu één index:
|
|
400
|
+
public.logistics_cart_index. Alle schermen lezen daaruit.
|
|
401
|
+
|
|
402
|
+
BOUW DIT
|
|
403
|
+
- Haal de orderlijst op met:
|
|
404
|
+
|
|
405
|
+
const { data, error } = await supabase.rpc("logistics_order_overview", {
|
|
406
|
+
p_from: null, p_to: null,
|
|
407
|
+
});
|
|
408
|
+
if (error) throw new Error(error.message);
|
|
409
|
+
const orders = Array.isArray(data) ? data : [];
|
|
410
|
+
|
|
411
|
+
- Kolommen: order_uuid, order_number, customer_name, order_source,
|
|
412
|
+
delivery_date, status, pick_date, cart_count, plant_count, shifted,
|
|
413
|
+
printed_at.
|
|
414
|
+
- Toon cart_count en plant_count exact zoals ze binnenkomen; niet zelf
|
|
415
|
+
hertellen uit order_carts of order_items.
|
|
416
|
+
- pick_date is de pickdag van de Engine; die ligt nooit in het verleden.
|
|
417
|
+
- shifted = true toont het label "te laat aangemeld".
|
|
418
|
+
- printed_at gevuld = de order is al uitgeprint.
|
|
419
|
+
|
|
420
|
+
NIET DOEN
|
|
421
|
+
- Geen eigen count op order_carts / order_cart_items voor weergave.
|
|
422
|
+
- Geen eigen pickdagberekening uit delivery_date.
|
|
423
|
+
- Geen datum, project-ref of Supabase-URL hardcoden.
|
|
424
|
+
|
|
425
|
+
CONTROLELIJST
|
|
426
|
+
[ ] Karrenaantal in Verkoop is gelijk aan dat in de pick agenda en in Controle.
|
|
427
|
+
[ ] Een gemengde kar telt bij elke deelnemende order mee, maar per dag één keer.
|
|
428
|
+
[ ] Verwijderde orders verdwijnen uit de lijst zonder losse taken achter te laten.`,
|
|
429
|
+
},
|
|
389
430
|
],
|
|
390
431
|
},
|
|
391
432
|
afhandeling: {
|
|
@@ -875,6 +916,150 @@ CONTROLELIJST
|
|
|
875
916
|
[ ] Afleverbrieven worden alleen nog aangemaakt via print.shipping_note-taken, niet spontaan.
|
|
876
917
|
[ ] De kolommen in afhandeling_settings zijn niet gedropt.`,
|
|
877
918
|
},
|
|
919
|
+
{
|
|
920
|
+
number: 11,
|
|
921
|
+
title: "Controle karren rechtstreeks uit de agenda van de Engine",
|
|
922
|
+
date: "2026-09-01",
|
|
923
|
+
summary: "De controlepagina toont alle karren van de pickagenda van vandaag, inclusief gemengde, ongeprinte en nog niet ingedeelde karren.",
|
|
924
|
+
body: `AANVULLING op prompt 1 t/m 10 (die blijven geldig).
|
|
925
|
+
|
|
926
|
+
GEMETEN PROBLEEM
|
|
927
|
+
Het scherm "Controle karren" blijft leeg doordat cartControl.functions.ts zelf
|
|
928
|
+
alleen logistics_tasks van type load.compose leest, met owner_module =
|
|
929
|
+
"afhandeling" en een beperkte statuslijst. De pickagenda wordt echter bepaald
|
|
930
|
+
door pick.execute. Daardoor kan de agenda wel orders tonen terwijl de controlelijst
|
|
931
|
+
0 karren toont.
|
|
932
|
+
|
|
933
|
+
BOUW DIT
|
|
934
|
+
- Verwijder loadEngineCartsForToday en de lokale datum-/taakfilter als bron voor
|
|
935
|
+
de controlelijst.
|
|
936
|
+
- Laat getTodaysControlCarts rechtstreeks deze RPC aanroepen:
|
|
937
|
+
|
|
938
|
+
const { data, error } = await supabase.rpc("control_get_todays_carts");
|
|
939
|
+
if (error) throw new Error(error.message);
|
|
940
|
+
|
|
941
|
+
- Map iedere RPC-rij naar ControlCart. Gebruik cart_number_id als stabiele sleutel,
|
|
942
|
+
order_id, order_source, cart_index, pick_date, status, printed_at en
|
|
943
|
+
printed_today letterlijk uit het resultaat.
|
|
944
|
+
- De RPC is de enige bron voor welke karren vandaag zichtbaar zijn. Voeg in de
|
|
945
|
+
frontend geen extra filter toe op load.compose, owner_module, taskstatus,
|
|
946
|
+
orderstatus of printedCount.
|
|
947
|
+
- De RPC bevat bewust:
|
|
948
|
+
1. alle pick.execute-taken met planned_start vandaag in Europe/Amsterdam;
|
|
949
|
+
2. alle orders die vandaag zijn aangemeld of uitgeprint;
|
|
950
|
+
3. normale én gemengde karren via order_cart_items -> order_items;
|
|
951
|
+
4. tijdelijke regels voor agenda-orders die nog geen order_carts hebben.
|
|
952
|
+
- Gebruik printed_today voor de kolom "Uitgeprint". Een kar hoeft niet geprint te
|
|
953
|
+
zijn om zichtbaar en goed te keuren te zijn.
|
|
954
|
+
- Ververs bij wijzigingen in logistics_tasks, pick_queue, print_jobs, order_carts,
|
|
955
|
+
order_cart_items en cart_numbers, plus de bestaande polling.
|
|
956
|
+
- Gebruik dezelfde RPC-uitkomst ook als basis voor submitControlSession, zodat de
|
|
957
|
+
getoonde en afgemelde verzameling nooit van elkaar afwijkt.
|
|
958
|
+
|
|
959
|
+
NIET DOEN
|
|
960
|
+
- Niet terugvallen op loadTodaysPickstationOrders als de RPC nul regels geeft.
|
|
961
|
+
- Niet zelf kar-aantallen herberekenen.
|
|
962
|
+
- Geen project-ref, Supabase-URL of datum hardcoden.
|
|
963
|
+
|
|
964
|
+
CONTROLELIJST
|
|
965
|
+
[ ] Een ongeprinte kar op de pickagenda van vandaag staat in Controle karren.
|
|
966
|
+
[ ] Een vandaag geprinte kar met een oudere pickdatum blijft zichtbaar.
|
|
967
|
+
[ ] Een gemengde kar verschijnt zonder dubbele regels.
|
|
968
|
+
[ ] De teller en tabel gebruiken exact dezelfde RPC-data.
|
|
969
|
+
[ ] Goedkeuren verwerkt exact de zichtbare verzameling.`,
|
|
970
|
+
},
|
|
971
|
+
{
|
|
972
|
+
number: 12,
|
|
973
|
+
title: "Pick agenda: nooit een pickdag in het verleden",
|
|
974
|
+
date: "2026-09-01",
|
|
975
|
+
summary: "De weekagenda leest de pickdagen uit de Engine; orders met een verstreken pickmoment staan automatisch op vandaag.",
|
|
976
|
+
body: `AANVULLING op prompt 1 t/m 11 (die blijven geldig).
|
|
977
|
+
|
|
978
|
+
GEMETEN PROBLEEM
|
|
979
|
+
De weekagenda toont orders op maandag 31 aug terwijl het dinsdag 1 sep is. In
|
|
980
|
+
public.logistics_tasks staat geen enkele open pick.execute-taak in het verleden:
|
|
981
|
+
de Engine klemt planned_start al op nu. De agenda rekent dus nog zelf een pickdag
|
|
982
|
+
uit (delivery_date minus pick_days), en die kan in het verleden liggen.
|
|
983
|
+
|
|
984
|
+
BOUW DIT
|
|
985
|
+
- Verwijder de eigen pickdagberekening uit de weekagenda (delivery_date,
|
|
986
|
+
pick_days_before_transport, max_workdays_earlier_pick, pick_weekdays).
|
|
987
|
+
- Haal de agenda op met:
|
|
988
|
+
|
|
989
|
+
const { data, error } = await supabase.rpc("logistics_pick_agenda", {
|
|
990
|
+
p_from: weekStartIso, // yyyy-mm-dd
|
|
991
|
+
p_to: weekEndIso,
|
|
992
|
+
});
|
|
993
|
+
if (error) throw new Error(error.message);
|
|
994
|
+
const dagen = Array.isArray(data) ? data : [];
|
|
995
|
+
|
|
996
|
+
- Kolommen per dag: pick_date, order_count, cart_count, plant_count,
|
|
997
|
+
in_preparation, ready, shifted_count, orders (jsonb array met taskId, orderRef,
|
|
998
|
+
status, carts, plants, shifted).
|
|
999
|
+
- Vul de tegels "bestellingen", "karren" en "planten" met order_count, cart_count
|
|
1000
|
+
en plant_count. "In voorbereiding" = in_preparation, "Verzendklaar" = ready.
|
|
1001
|
+
- Toon bij shifted_count > 0 op die dag het label "te laat aangemeld" (zelfde
|
|
1002
|
+
betekenis als in de Regie-pagina van de Engine).
|
|
1003
|
+
- Dagen zonder rij tonen simpelweg nullen; niet zelf aanvullen met eigen data.
|
|
1004
|
+
- Ververs bij realtime-wijzigingen op logistics_tasks.
|
|
1005
|
+
|
|
1006
|
+
REGEL
|
|
1007
|
+
Een order kan nooit in het verleden gepickt worden. Elke open pick.execute-taak
|
|
1008
|
+
met een planning vóór vandaag wordt door de Engine (en nogmaals door deze RPC)
|
|
1009
|
+
op vandaag getoond. Bouw dus geen eigen "inhaal"- of "achterstand"-dag.
|
|
1010
|
+
|
|
1011
|
+
NIET DOEN
|
|
1012
|
+
- Geen eigen datumafronding, werkdagenlogica of tijdzoneconversie meer.
|
|
1013
|
+
- Geen orders uit de agenda filteren op status buiten wat de RPC teruggeeft.
|
|
1014
|
+
- Geen datum, project-ref of Supabase-URL hardcoden.
|
|
1015
|
+
|
|
1016
|
+
CONTROLELIJST
|
|
1017
|
+
[ ] De agenda toont geen enkele dag vóór vandaag met openstaande orders.
|
|
1018
|
+
[ ] Een gisteren aangemelde, nog niet gepickte order staat vandaag in de agenda.
|
|
1019
|
+
[ ] Tegels boven de agenda tellen exact op met de dagregels van de RPC.
|
|
1020
|
+
[ ] Verschoven orders krijgen het label "te laat aangemeld".`,
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
number: 13,
|
|
1024
|
+
title: "Karrentelling: alles uit de gedeelde karindex",
|
|
1025
|
+
date: "2026-09-01",
|
|
1026
|
+
summary: "Agenda en Controle karren tellen karren uit logistics_cart_index; payload-velden zoals cartCount worden niet meer gebruikt.",
|
|
1027
|
+
body: `AANVULLING op prompt 1 t/m 12 (die blijven geldig).
|
|
1028
|
+
|
|
1029
|
+
GEMETEN PROBLEEM
|
|
1030
|
+
De pick agenda toonde 3517 karren voor vandaag terwijl Controle karren er 27
|
|
1031
|
+
toonde. Oorzaak: de agenda telde payload->>'cartCount' van taken op (dubbeltelling
|
|
1032
|
+
over meerdere taken per order), Controle telde cart_numbers. Beide waren fout.
|
|
1033
|
+
|
|
1034
|
+
WAT DE ENGINE NU LEVERT
|
|
1035
|
+
public.logistics_cart_index(p_from, p_to) — één rij per (order, kar):
|
|
1036
|
+
pick_date, order_uuid, order_number, order_source, cart_id, cart_index,
|
|
1037
|
+
cart_label, is_shared, task_status, shifted, printed_at.
|
|
1038
|
+
Daarop draaien logistics_pick_agenda en control_get_todays_carts.
|
|
1039
|
+
|
|
1040
|
+
BOUW DIT
|
|
1041
|
+
- Gebruik uitsluitend cart_count uit logistics_pick_agenda voor de dagtegels.
|
|
1042
|
+
Een gemengde kar telt per dag één keer, ook als meerdere orders erin zitten.
|
|
1043
|
+
- In een orderregel toont "carts" uit de orders-array het aantal karren waarin
|
|
1044
|
+
die order zit (gedeelde karren tellen daar wél mee).
|
|
1045
|
+
- Gebruik voor de controlelijst alleen control_get_todays_carts; die geeft nu
|
|
1046
|
+
cart_id als cart_number_id terug, ook voor karren zonder karnummer.
|
|
1047
|
+
- Verwijder elke lezing van payload->>'cartCount' en elke eigen count op
|
|
1048
|
+
order_carts.
|
|
1049
|
+
|
|
1050
|
+
CONTROLE OP AFWIJKING
|
|
1051
|
+
Roep bij het laden van de agenda eenmalig aan:
|
|
1052
|
+
|
|
1053
|
+
const { data } = await supabase.rpc("logistics_consistency_check");
|
|
1054
|
+
|
|
1055
|
+
Is ok === false, toon dan een discrete waarschuwing "aantallen worden opnieuw
|
|
1056
|
+
uitgelijnd" en niets meer. Niet zelf corrigeren.
|
|
1057
|
+
|
|
1058
|
+
CONTROLELIJST
|
|
1059
|
+
[ ] Agenda-karren van vandaag = karren in Controle karren.
|
|
1060
|
+
[ ] Geen enkel scherm leest nog cartCount uit een taak-payload.
|
|
1061
|
+
[ ] Orders van verwijderde bestellingen verschijnen nergens meer.`,
|
|
1062
|
+
},
|
|
878
1063
|
],
|
|
879
1064
|
},
|
|
880
1065
|
pickschermen: {
|