Files
JulesandClaude Fable 5.1 69809df5d1 LOT P1.0 : paquet @transformer/moteurs v0.1.0
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
2026-09-28 17:06:49 +02:00

72 lines
2.7 KiB
TypeScript

import type { TableCoefficients } from '../commun/coefficients.js';
import type { Contexte } from '../commun/contexte.js';
import { Trace } from '../commun/contrat.js';
import type { PosteResultat } from './noyau/types.js';
export interface DetailEau {
captable_m3: number;
besoin_m3: number;
besoin_substituable_m3: number;
}
export interface DetailEnergie {
kwc: number;
kwh_par_kwc: number;
facteur_orientation: number;
production_kwh: number;
batterie_kwh: number;
taux_autoconso: number;
autoconsomme_kwh: number;
besoin_kwh: number;
}
export interface DetailAlim {
ml: number;
reco_ml: number;
}
/** kWc installés dans la sélection (dimensions en kWc). */
export declare function kwcSelectionnes(postes: PosteResultat[]): number;
/** kWh de batterie dans la sélection (dimensions en kWh). */
export declare function batterieSelectionnee(postes: PosteResultat[]): number;
/** Mètres linéaires de haie dans la sélection. */
export declare function mlHaiesSelectionnes(postes: PosteResultat[]): number;
/** Vrai si la sélection porte un équipement de captage. */
export declare function aCaptage(postes: PosteResultat[]): boolean;
/**
* EAU : volume captable vs besoin substituable. null si aucun captage.
*/
export declare function tauxEau(entrees: {
surface_toit_m2?: number;
nb_personnes?: number;
pluviometrie_mm: number;
a_captage: boolean;
}, coefficients: TableCoefficients, trace: Trace): {
taux: number | null;
detail: DetailEau | null;
};
/** Taux d'autoconsommation selon la batterie : 0 kWh → sans, ≥ 10 kWh → avec, linéaire entre. */
export declare function tauxAutoconso(batterie_kwh: number, coefficients: TableCoefficients): number;
/** Productible PV (kWh/kWc/an) pour un contexte, depuis la table de coefficients. */
export declare function productiblePv(contexte: Pick<Contexte, 'zone_climatique_rt' | 'zone_biogeo_code'>, coefficients: TableCoefficients, trace: Trace): number;
/**
* ÉNERGIE : production PV autoconsommée vs besoin d'électricité spécifique.
* null si aucun kWc dans la sélection.
*/
export declare function tauxEnergie(entrees: {
kwc: number;
batterie_kwh: number;
orientation_toit?: string;
nb_personnes?: number;
contexte: Pick<Contexte, 'zone_climatique_rt' | 'zone_biogeo_code'>;
}, coefficients: TableCoefficients, trace: Trace): {
taux: number | null;
detail: DetailEnergie | null;
};
/**
* ALIMENTATION : mètres de haie vs recommandation. null si aucune haie.
*/
export declare function tauxAlim(entrees: {
ml: number;
nb_personnes?: number;
}, coefficients: TableCoefficients, trace: Trace): {
taux: number | null;
detail: DetailAlim | null;
};