OptimizerProtocol::getPlanParams(SurplusContext, ContexteFil) rend les params d'une requête GetPlan. Fonction pure, compilée dans le plugin mais appelée par personne : sans endpoint, rien ne change. - La prévision voyage À CÔTÉ du contexte (§11) : ContexteFil::prevision porte la sortie de EnergyArbitrator::instantanePrevision(), l'assemblage partagé avec GetForecastSnapshot. forecastDepuisInstantane() la pose sur la grille §5.2 : Wh par pas → p50W moyens (Wh × 3600 / resolutionS), case sans point = null, pv null sans courbe, weather null. - ContexteFil porte aussi trigger (sa source viendra en T3), meter.source, la PV instantanée, la limite de phase, la réserve, le domaine et la mesure par charge. - Inconnu = null ou absent, jamais 0 : contractedPowerW, pv.currentW, capacité et puissances batterie, tarif → null ; learned, comfort, group, champs réservés, force, powerLevels → absents ; borne configurée sans appareil → ni déclaration ni verrous. - meter.exportW brut (règle 8). Champs 1.0 conservés ; energyTargets dérivés par resolveDeadline (installer) et de la dérogation à cible (user-intent). Tests (loadmodel, logique pure) : 4 goldens dans data/optimizer (site sans PV ; PV + ECS relay-router + borne + SG-Ready ; prévision absente ; charge available=false figée), régénérables sous ETM_REGENERER_GOLDEN=1, plus 3 tests d'assertion. Contre-épreuves : contractedPowerW à 0, Wh non convertis, exportW net → chacune fait échouer au moins un test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
1.1 KiB
Prolog
25 lines
1.1 KiB
Prolog
include(../common/common.pri)
|
|
include(../../../energyplugin/energyplugin.pri)
|
|
|
|
CONFIG += testcase
|
|
|
|
TARGET = nymea-energy-loadmodel
|
|
|
|
# Cible VOLONTAIREMENT légère : aucun serveur nymea, aucun EnergyTestBase.
|
|
# La table de paliers et sameHardware() sont de la logique pure — les éprouver ici les rend
|
|
# rejouables en quelques millisecondes, là où la suite de simulation coûte un serveur complet
|
|
# par test (cf. AGENTS.md, « NE JAMAIS lancer la suite de simulation en un seul processus »).
|
|
|
|
HEADERS += testloadmodel.h
|
|
SOURCES += testloadmodel.cpp \
|
|
testoptimizerprotocol.cpp
|
|
# Fichiers de référence du sérialiseur GetPlan (brief 4 T1), lus et — sous ETM_REGENERER_GOLDEN=1 —
|
|
# réécrits DANS LES SOURCES : une régénération se relit en diff avant d'être commitée.
|
|
DEFINES += ETM_GOLDEN_DIR=\\\"$$PWD/data/optimizer\\\"
|
|
# Une base energy-forecast.sqlite ÉCRITE PAR etm67 (b7317f3) : la migration s'éprouve sur le
|
|
# vrai fichier, pas sur une imitation (testTheLearningLogMigratesAnEtm67TableInPlace).
|
|
RESOURCES += loadmodel.qrc
|
|
|
|
target.path = $$[QT_INSTALL_PREFIX]/bin
|
|
INSTALLS += target
|