← EnergyViewEnergyView — investeringsbron, voortgang en tariefdekking
Oorzaken
1. Een afgerond achtergrondrapport werd de nieuwste reportViewCache terwijl een ander rapport in het scherm bleef staan. De investeringsknop las de nieuwste cache, niet noodzakelijk het gemonteerde advies. Daardoor kon “woning vandaag / geen nieuwe installatie” worden overgenomen terwijl aankoopplannen zichtbaar waren. 2. De oude voortgang mengde globale geteste aantallen met een nog groeiend totaal. Extra contract-/planvarianten werden pas later bij dat totaal opgeteld. 3. De zwaardere installatieberekeningen liepen na alle contractreferenties en na uitgebreide varianten van het actieve scenario, en daarna contract voor contract. Bij een tijdlimiet kwamen latere tarieftypes mogelijk niet meer aan bod. Bovendien werd een goedkoop contract gekozen zonder te toetsen of nieuwe PV met injectie erop berekenbaar was. Een ongeldig dynamisch injectiecontract kon daardoor een wél ondersteund dynamisch alternatief uit de selectie houden.
Correcties
- De knop, de voortgang, het resultaat en herstel uit cache gebruiken de cache-entry die bij het daadwerkelijk gemonteerde advies hoort. Een niet meer beschikbare zichtbare entry geeft een expliciete melding, geen stilzwijgende vervanging door een ander profiel.
- Het overgenomen voorstel vermeldt zijn herkomst: “Overgenomen voorstel uit Advies” of bij een eigen keuze “Je gekozen aanpak uit Advies”, met woning vandaag of aankoopplannen. “Je huidige keuze” wordt niet meer gebruikt voor een automatisch voorstel. Bronmetadata bevatten het profiel.
- Een expliciet gestart investeringsonderzoek krijgt voorrang boven wachtend achtergrondwerk. Een al draaiende berekening wordt niet afgebroken en er komen geen extra gelijktijdige zware workers. Tijdens de wachtrij benoemt de melding achtergrondwerk; bij daadwerkelijk starten volgt meteen een voorbereidingsmelding. Automatische warmups worden tijdens het investeringsonderzoek gepauzeerd en daarna hervat. Een korte wachttijd op reeds draaiend werk kan dus nog terecht optreden, ook wanneer het zichtbare advies groen is.
- Voortgang heeft vaste, afzonderlijke fase-aantallen: contractreferenties en installatiecombinaties. Het overnemen van het advies heeft een eigen fasetekst, zonder een misleidende globale breuk.
- De kandidaatvolgorde begint met PV zonder batterij voor de geselecteerde tarieftypes, daarna PV + een stekkerbatterij en batterij zonder nieuwe PV voor die types. Pas daarna volgt de rest van de bestaande groottes. Dynamisch wordt daardoor niet pas na alle vaste en variabele installaties gestart. Dit is een verdeling van bestaande kandidaten, geen andere dispatchsolver.
- De goedkoopste contractselectie per type gebruikt nog de eerstejaarkosten zonder nieuwe aankoop, maar vereist bij PV nu een berekenbaar injectietarief. Bij een niet bruikbaar contract wordt verder gezocht binnen hetzelfde tarieftype. Het huidige contract blijft als expliciete referentie aanwezig. Een ontbrekend injectiecontract wordt nooit verzonnen.
- De installatieprofielen worden per contract voor de laatst gebruikte PV-grootte hergebruikt; we bewaren niet alle jaarprofielen tegelijk. Tijd- en workerlimieten blijven behouden.
- Het overzicht “Welke contracten en combinaties zijn onderzocht?” toont aantallen per tarieftype en concrete fouten of niet bereikte combinaties. Een nul bij dynamisch betekent niet automatisch dat dynamisch financieel onvoordelig is. Ook fouten bij een overgenomen variant noemen nu het betreffende contract.
De kleine contractselectie en de rekentijdgrens blijven bestaan. De onderzochte deelverzameling en dus het uiteindelijke aankoopadvies kunnen veranderen omdat andere, voorheen niet bereikte of niet geselecteerde varianten nu wel worden doorgerekend. Tariefformules, dispatch, fysieke batterijregels en het minimum van €20/kWh/jaar zijn niet gewijzigd. B5 is niet toegepast.
Verificatie
- Volledige suite: 233/233 geslaagd.
- Acht golden-scenario’s: alle volledige resultaatobjecten exact gelijk, inclusief rangorde en identifiers. Golden-referentie niet gewijzigd.
- Nieuwe integratietest: zichtbare aankoopplannen met 2.000 Wp blijven de bron van Investering wanneer een afgerond verborgen woning-vandaagrapport de centrale cache vervangt. Ook voortgang en resultaat blijven aan de zichtbare view gekoppeld.
- Nieuwe wachtrijtest: aangevraagd investeringsonderzoek gaat vóór wachtend achtergrondwerk, laat draaiend werk ongemoeid en hervat daarna achtergrondwerk. De startmelding vervangt de wachtrijmelding.
- Nieuwe plannertest: tarieftypes en scenariogroepen komen eerst aan bod; dezelfde kandidaatset blijft zonder dubbelen bereikbaar.
- Nieuwe injectieselectietest: een goedkoop dynamisch contract met onbruikbare injectie sluit een ander, wel ondersteund dynamisch PV/batterijaanbod niet uit. Onder een deterministische korte tijdlimiet zijn vaste én dynamische PV- en PV+batterijvarianten al doorgerekend.
- Alle gecontroleerde voortgangsbreuken hebben een vaste noemer per fase, lopen oplopend en overschrijden hun noemer niet.
- Echte dynamische jaarproef: 23 combinaties × drie scenario’s volledig berekend, circa 50,5 seconden in deze suite. Dit is één synthetische meting, geen bewezen versnelling ten opzichte van de eerdere 54,6 seconden en geen voorspelling voor het gebruikersbestand.
- Lint 737 bestaande meldingen, nul nieuwe groepen; typecheck 468 bestaande meldingen, nul nieuwe groepen. Opmaakcontrole groen.
De extra deterministische tijdlimietassertie is na de volledige suite gericht herhaald en geslaagd. De volledige suite omvatte de basis-injectieselectietest al. De numerieke golden is daarna niet gewijzigd.
Browsercontrole: het echte investeringscomponent toont het overgenomen aankoopprofiel en dynamische PV/batterijregels met synthetische jaarresultaten. De overgenomen-profielmetadata van deze componentproef is een testfixture. De daadwerkelijke cache-race is getest via de echte knop-handler in de nagebootste DOM; geen persoonlijke gebruikersdata of volledige browserreproductie van diens bestaande sessie geclaimd.