Audit trail en reproduceerbaarheid
| Vraag | Aangetroffen bewijs | Beperking | |---|---|---| | Wie registreerde? | HUB/stop: lmf_user; bevestiging: lmf_user | UPDATE van HUB/stop overschrijft hoeveelheid zonder nieuwe actor; pakbonemballage heeft geen actor | | Wanneer? | stop INSERT now(), bevestiging datum; HUB.datum | HUB.datum is leverdatum uit input, geen registratietimestamp; latere update laat oude tijd staan | | Vanuit welke locatie? | bezochte partij/location/HUB in record | geen GPS-meting/device-locatie bij mutatie; stamcoördinaten zijn geen bewijs van aanwezigheid | | Voor welke levering? | pakbon-ID/levering, stop_id, bevestiging FK | nullable bronlinks, oudere records niet backfilled; meerdere pakbonnen per levering; identifiers worden verschillend gebruikt | | Van/naar welke partij? | afleidbaar uit HUB- of stoptype en richting | geen universeel from/to-record; huidige actorpartij kan sinds registratie gewijzigd zijn | | Oorspronkelijke waarde? | niet bewaard door hoeveelheid-UPDATE | geen before/after-, revision- of correctietabel in deze paden | | Later gewijzigd? | routeplan heeft updated_at in afzonderlijke importer | emballageregistraties missen updated_at/revisie; LMF-log is connectorbericht, geen automatische mutatie-audit | | Fysiek ontvangstbewijs? | foto/handtekeningbestanden + pakbonbevestiging | databasecommit gebeurt vóór bestandsschrijf; fout opent bestand niet maar succesresponse blijft mogelijk |
Concrete gevolgen
- HUB-uitgifte naar klanten voegt steeds nieuwe records toe. Herhaald indienen kan optellingen verhogen; de controle kan dubbele slots ambigu maken. Andere writes zijn UPDATE-dan-INSERT zonder ondubbelzinnige unieke businesssleutel. Databasecatalogus toont voor deze registratiecombinaties geen vergelijkbare uniciteitsgarantie.
- HUB-updates missen kvd en bronpakbon in de WHERE; ze kunnen meerdere waarnemingen tegelijk overschrijven. Bronlinks blijven via COALESCE ongewijzigd, ook als andere input wordt gegeven.
- Pakbonemballage en stamartikelprijzen zijn wijzigbaar. Een later rapport kan andere aantallen of geldbedragen opleveren; geen bevroren waarde per mutatie aangetroffen.
confirm_deliveryblokkeert een tweede bevestiging voor dezelfde actor/pakbon in applicatiecode. Dit maakt correcties via dat pad lastig en is geen transactiebrede idempotencykey of database-uniekheidsgarantie.- Read-endpoints maken soms GUID's en committen. Sommige WHERE's beperken deze update alleen op locatie/datum, niet op leverancier. De aangemaakte identiteit is daarmee zelf veranderende toestand tijdens lezen.
- Keana verwerkt historische items opnieuw zonder event-ID-deduplicatie; gebruikt een vaste actor-ID, commit orderstatus vóór eventinsert, slaat onbekende statusnamen over. Een gedeeltelijk mislukte verwerking kan dus gemengde toestand nalaten.
- Authenticatie is geen uniforme objectscope: onder meer route_plan, location_comment, stop en gedeelde confirm_delivery missen delen van de eigendoms-/projectcontrole die modernere reads wel hebben. Dit rapport heeft geen ongeautoriseerde writes uitgevoerd.
- Controleketens zijn reproduceerbaar uit een vastgezette dataset en dezelfde code, maar er is geen historische snapshot in dit model. Wijzigbare metadata, prijzen, gebruikersrelaties en ontbrekende links beperken reconstructie van het verleden.
De cataloguscontrole vond geen niet-interne triggers op de drie emballagebronnen, pakbon of pakbon_levering. Triggerloze tabellen bewijzen niet dat er geen andere applicatie of extern auditsysteem schrijft; externe audit/retentie is UNCLEAR.