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
This commit is contained in:
Vendored
+49
@@ -0,0 +1,49 @@
|
||||
import type { Moteur, Resultat } from './contrat.js';
|
||||
import { type TableCoefficients } from './coefficients.js';
|
||||
export interface LigneClimat {
|
||||
dept: string;
|
||||
nom_dept?: string;
|
||||
zone_rt: string;
|
||||
pluvio_mm_an?: number | null;
|
||||
dju_base_18?: number | null;
|
||||
zone_biogeo?: number | null;
|
||||
[autre: string]: unknown;
|
||||
}
|
||||
export type ClasseRt = 'H1' | 'H2' | 'H3';
|
||||
export type ZoneBiogeo = 'C' | 'M' | 'OC' | 'MED';
|
||||
export interface Contexte {
|
||||
/** Département tel que trouvé (« 2A », « 971 », « 75 ») ou null si inconnu. */
|
||||
departement: string | null;
|
||||
zone_climatique_rt: string;
|
||||
zone_rt_class: ClasseRt;
|
||||
/** Zone écologique (biogéographique) en lettres : C, M, OC, MED. */
|
||||
zone_biogeo: ZoneBiogeo;
|
||||
/** Zone biogéographique numérique (1 à 8) telle que portée par france_climat. */
|
||||
zone_biogeo_code: number;
|
||||
pluviometrie_mm: number;
|
||||
dju: number;
|
||||
}
|
||||
export interface EntreesContexte {
|
||||
code_postal: string;
|
||||
}
|
||||
export interface DonneesContexte {
|
||||
france_climat: LigneClimat[];
|
||||
coefficients?: TableCoefficients;
|
||||
}
|
||||
/** Zone biogéographique numérique → libellé (V2 calibrage.js, inchangé). */
|
||||
export declare const ZONE_BIOGEO_MAP: Record<number, ZoneBiogeo>;
|
||||
/** Sous-zone RT (H1a, H2d…) → classe principale. */
|
||||
export declare function zoneRtToClass(zone_rt: string | null | undefined): ClasseRt;
|
||||
/**
|
||||
* Département depuis un code postal : DOM (97x → trois caractères), Corse
|
||||
* (20000-20190 → 2A, 20200-20620 → 2B, autre 20xxx → 2A), sinon deux chiffres.
|
||||
* Reprend `deptFromCp` de calculs (scripts/autonomie/data.js), seule version
|
||||
* qui gérait ces cas. Renvoie null si le code postal est inexploitable.
|
||||
*/
|
||||
export declare function departementDepuisCodePostal(code_postal: string | number | null | undefined): string | null;
|
||||
/**
|
||||
* Dérive le contexte climatique. Fonction pure, utilisée par le moteur
|
||||
* `commun.contexte` et par le noyau autonomie (`selectionner`).
|
||||
*/
|
||||
export declare function deriveContexte(code_postal: string | number | null | undefined, climat: LigneClimat[], coefficients?: TableCoefficients): Resultat<Contexte>;
|
||||
export declare const contexte: Moteur<EntreesContexte, DonneesContexte, Contexte>;
|
||||
Reference in New Issue
Block a user