refactor(arbitre): IScheduler *m_strategy à côté de m_scheduler (brief 4 T0.5)
update() interroge désormais la stratégie par son interface. Sans endpoint d'optimiseur, m_strategy pointe sur le rule-based : même objet, même appel. m_scheduler garde son type concret — le rule-based restera le repli et le plan ombre d'une stratégie externe (T0 §0.1). Aucun SocketScheduler. Neutre : référence de décisions IDENTIQUE (23 739 lignes) ; suites inchangées (simulation 211, loadmodel 135, charging 80, spotmarket 36 + 11 ignorés, 0 échec) ; aucun nouveau gabarit de journal >= info. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
d4b7d4dced
commit
ab36143385
@ -48,6 +48,7 @@ EnergyArbitrator::EnergyArbitrator(EnergyManager *em, ThingManager *tm,
|
|||||||
QObject *parent)
|
QObject *parent)
|
||||||
: SmartChargingManager(em, tm, sm, conf, parent)
|
: SmartChargingManager(em, tm, sm, conf, parent)
|
||||||
, m_scheduler(new RuleBasedScheduler(this, this))
|
, m_scheduler(new RuleBasedScheduler(this, this))
|
||||||
|
, m_strategy(m_scheduler)
|
||||||
, m_tm(tm)
|
, m_tm(tm)
|
||||||
{
|
{
|
||||||
// --- L2 : watchdog fraîcheur compteur (SAFETY.md §L2) ---
|
// --- L2 : watchdog fraîcheur compteur (SAFETY.md §L2) ---
|
||||||
@ -404,7 +405,7 @@ void EnergyArbitrator::update(const QDateTime ¤tDateTime)
|
|||||||
// SCM : 1.updateManual 2.prepareInfo 3.verifyOverload 4.verifyRecovery
|
// SCM : 1.updateManual 2.prepareInfo 3.verifyOverload 4.verifyRecovery
|
||||||
// 5.planSpot 6.planSurplus 7.adjustEv
|
// 5.planSpot 6.planSurplus 7.adjustEv
|
||||||
// ETM : idem 1-4 ; insertions ETM entre 4 et 7 ;
|
// ETM : idem 1-4 ; insertions ETM entre 4 et 7 ;
|
||||||
// planSpot + planSurplus appelés via m_scheduler->getPlan() (position 5-6).
|
// planSpot + planSurplus appelés via m_strategy->getPlan() (position 5-6).
|
||||||
|
|
||||||
// 1-4 : préparation + sécurité (même ordre que l'amont)
|
// 1-4 : préparation + sécurité (même ordre que l'amont)
|
||||||
updateManualSoCsWithoutMeter(currentDateTime);
|
updateManualSoCsWithoutMeter(currentDateTime);
|
||||||
@ -470,7 +471,7 @@ void EnergyArbitrator::update(const QDateTime ¤tDateTime)
|
|||||||
// que le contexte rapporte, et les survivantes y sont marquées avant que le plan ne soit
|
// que le contexte rapporte, et les survivantes y sont marquées avant que le plan ne soit
|
||||||
// fait. Les évaluer après le plan servirait un cycle de plus une dérogation déjà finie.
|
// fait. Les évaluer après le plan servirait un cycle de plus une dérogation déjà finie.
|
||||||
evaluerDerogations(ctx, currentDateTime);
|
evaluerDerogations(ctx, currentDateTime);
|
||||||
Plan plan = m_scheduler->getPlan(ctx);
|
Plan plan = m_strategy->getPlan(ctx);
|
||||||
Slot slot = plan.slotCovering(currentDateTime);
|
Slot slot = plan.slotCovering(currentDateTime);
|
||||||
|
|
||||||
// Le LIBELLÉ n'est pas dans le motif : il est substitué AU RENDU (cf. decisionreason.h).
|
// Le LIBELLÉ n'est pas dans le motif : il est substitué AU RENDU (cf. decisionreason.h).
|
||||||
|
|||||||
@ -1022,6 +1022,15 @@ private:
|
|||||||
static bool telemetrySignificantlyDiffers(const QVariantMap &a, const QVariantMap &b);
|
static bool telemetrySignificantlyDiffers(const QVariantMap &a, const QVariantMap &b);
|
||||||
|
|
||||||
RuleBasedScheduler *m_scheduler = nullptr;
|
RuleBasedScheduler *m_scheduler = nullptr;
|
||||||
|
/*!
|
||||||
|
* \brief La stratégie que update() interroge — c'est le SEUL appel de getPlan() du cycle.
|
||||||
|
*
|
||||||
|
* Sans endpoint d'optimiseur, elle pointe sur \c m_scheduler : même objet, même appel.
|
||||||
|
* \c m_scheduler garde son type concret parce que le rule-based est aussi le repli et le
|
||||||
|
* plan ombre d'une stratégie externe (brief 4 T0 §0.1 : ses effets de bord — actions du
|
||||||
|
* proxy, comptabilité éco, réserve batterie — doivent tourner à chaque cycle).
|
||||||
|
*/
|
||||||
|
IScheduler *m_strategy = nullptr;
|
||||||
QHash<QString, EvAdapter *> m_adapters; //!< loadId (ThingId string) → EvAdapter*.
|
QHash<QString, EvAdapter *> m_adapters; //!< loadId (ThingId string) → EvAdapter*.
|
||||||
/*!
|
/*!
|
||||||
* \brief [3g-2] Bornes commandées par le waterfall AU CYCLE COURANT.
|
* \brief [3g-2] Bornes commandées par le waterfall AU CYCLE COURANT.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user