Meilleure courbe de charge disponible (`profile.resolve-best-curve`)
Pourquoi
La qualité d'une recommandation tarifaire dépend d'abord de la qualité de la
courbe de charge. Le moteur disposait déjà de plusieurs producteurs de courbes
(SGE, Linky, CSV CDC, reconstruction depuis facture, synthèse Enedis) mais
choisissait toujours la synthèse, même quand une mesure réelle existait.
Cette méthode introduit une échelle de priorité : on utilise toujours la
meilleure source disponible, et on n'« invente » une forme que faute de mesure.
Échelle de sources (premier succès gagne)
Confiance high. Jamais remise à l'échelle (vérité mesurée).
high.
medium.
low.
Seul ce niveau pose using_default_profile=true.
Entrées
year, annual_kwh (requis pour la synthèse ; sert à remettre à l'échelle les
niveaux 2–3, jamais le niveau 1)
site { accountId, siteId } (niveau 1, via dépendances injectées)
cdc_csv (niveau 2), invoice { half_hour_series, coefficient_snapshot_id }
(niveau 3), synth { enedis_class | sector_id } (niveau 4)
Garanties
graphe passe par siteBaselineDeps injecté (le portée par compte/site
autorisé est de la responsabilité de l'appelant).
annual_kwh uniquement
pour les niveaux non mesurés.
InsufficientProfileError propagée quand aucune source ne
produit de courbe et que la synthèse manque d'entrées → l'appelant demande une
vraie courbe (needs_cdc_upload) au lieu d'un profil plat trompeur.
Limites
CURVE_SOURCE_RANK du graphe.