Skip to content

Herstel chronologische verwerking van duikreeksen - #28

Draft
streuper wants to merge 2 commits into
devfrom
fix/chronologische-duikreeksen
Draft

Herstel chronologische verwerking van duikreeksen#28
streuper wants to merge 2 commits into
devfrom
fix/chronologische-duikreeksen

Conversation

@streuper

Copy link
Copy Markdown
Collaborator

Wat is gewijzigd

  • De verwerking van duikmomenten is omgezet naar één chronologische reeks per duiker, onafhankelijk van dagdeelvolgorde.
  • Duikmomenten met een oppervlakte-interval korter dan 15 minuten worden als gecombineerde duik of geldige meterregelsessie verwerkt, met maximaal drie fysieke momenten per rekeneenheid.
  • Gecombineerde duiken gebruiken afzonderlijke fysieke duiktijden en een expliciete effectieve DCIEM-duiktijd, inclusief exacte tabelcelopzoeking bij een dieptewissel.
  • Meterregelsessies worden op basis van de diepste MDD als 6-, 9- of 12-metersessie geclassificeerd en kunnen over dagdelen heen lopen.
  • Registratie, rapportage, JSON- en XLSX-export maken voortaan zichtbaar onderscheid tussen fysieke duikmomenten en de gezamenlijke rekeneenheid.
  • OSOD v0.1-export wordt vóór recordopbouw geblokkeerd zodra een gecombineerde duik aanwezig is.

Waarom is dit nodig

De eerdere verwerking groepeerde deels per dagdeel en presenteerde invoervorm, rekenroute en fysieke duikregels niet overal eenduidig. Daardoor konden chronologische reeksen over dagdelen heen onjuist worden gesplitst, kon een korte oppervlakte-intervalroute afhankelijk zijn van de invoervorm en waren fysieke en effectieve duiktijd in exports onvoldoende van elkaar gescheiden. Deze wijziging maakt de chronologie leidend en blokkeert situaties die niet betrouwbaar binnen de beschikbare tabellen of het OSOD v0.1-schema kunnen worden weergegeven.

Bron en besluitvorming

  • Bronfeit: DCIEM-tabelwaarden, Airtabel 1 en tabellen 4a/4b zijn ongewijzigd. Bij een dieptewissel wordt uitsluitend de bestaande exacte tabelcel voor de voorgaande HG en de nieuwe tabeldiepte gebruikt; er vindt geen interpolatie plaats.
  • Broninterpretatie: oppervlakte-intervallen en herhalingsfactoren worden bepaald op de werkelijk chronologische reeks per duiker, ook wanneer momenten verschillende dagdelen hebben.
  • Expliciet projectbesluit: twee of drie momenten met een oppervlakte-interval korter dan 15 minuten vormen één gecombineerde rekeneenheid wanneer geen geldige meterregelsessie voorrang heeft. Een vierde moment wordt geblokkeerd.
  • Expliciet projectbesluit: een onderbreking langer dan 18 uur reset de reeks voordat een nieuwe rekenroute wordt gekozen.
  • Conservatieve projectkeuze: een ontbrekende exacte tabelcel, tabeloverschrijding, overlap, ongeldige start-HF of ongeldige duiktijd leidt tot een expliciete blokkade; er wordt geen decompressieverloop afgeleid.
  • Open punt: OSOD v0.1 heeft geen betrouwbare representatie voor een gecombineerde duik. Daarom wordt de volledige export in dat geval geblokkeerd.

Veiligheidsimpact

Dit is een veiligheidswijziging aan chronologische rekenregels, oppervlakte-interval, meterregels, gecombineerde duiken en blokkadelogica.

  • DCIEM-berekeningen: geraakt; de tabelwaarden zelf blijven ongewijzigd.
  • Airtabel 1: waarden en bron blijven ongewijzigd.
  • Tabel 4a en 4b: waarden en bron blijven ongewijzigd.
  • HG, HF en effectieve duiktijd: geraakt door de chronologische keten en gecombineerde rekenroute.
  • 6-, 9- en 12-meterregels: geraakt door sessievorming op basis van de diepste MDD.
  • Oppervlakte-interval: geraakt; <15, 15 en >15 minuten zijn expliciet afgedekt.
  • Gecombineerde duiken: geraakt; maximaal drie fysieke momenten, met afzonderlijke fysieke en effectieve tijden.
  • Opstijgingslimieten: de limietberekening zelf is niet gewijzigd; presentatie van waarschuwingen volgt de nieuwe rekeneenheid.
  • Meterregelsessies: geraakt; geldige sessies hebben voorrang op combineren en kunnen dagdelen overschrijden.
  • Live timing: tijdstempels en timermechaniek zijn niet gewijzigd.
  • Luchtbewaking: niet gewijzigd.
  • Reserveduiker- en teamlogica: niet gewijzigd.
  • GO-, AMBER-, RED- en BLOCKED-statussen: statuscategorieën zijn ongewijzigd; blokkades voor ongeldige reeksen zijn aangescherpt.

Geraakte bestanden

  • index.html: chronologische reducer, gecombineerde en meterregelberekening, presentatie, exports en regressietests.
  • CHECKSUMS.sha256: checksum van de gewijzigde index.html bijgewerkt.
  • docs/ARCHITECTUUR.md: architectuur van de chronologische verwerking en exportgrenzen beschreven.
  • docs/VALIDATIE_TABELLEN.md: bron-/besluitclassificatie en aanvullende validatiegevallen vastgelegd.
  • CHANGELOG.md: veiligheidswijziging, compatibiliteitsimpact en testuitbreiding voor v1.30.0 beschreven.

Tests en controles

  • JavaScript-syntaxcontrole op het uit index.html geëxtraheerde script: geslaagd.
  • node scripts/run-selftests-node.js: 498/498 zelftests geslaagd.
  • node scripts/check-theme-colors.js: geslaagd.
  • sha256sum -c CHECKSUMS.sha256: index.html: OK.
  • git diff --check: geslaagd.
  • Scan op verboden hulpmiddel-, auteurschaps- en dev-/previewsporen: geen treffers.
  • Statische scan op e-mailadressen en mogelijke telefoonnummers: geen treffers.
  • Handmatige lokale schermcontrole: versiebadge 498/498 · v1.30.0, twee fysieke regels met lege HG, één gezamenlijke DD1/DD2-onderbouwing met effectieve duiktijd 30 minuten en HG A, en een blokkademelding bij OSOD-export; geen consolefouten.
  • Aanvullende regressietests dekken onder meer 2/3/4 momenten, gelijke en verschillende diepte, OI 14/15/16 minuten, opvolging na herhalingsduik, ontbrekende tabelcel, tabeloverschrijding, dagdeelonafhankelijkheid, meterregels 6/9/12 meter, >18-uursreset, overlap, geschudde invoervolgorde, DT 0 en JSON/XLSX/rapport/OSOD-semantiek.

Rekenkern en bronfingerprint

  • DCIEM-tabelwaarden zijn niet gewijzigd.
  • De bronfixture is niet gewijzigd.
  • De rekenbronfingerprint is niet gewijzigd.
  • De bestaande bron- en fingerprintcontroles blijven onderdeel van de 498 geslaagde zelftests.
  • Nieuwe testvectoren richten zich op de chronologische orkestratie rond de ongewijzigde tabellen: gecombineerde duiken, meterregelsessies, grenswaarden voor oppervlakte-interval, foutcodes en exportrepresentatie.

Privacy, opslag en uitwisseling

  • localStorage, het back-up-/importschema en de stateversie zijn niet gewijzigd; migratie is niet nodig.
  • De registratie-export in JSON scheidt fysieke registratie van een nieuwe lijst berekeningen met gezamenlijke rekenuitkomsten.
  • XLSX-kolommen zijn hernoemd en uitgebreid om moment- en rekeneenheidvelden te onderscheiden.
  • OSOD v0.1-export wordt geheel geblokkeerd wanneer een gecombineerde duik aanwezig is; er worden dan geen records of identifiers opgebouwd en geen bestand opgeslagen.
  • CSV-gedrag is niet gewijzigd.
  • Content Security Policy, netwerkgedrag, externe verbindingen en offline werking zijn niet gewijzigd.
  • Er zijn geen persoonsgegevens of operationele testgegevens toegevoegd.

Compatibiliteit en migratie

  • Bestaande browserdata blijven bruikbaar zonder migratie.
  • Afnemers die XLSX-kolomnamen vast hebben gekoppeld, moeten de hernoemde moment- en rekeneenheidkolommen verwerken.
  • Afnemers van de registratie-JSON moeten rekening houden met de nieuwe berekeningen-lijst en met een lege generieke herhalingsfactor voor gecombineerde duiken en meterregelsessies; de inkomende start-HF staat afzonderlijk vermeld.
  • Een dataset met een gecombineerde duik kan niet meer stilzwijgend als OSOD v0.1 worden geëxporteerd en geeft voortaan een expliciete blokkade.

Open punten en beperkingen

  • OSOD v0.1 ondersteunt geen gecombineerde duik; een toekomstige schema-uitbreiding of projectmapping is nodig voordat die export mogelijk kan worden gemaakt.
  • Er wordt bewust geen decompressieverloop afgeleid buiten de beschikbare tabelgrenzen.
  • Een gecombineerde rekeneenheid bevat maximaal drie fysieke duikmomenten.
  • De bestaande semantische beperking rond het koppelen van meterregelsessies aan OSOD v0.1 is niet binnen deze wijziging opgelost.

Controle voor de beheerder

  • Beoordeel de scheiding tussen bronfeit, broninterpretatie en expliciete projectkeuze.
  • Controleer dat DCIEM-tabellen, Airtabel 1, tabellen 4a/4b, bronfixture en rekenbronfingerprint ongewijzigd zijn.
  • Controleer de grensgevallen OI 14/15/16 minuten, de vierde-duikblokkade en de 6-/9-/12-meterclassificatie.
  • Controleer handmatig de gewijzigde JSON- en XLSX-velden en de OSOD-blokkademelding.
  • Wacht met merge tot alle vereiste controles op de pull request groen zijn.
  • Bevestig dat de doelbranch dev is en dat main ongemoeid blijft.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying duikmonitor with  Cloudflare Pages  Cloudflare Pages

Latest commit: 19e8dce
Status: ✅  Deploy successful!
Preview URL: https://f438fd02.duikmonitor.pages.dev
Branch Preview URL: https://fix-chronologische-duikreeks.duikmonitor.pages.dev

View logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant