Le fournisseur spot aWATTar était le seul flux sortant du moteur (invariant 10). Il n'est plus compilé que sous `qmake CONFIG+=etm_spotmarket` ; la source reste dans l'arbre pour la synchronisation amont. Sans l'option (build livré) : - `spotmarketdataproviderawattar.*` hors de SOURCES/HEADERS, enregistrement sous `#ifdef ETM_SPOTMARKET` ; - aucun `QNetworkAccessManager` : le plugin et l'expérience de simulation passent par le même point, `SpotMarketBuild::creer()` ; - `SetSpotMarketConfiguration` refuse l'activation avec `EnergyErrorInvalidParameter` + `fault: SPOT_MARKET_NOT_IN_BUILD` (code, pas de phrase). Désactiver reste accepté ; - `planSpotMarketCharging()` est inerte : `enabled()` ne peut plus devenir vrai. Tests : - simulation `testSpotMarketIsOutOfTheBuild` ; contre-épreuve faite (un QNetworkAccessManager réintroduit fait échouer le test) ; - spotmarket `shippedBuildHasNoProvider`, sur le .so réel ; les 4 tests qui lisent la liste aWATTar sont sautés hors option et passent avec l'option ; - `testDecisionReasonRendering` : ligne de rendu du nouveau code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
46 lines
1.6 KiB
C++
46 lines
1.6 KiB
C++
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
// Copyright (C) 2025 - 2026, Patrick Schurig / ETM PowerSync
|
|
#pragma once
|
|
|
|
#include <QObject>
|
|
|
|
class SpotMarketManager;
|
|
|
|
/*!
|
|
* \file spotmarketbuild.h
|
|
* \brief Le fournisseur spot selon le BUILD — un seul point de construction.
|
|
*
|
|
* \par Pourquoi un point unique
|
|
* Le plugin (\c EnergyPluginNymea::init()) et l'expérience de simulation construisent chacun
|
|
* leur \c SpotMarketManager. Si chacun décidait de son côté d'instancier ou non un
|
|
* \c QNetworkAccessManager, le test vérifierait la copie de la simulation, jamais celle qui
|
|
* part dans le paquet. Les deux passent donc par ici.
|
|
*
|
|
* \par Ce que l'option change
|
|
* Sans \c CONFIG+=etm_spotmarket (le build livré) : aucun \c QNetworkAccessManager, aucun
|
|
* fournisseur enregistré — le gestionnaire existe, mais \c setEnabled(true) est refusé faute
|
|
* de fournisseur, donc \c planSpotMarketCharging() rend la main à sa première ligne.
|
|
* Invariant 10 : le moteur ne contacte personne.
|
|
*/
|
|
namespace SpotMarketBuild {
|
|
|
|
//! \return Vrai si le fournisseur aWATTar est compilé dans ce build (\c ETM_SPOTMARKET).
|
|
constexpr bool inclus()
|
|
{
|
|
#ifdef ETM_SPOTMARKET
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
/*!
|
|
* \brief Construit le gestionnaire spot de ce build.
|
|
* \param parent Parent Qt du gestionnaire — et du \c QNetworkAccessManager quand il existe.
|
|
* \return Le gestionnaire. Sans l'option, il est construit avec un gestionnaire réseau
|
|
* **nul** : aucun objet réseau n'est créé, et aucun fournisseur ne peut s'en servir.
|
|
*/
|
|
SpotMarketManager *creer(QObject *parent);
|
|
|
|
}
|