Extraction du cœur autonomie de calculs.trans-former.fr (12 modules, sans singleton, couplages sans mutation, console derrière debug), découpage en trois moteurs d'axe + intégrateur (mode global = calculs, mode par_axe = plateforme), moteurs commun.contexte (Corse 2A/2B, DOM 97x corrigés) et commun.geometrie, table des coefficients harmonisés (docs/CONSTANTES.md pour Jules, R-7), validation structurelle des données (schemas/), tests hors ligne : 28 assertions d'origine + épingle générée depuis le code d'astro-pro + écarts d'harmonisation figés + contrat des moteurs. dist/ committé. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019UBHYPdeQYy2m1GVJp6b12
46 lines
2.1 KiB
TypeScript
46 lines
2.1 KiB
TypeScript
import type { Moteur, Resultat } from '../commun/contrat.js';
|
|
import { Trace } from '../commun/contrat.js';
|
|
import { type TableCoefficients } from '../commun/coefficients.js';
|
|
import type { Contexte } from '../commun/contexte.js';
|
|
import type { AlgoConfig, Autodiag, Axe, Option, Poste, PosteResultat, Statut } from './noyau/types.js';
|
|
import { type DetailAlim, type DetailEau, type DetailEnergie } from './taux.js';
|
|
export interface EntreesAxe {
|
|
autodiag: Autodiag;
|
|
/** Budget alloué à cet axe (EUR HT). */
|
|
budget_axe: number;
|
|
/** Contexte climatique (moteur `commun.contexte`). */
|
|
contexte: Contexte;
|
|
}
|
|
export interface DonneesAutonomie {
|
|
postes: Poste[];
|
|
options: Option[];
|
|
algo_config: AlgoConfig;
|
|
/** Table de coefficients ; par défaut la table harmonisée du paquet. */
|
|
coefficients?: TableCoefficients;
|
|
}
|
|
export interface SortiesAxe {
|
|
axe: Axe;
|
|
postes: PosteResultat[];
|
|
/** Codes des typologies retenues, dans l'ordre des postes. */
|
|
typologies: string[];
|
|
sous_total_eur_ht: number;
|
|
budget_alloue: number;
|
|
ecart_budget_pct: number;
|
|
status: Statut;
|
|
message_status?: string;
|
|
/** Journal des couplages (FORCE / MANQUANT / WARN / CONFLIT). */
|
|
couplages: string[];
|
|
/** Taux de couverture de l'axe en %, null si non calculable. */
|
|
taux_couverture: number | null;
|
|
taux_detail: DetailEau | DetailEnergie | DetailAlim | null;
|
|
}
|
|
/** Enregistre les clés de coefficients lues pendant un calcul (Proxy en lecture seule). */
|
|
export declare function enregistreLectures(table: TableCoefficients): {
|
|
table: TableCoefficients;
|
|
lues: Set<keyof TableCoefficients>;
|
|
};
|
|
/** Ajoute aux sources les coefficients lus et les prix des typologies retenues. */
|
|
export declare function traceSelection(trace: Trace, coefficients: TableCoefficients, lues: Set<keyof TableCoefficients>, postes: PosteResultat[], options: Option[], couplages: string[]): void;
|
|
export declare function calculeAxe(axe: Axe, entrees: EntreesAxe, donnees: DonneesAutonomie): Resultat<SortiesAxe>;
|
|
export declare function moteurAxe(axe: Axe, id: string): Moteur<EntreesAxe, DonneesAutonomie, SortiesAxe>;
|