← EnergyView

Rapport- en instellingencontrole na v281

Datum: 3 november 2026. Alleen presentatie, tekst, documentontwerp en tests. De reeds gepubliceerde correctie van de wisknop blijft behouden.

Bewijs en grenzen

met commit fb5e5d85e1cda43d929d7fde5d56ee1010d49bbb van v281: byte-identiek. Hashes en resultaten: controlebestand.

identieke identifiers en rangorde: verschillen.

Twee bestaande labelasserties volgen de nieuwe titel; hun controle is behouden.

diagnosticgroepen. Formatteringscontrole geslaagd.

van een mobiel besturingssysteem. Instellingen/Vergelijking: axe wcag2a/aa, inclusief kleurcontrast, 0 overtredingen op beide breedtes.

geautomatiseerde browserharness is niet als uitgevoerd geteld.

als afbeeldingen gecontroleerd. Tekst is doorzoekbaar; DejaVu Sans en Bold zijn ingesloten. Geen formele PDF/UA-conformiteitsclaim.

1. Gemeten en voor de rekening gebruikte waarden

Voorheen: fixture-invoer 4.200 kWh en 4,2 kW, terwijl de meetgrafiek circa 4.051,5 kWh en maximaal 0,8 kW bevatte. Nu komt fixture-invoer uit dezelfde synthetische meetreeks: 4.091,9 kWh, gemiddelde met maandminimum 3,6 kW, hoogste afzonderlijke gemeten maandpiek 4,2 kW. De maandwaarden tellen op tot het gemeten totaal; alleen onvermijdelijke drijvendekomma-afwijking <1e-8.

Het rapport benoemt afzonderlijk gemeten verbruik, verbruik gebruikt voor de rekening, gemeten maandpieken en de gebruikte rekenpiek. Het gemiddelde uit de metingen gebruikt de bestaande helpers voor volledige maanden en het minimum; geen prijs wordt opnieuw berekend. Een handmatig aangepaste rekenpiek kan dus zichtbaar afwijken. De uitleg luidt: Je betaalt minstens voor 2,5 kW per maand.

Bij een verbruiksverschil boven 0,1 kWh verschijnt uitleg bij situatie én grafiek. Dit is een presentatietolerantie, geen rekenregel. Ze is instelbaar via usageToleranceKwh in de rapportsnapshot; standaard REPORT_USAGE_TOLERANCE_KWH. De test controleert de maandensom, de afwijkingsmelding en het tolerantiepad. Bij gedeeltelijke periodes wordt het verbruik niet als jaarverbruik gelabeld.

2. Grafieken

Voor: geen zichtbare waarden, maandnummers en lange tekstregels. Na: iedere balk heeft een waarde, maandnamen jan-dec en vet gemarkeerde hoogste maanden. Iedere grafiek vermeldt dat de schaal bij nul begint. Uurwaarden zijn voor leesbaarheid samengevoegd in zes blokken van vier uur; alle gemeten energie blijft aanwezig. Dat is uitsluitend een andere grafische groepering, geen wijziging van tariefuren.

SVG heeft een korte titel/beschrijving; een bijbehorende tabel blijft toegankelijk voor schermlezers. De visueel verborgen tabel staat in een begrensde wrapper: dit voorkomt de overlap die een verborgen tabel direct op WeasyPrint veroorzaakte. Tests eisen zichtbare waarden en de tabel bij alle drie grafieken.

3. Rapporttaal

VoorNa
TerugblikOp basis van je meetjaar
VooruitblikOp basis van verwachte prijzen
In de vergeleken periodePer jaar bij een volledig meetjaar; anders in de gemeten periode
Looptijd: controleer de tariefkaart, vijfmaalBekende looptijd per contract; onbekende looptijden éénmaal onder de tabel
Verdisconteerde terugverdientijdTerugverdientijd die rekening houdt met de waarde van geld door de jaren heen
Theoretische bovengrensHoogst haalbare voordeel, geen belofte
ProsumententariefBijbehorende bijdrage voor zonnepanelen bij een terugdraaiende teller
Zon, opslag en rendementenZonneopbrengst, batterijgebruik en energieverlies
Controleer hieronder de meetperiodeMeetperiode wordt expliciet vermeld op het offerteblad

Essentiële eenheden (kWh, kW, Wp) en woorden zoals netbeheerder, maandpiek, tariefkaart en hellingshoek blijven bruikbaar vaktaal. Het minimum en de meetpiek worden uitgelegd; technische dakgegevens zijn voor de installateur bedoeld.

4. Offerteblad

Eén A4-pagina. Nieuw: invulruimte voor 1-/3-fase en ampère; daktype, richting, helling, schaduw, vrije oppervlakte en plaats van de omvormer; aanwezigheid van EV/warmtepomp; gemiddeld gemeten dag-, avond- en nachtverbruik. Deze tijdvakken zijn beschrijvend en worden expliciet niet als tariefuren voorgesteld.

Alleen postcode wordt als locatie overgenomen. Naam, adres en EAN worden niet uit instellingen gelezen. Contactruimte blijft leeg voor handschrift. Onbekende aansluiting wordt niet geraden. Bij meer dan twee dakvlakken vermeldt het blad expliciet hoeveel extra vlakken als bijlage moeten worden toegevoegd.

5. Documentatie en werkelijke bestanden

UitvoerOpnieuw gemaakte v281-baselineNieuwe uitvoerPagina's
Energierapport45.772 bytes56.775 bytes6
Offerteblad12.566 bytes15.976 bytes1

Dit zijn de lokale rendererbestanden, vóór publicatie. Methode voor beide kolommen: dezelfde machine, WeasyPrint 70.0, offline fetcher die iedere externe resource weigert, pdf/ua-1, ingesloten DejaVu-lettertypes. De metadata van de eerder aangeboden downloads bevestigt de door de review gemelde 105.185 en 42.966 bytes. Dat zijn dus andere bytes dan de lokale rendererbestanden. De bewaar-/publicatiestap kan PDF's ook van extra bestandsmetadata voorzien; de lokale groottes zijn geen claim over de uiteindelijke downloadgrootte. Andere lettertypes, uitvoeropties en renderers kunnen de grootte eveneens veranderen. De oude algemene grootteclaims zijn vervangen door exacte lokale metingen met methode. Zie bestandsmanifest met SHA-256.

Na het bewaren zijn ook de uiteindelijke downloadgroottes gecontroleerd, op 3 november 2026. Deze zijn groter dan de lokale rendererbestanden hierboven:

Aangeboden downloadEerdere versieBijgewerkte versie
Energierapport105.185 bytes130.744 bytes
Offerteblad42.966 bytes51.290 bytes

De renderercontrole en de metadata van de aangeboden downloads zijn dus apart gemeten. Voor de download geldt de tweede tabel, niet de lokale renderermaat.

Andere gecontroleerde statuscijfers: 205 oorspronkelijke tests klopt; nu 206. Lint 737 en typecheck 490 kloppen. Bron-index bevatte daadwerkelijk tien Expert-voorvoegsels. De nul-jargonclaim van het oude statusdocument betrof alleen algemene instellingen, niet alle mogelijke schermen. De oudere claims over geheugen, Lighthouse en gebruikersbegrip zijn niet opnieuw gemeten of opgewaardeerd.

6. Bronlabels

Onderstaande telling betreft alle eigen HTML/JS-bronbestanden, inclusief dynamische UI-templates en één oude vervangingsregex. Geen beperking tot algemene instellingen. Dit is niet hetzelfde als een uitputtende browserdoorloop van alle mogelijke data- en invoertoestanden. In de gecontroleerde zichtbare instellingen komen de zes termen niet meer voor.

Exacte termVoor, gehele bronNa, gehele bron
Expert ·450
Berekeningsbasis20
Indexwaarden10
Eigen index20
Marktgegevens uit maand10
Energiefonds30

Alleen index.html: Expert-voorvoegsels 10 → 0. De runtimeregel die het woord achteraf weghaalde is verwijderd. Woning-, auto-, gas-, analyse- en beheertitels zijn ook rechtstreeks in hun bron aangepast. Geen ID, handler of optie verwijderd. Nieuwe namen: Prijzen gelijk vergelijken, Verwachting voor marktprijzen, Eigen marktprijs, Maand van de marktprijzen, Jaarlijkse energietaks. Herhalen: node scripts/ux/report-review-audit.mjs.

7. Instellingen

Beginstatus: alleen standaard/aangepast-samenvatting; wijzigingsstatus is leeg en verborgen. Alleen een echte waardeverandering toont de beleefde live-regio. Een herhaald change-event met dezelfde waarde veroorzaakt geen nieuwe melding.

Herstelknoppen: geen opacity 0,5 meer, maar volledige dekking, rustige achtergrond, leesbare tekst en een zichtbare rand. Checkbox: 22 × 22 pixels, gemeten verticale afwijking van labelcentrum 0 px bij zowel 360 als 1280 px. Geen horizontale overloop en axe 0 overtredingen op beide gecontroleerde breedtes.

Schermafbeeldingen zijn Chrome-testframes, geen Safari-/Android-emulatie. Browserharness bevat nu dezelfde beginstatus-, wijzigings- en uitlijningcontroles; de lokale handmatige controle is apart van die niet-uitgevoerde CI-run vermeld.

8. Sandbox

Kandidaat sandbox="allow-same-origin allow-modals" is alleen op een lokale synthetische proefpagina geprobeerd. Chrome toont het document. De printaanroep leverde in deze cloudbrowser geen waarneembaar afdrukvenster of beforeprint-event; dat bewijst dus niet dat afdrukken werkt of faalt in een gewone Chrome-installatie. Firefox was niet beschikbaar. Daarom is de sandbox niet toegepast, conform de eis om printcompatibiliteit eerst in beide browsers te bewijzen.

De eigen rapport-CSP default-src 'none', lang="nl-BE", het scriptloze document en de lokale srcdoc-constructie blijven behouden. Geen nieuwe browserdataverzending.

Herhalen

npm test
npm run perf:golden
npm run lint
npm run typecheck
npm run format:check
node scripts/ux/report-fixture.mjs --write
python3 scripts/ux/render-report-examples.py
pdfinfo output/pdf/energy-review.pdf
pdfinfo output/pdf/installer-review.pdf
pdffonts output/pdf/energy-review.pdf

WeasyPrint is alleen een externe ontwikkeltool voor deze voorbeeldbestanden; geen nieuwe runtime-afhankelijkheid of PDF-dienst in de app.

Beslissingen

Voor punten 1-7 is geen rekenregel of beleidskeuze nodig. Voor sandbox-hardening blijft eerst een echte afdrukproef in Chrome én Firefox nodig. Tot die tijd is de bestaande printfunctie behouden; er wordt geen toestemming verondersteld om de voorwaarde af te zwakken. Andere open keuzes uit eerdere werkstromen zijn buiten deze beperkte opdracht gehouden.