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
70 lines
3.7 KiB
TypeScript
70 lines
3.7 KiB
TypeScript
export type Orientation = 'sud' | 'sud-est' | 'sud-ouest' | 'est' | 'ouest' | 'nord';
|
||
export type ClasseRt = 'H1' | 'H2' | 'H3';
|
||
export interface Coefficient<T = number> {
|
||
valeur: T;
|
||
/** Document ou norme qui fixe la valeur ; « heuristique … » si non sourcée. */
|
||
source: string;
|
||
/** Date du document source (AAAA-MM-JJ). */
|
||
date: string;
|
||
/** Fourchette, variante, réserve : ce que Jules doit savoir pour mettre un veto. */
|
||
note?: string;
|
||
}
|
||
export interface TableCoefficients {
|
||
/** Rendement de captage d'une toiture (part de la pluie réellement collectée). */
|
||
captage_rendement: Coefficient;
|
||
/** Rendement par type de toiture, pour un formulaire enrichi (non utilisé par les moteurs v0.1). */
|
||
captage_rendement_par_toiture: Coefficient<Record<'tuile' | 'ardoise' | 'gravillonnee' | 'vegetalisee', number>>;
|
||
/** Besoin domestique total, litres par jour et par personne. */
|
||
besoin_eau_l_j_pers: Coefficient;
|
||
/** Part du besoin substituable par l'eau de pluie (WC, douche, lessive, jardin). */
|
||
part_eau_substituable: Coefficient;
|
||
/** Facteur de production PV selon l'orientation du toit (sud 30° = 1). */
|
||
orientation_pv: Coefficient<Record<Orientation, number>>;
|
||
/** Productible PV annuel (kWh/kWc/an), par zone : `par` dit quelle clé du contexte indexe la table. */
|
||
productible_pv_kwh_kwc: Coefficient<{
|
||
par: 'zone_rt' | 'zone_biogeo_code';
|
||
table: Record<string, number>;
|
||
defaut: number;
|
||
}>;
|
||
/** Part de la production PV autoconsommée, sans batterie. */
|
||
autoconso_sans_batterie: Coefficient;
|
||
/** Part de la production PV autoconsommée, avec 10 kWh de batterie. */
|
||
autoconso_avec_batterie_10kwh: Coefficient;
|
||
/** Besoin d'électricité spécifique, kWh par personne et par an (hors chauffage électrique). */
|
||
besoin_elec_kwh_pers_an: Coefficient;
|
||
/** DJU base 18 par défaut, par classe de zone RT, si la ligne climat n'en porte pas. */
|
||
dju_defaut_par_classe_rt: Coefficient<Record<ClasseRt, number>>;
|
||
/** Mètres linéaires de haie fruitière par personne pour couvrir les fruits d'un foyer. */
|
||
ml_haie_par_pers: Coefficient;
|
||
/** Contexte climatique appliqué quand le département est inconnu (déclaré en avertissement). */
|
||
contexte_defaut: Coefficient<{
|
||
zone_rt: string;
|
||
zone_biogeo_code: number;
|
||
pluviometrie_mm: number;
|
||
dju: number;
|
||
}>;
|
||
/** SHAB estimée = emprise × niveaux × ce ratio (murs, refends, escalier). */
|
||
geometrie_ratio_shab_emprise: Coefficient;
|
||
/** Surface vitrée = SHAB × ce ratio. */
|
||
geometrie_ratio_vitrage_shab: Coefficient;
|
||
/** Hauteur d'un niveau par défaut (m), si la hauteur totale n'est pas connue. */
|
||
geometrie_hauteur_etage_m: Coefficient;
|
||
/** Périmètre estimé = 4 × √(emprise × facteur) (rectangle allongé). */
|
||
geometrie_facteur_perimetre: Coefficient;
|
||
/** Part du périmètre retirée par côté mitoyen. */
|
||
geometrie_part_mur_mitoyen: Coefficient;
|
||
/** Majoration de la surface de toiture (débords, recouvrements). */
|
||
geometrie_majoration_toiture: Coefficient;
|
||
/** Pente de toit par défaut (degrés) si inconnue. */
|
||
geometrie_pente_defaut_deg: Coefficient;
|
||
}
|
||
/** Table harmonisée (LOT P1.0, 28/09/2026). Référence tant que Jules ne met pas de veto (R-7). */
|
||
export declare const COEFFICIENTS: TableCoefficients;
|
||
/** Clés de la table, pour valider un jeu de coefficients injecté (fixture, veto). */
|
||
export declare const CLES_COEFFICIENTS: (keyof TableCoefficients)[];
|
||
/**
|
||
* Vérifie qu'un objet a la forme d'une table de coefficients (toutes les clés,
|
||
* chaque entrée avec valeur, source et date). Renvoie la liste des défauts.
|
||
*/
|
||
export declare function verifieTableCoefficients(table: unknown): string[];
|