Patrick Schurig 66c81086a9 feat(base): BaseloadLog — minutes du bilan, profil médian, qualité dite
Brief 3 T4. Une minute = consommation du site (échantillon d'une minute du
bilan, jamais ses cumuls) moins chaque charge pilotée selon sa source ; sous
none, sa puissance commandée, et la minute le garde. Deux tables dédiées
dans energy-forecast.sqlite (baseloadMinute, baseloadMinuteLoad), fil
d'écriture propre, lots de 5 min, lecture par journée, rétention 35 jours.
forecastPv et forecastLearning ne sont pas touchées.

Profil : médiane par case locale et type de jour (ouvré/week-end) sur
28 jours ; none sous 7 jours couverts à 90 %. Qualité : minutes comptées à
la commande, négatives, écartées, et par charge source et
constantMeasurement (la constante déguisée du banc).

Tests loadmodel : soustraction par source, profil synthétique (médiane,
jours de 23/25 h), seuil des 7 jours, fichier etm67 réel intact, jamais
bloquant, redémarrage, rétention, fichier illisible.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:51:23 +02:00

86 lines
3.3 KiB
Plaintext

# Rend les headers du répertoire energyplugin/ accessibles aux consommateurs
# (simulation, tests) qui incluent ce .pri depuis un autre répertoire.
INCLUDEPATH += $$PWD
# [ETM] Activate ETM arbitrator — replaces SmartChargingManager::update() with EnergyArbitrator.
# Propagé à tous les consommateurs du .pri (plugin + simulation + tests).
# Uncommenter pour activer. Commité DÉSACTIVÉ jusqu'à preuve iso (3b-iv).
DEFINES += ETM_ARBITRATOR
# [ETM] Fournisseur spot aWATTar — HORS DU BUILD LIVRÉ (invariant 10 : aucun flux sortant).
# C'était le seul appel réseau du moteur : une requête HTTPS vers api.awattar.{at,de}. La
# source reste dans l'arbre pour la synchronisation amont ; elle n'est compilée qu'avec
# `qmake CONFIG+=etm_spotmarket`. Sans l'option : aucun fournisseur enregistré, aucun
# QNetworkAccessManager construit, et l'activation par RPC est refusée avec un code
# (SPOT_MARKET_NOT_IN_BUILD). Le gestionnaire et ses fonctions de calcul restent compilés :
# SmartChargingManager (amont) en dépend, et les suites de test y injectent un fournisseur mock.
etm_spotmarket {
message("Fournisseur spot aWATTar COMPILÉ (CONFIG+=etm_spotmarket) — flux sortant actif")
DEFINES += ETM_SPOTMARKET
HEADERS += $$PWD/spotmarket/spotmarketdataproviderawattar.h
SOURCES += $$PWD/spotmarket/spotmarketdataproviderawattar.cpp
}
greaterThan(QT_MAJOR_VERSION, 5) {
message("Building using Qt6 support")
CONFIG *= c++17
QMAKE_LFLAGS *= -std=c++17
QMAKE_CXXFLAGS *= -std=c++17
} else {
message("Building using Qt5 support")
CONFIG *= c++11
QMAKE_LFLAGS *= -std=c++11
QMAKE_CXXFLAGS *= -std=c++11
DEFINES += QT_DISABLE_DEPRECATED_UP_TO=0x050F00
}
coverage {
message(Building with code coverage enabled)
# --coverage option contains: -fprofile-arcs -ftest-coverage -lgcov
QMAKE_CXXFLAGS *= --coverage
QMAKE_LDFLAGS *= --coverage
LIBS += -lgcov
}
HEADERS += \
$$PWD/energymanagerconfiguration.h \
$$PWD/energysettings.h \
$$PWD/evcharger.h \
$$PWD/nymeaenergyjsonhandler.h \
$$PWD/rootmeter.h \
$$PWD/smartchargingmanager.h \
$$PWD/etm/forecast/forecaststore.h \
$$PWD/etm/forecast/forecastlearninglog.h \
$$PWD/etm/forecast/baseloadlog.h \
$$PWD/spotmarket/spotmarketdataprovider.h \
$$PWD/spotmarket/spotmarketmanager.h \
$$PWD/types/chargingaction.h \
$$PWD/types/charginginfo.h \
$$PWD/types/chargingprocessinfo.h \
$$PWD/types/chargingschedule.h \
$$PWD/types/scoreentry.h \
$$PWD/types/smartchargingstate.h \
$$PWD/types/timeframe.h \
include($$PWD/etm/etm.pri)
SOURCES += \
$$PWD/energymanagerconfiguration.cpp \
$$PWD/energysettings.cpp \
$$PWD/evcharger.cpp \
$$PWD/nymeaenergyjsonhandler.cpp \
$$PWD/rootmeter.cpp \
$$PWD/smartchargingmanager.cpp \
$$PWD/etm/forecast/forecaststore.cpp \
$$PWD/etm/forecast/forecastlearninglog.cpp \
$$PWD/etm/forecast/baseloadlog.cpp \
$$PWD/spotmarket/spotmarketdataprovider.cpp \
$$PWD/spotmarket/spotmarketmanager.cpp \
$$PWD/types/chargingaction.cpp \
$$PWD/types/charginginfo.cpp \
$$PWD/types/chargingprocessinfo.cpp \
$$PWD/types/chargingschedule.cpp \
$$PWD/types/scoreentry.cpp \
$$PWD/types/smartchargingstate.cpp \
$$PWD/types/timeframe.cpp \