Skip to content

fix(ventilation): reprendre les joints du DPE si presence_joint n'est jamais exporté (#294) - #306

Merged
michaeldesigaud merged 1 commit into
mainfrom
fix/issue-294-presence-joint-q4pa
Oct 15, 2026
Merged

michaeldesigaud merged 1 commit into
mainfrom
fix/issue-294-presence-joint-q4pa

Conversation

@elliot-redfroggy

Copy link
Copy Markdown
Collaborator

Closes #294

Problème

En appartement ou immeuble construit avant 1948, sur des surfaces majoritairement non isolées, quand aucune menuiserie (baie ou porte) n'exporte presence_joint, Open3CL considère toutes les menuiseries sans joint. Il retient alors q4pa_conv = 4,6 (ligne 1), alors que le DPE a retenu la ligne 12 « avant 1948 avec joints » (2,5). Exemple : 2262E2216652H, hperm 6,32 contre 3,43 pour l'ADEME.

Correctif (legacy + nouvelle archi, bug_for_bug_compat uniquement)

Quand presence_joint est absent, null ou vide sur toutes les menuiseries, aucune donnée ne contredit le DPE. On reprend donc presence_joints_menuiserie à partir de la ligne tv_q4pa_conv_id du DPE (verdict d'Olivier : GARDER, règle des 2,5 de la méthode consolidée, l. 4555-4557).

  • Legacy (src/4_ventilation.js) : nouvelle fonction pure exportée presenceJointNonRenseignee. On corrige aussi les messages trompeurs : ils affichaient « valeur du DPE utilisée » alors que c'est la valeur recalculée qui sert.
  • Nouvelle archi : DeperditionEnveloppeService calcule l'indicateur et le transmet à DeperditionVentilationService.q4paConv, qui lit la ligne via le nouveau TvStore.getQ4paConvById.
  • Si presence_joint est renseigné, même à 0, rien ne change : c'est le cas RA1-bis (4.1.1), classé SORTIR par Olivier.

Mesure (corpus local, 89 972 DPE)

Scan : 10 934 DPE n'ont presence_joint sur aucune menuiserie. Parmi eux, 396 déclarent la ligne 12 : ce sont les seuls concernés. Rejeu main vs branche, avec bug_for_bug :

métrique (≤ 5 %) main branche KO→OK OK→KO
déperdition RA 44 362 320 2
déperdition enveloppe 137 334 217 20
besoin_ch 127 288 191 30
conso_ch 124 221 134 37
ep 151 238 125 38
ges 124 219 131 36
DPE valide 103 188 111 26
  • RA à ±0,5 % : 31 → 360 sur 396. Médiane d'écart RA : 35,9 % → 0 %. Médiane d'écart ep : 6,9 % → 3,6 %.
  • Les 26 OK→KO ont tous un RA désormais exact (22 ont aussi une enveloppe à ±2 %). Ce sont des compensations fortuites : un RA surévalué masquait un autre écart en aval (murs, PT, générateur).
  • Contrôle sur 700 DPE hors périmètre (400 sans joint exporté avec une autre ligne, 300 d'avant 1948 avec joints exportés) : 0 modifié.
  • Nouvelle archi sur 2262E2216652H : hperm 6,318 → 3,434 (ADEME 3,434).

Tests

@michaeldesigaud
michaeldesigaud self-requested a review October 15, 2026 18:39
@michaeldesigaud michaeldesigaud added the bug Something isn't working label Oct 15, 2026
@michaeldesigaud
michaeldesigaud merged commit 9537813 into main Oct 15, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working hermes-done

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Renouvellement d'air : presence_joint absent sur toutes les menuiseries — reprendre la valeur du DPE (q4pa 2,5) en bug_for_bug

2 participants