Vue d'ensemble
Principes transversaux & inventaire des nouveautés
Ce document décrit la couche de calcul des quantités du chiffrage automatisé. Elle est strictement séparée de la couche d'apparition (déjà spécifiée). Chaque onglet = un lot : d'abord ce qui a été ajouté ou modifié (nouvelles sources, variables, logique), puis le tableau des fiches de calcul.
Les 6 principes transversaux
1Apparition ≠ Quantité. Les règles décident si une prestation apparaît ; ces fiches décident seulement de la quantité une fois déclenchée.
2Deux archétypes. A = forfait global (quantité 1, prix modulé par coefficients). B = quantité réelle (m²/ml/nb), prix = base_price[quality_level] sans coefficient de taille.
3Données client fiables vs analyse faillible. Une donnée d'analyse (existing_floor_finish, has_radiator…) ne peut jamais faire tomber une quantité à 0. « inconnu / absent » = on inclut.
4ratio_sémantique = multiplicateur, jamais une source. Le LLM applique un ratio (0 → 1+) à une source géométrique réelle. Défaut 0 pour les ouvrages à ancrage sémantique pur (pas de mention = pas de ligne).
5Exclusivité à l'apparition. Un seul sol / WC / plan de travail par pièce : géré par l'apparition, jamais par un dédoublonnage de quantité.
6quality_level = prix uniquement. La gamme choisit la colonne de prix et le produit ; elle ne déclenche ni ne quantifie rien.
Sources métier Bernadette Studio créées 7 nouvelles
Ce sont des calculs internes backend, pas des saisies client. Aucune n'ajoute de donnée à saisir.
| Source | Lot | Définition |
|---|---|---|
| bs_elec_count | Électricité | Nb de points électriques par pièce rénovée (room_type + room.surface, base NF C 15-100). |
| bs_triggered_count | Électricité | Nb d'équipements alimentés déclenchés (sorties de câble). |
| bs_plumbing_linear | Plomberie | ml de réseau par pièce humide × coef de taille. |
| bs_water_points | Plomberie / SDB | Nb de points d'eau (robinets, mitigeurs). |
| bs_radiator_count | CVC | 1 radiateur par pièce à chauffer. |
| bs_vmc_count | CVC | 1 VMC si ≤80 m², 2 si >80 m². |
| bs_kitchen_linear | Cuisine | Linéaire cuisine = (length_m + width_m) × ratio. |
Coefficients internes créés
| Coefficient | Lot | Barème |
|---|---|---|
| coef_niveau_renovation | Lot 0 | complète 1,0 · partielle 0,8 · rafraîchissement 0,5 |
| coef_surface_lot0 | Lot 0 | 1,0 → 3,5 selon surface_totale_m2 |
| coef_etage | Lot 0 | 1,0 → 1,75 selon property_floor_level |
| coef_niveau_elec | Électricité | complète 1,0 · partielle 0,6 · rafraîchissement 0,0 |
| coef_taille_plomberie | Plomberie | 1,0 → 1,6 selon surface_totale_m2 |
Variables à créer (non présentes dans l'existant)
À CRÉERtype_habitat (appartement / maison)
Pour ELEC-024 (interphone) et la protection des parties communes. Proxy actuel : property_floor_level > 0.
À CRÉERduree_chantier_semaines
Envisagée mais non retenue en V1 pour le nettoyage courant (traité en forfait).
Légende des étiquettes
CLIENT donnée saisie (écran 0/1/2) — fiable, peut être bloquante
MOTEUR source de quantité existante (fournie par les devs)
MÉTIER source Bernadette créée — calcul interne, nouveau
LOGIQUE règle de raisonnement transversale
À CRÉER donnée non présente dans l'existant
Lot 0 — Préparation
Installation de chantier, protections, nettoyage
LOGIQUEArchétype A — forfaits globaux
Toutes les prestations du lot sont des forfaits : la quantité est toujours 1. Ce sont les coefficients de prix (et non la quantité) qui reflètent le projet.
MÉTIERcoef_niveau_renovation NOUVEAU
Coefficient interne (backend) : complète 1,00 · partielle 0,80 · rafraîchissement 0,50. Fallback absent = 1,00.
MÉTIERcoef_surface_lot0 NOUVEAU
Coefficient interne selon surface_totale_m2 : ≤30→1,0 · 30-50→1,5 · 50-80→2,0 · 80-120→2,75 · >120→3,5.
MÉTIERcoef_etage NOUVEAU
Coefficient interne selon property_floor_level : RDC→1,0 · +1→1,10 · +2→1,20 · +3→1,35 · +4→1,50 · ≥5→1,75.
LOGIQUEPrestations fusionnées
La liste a été simplifiée (8 → 4). PRE-001 regroupe installation + protection des sols + nettoyage courant.
À CRÉERÀ vérifier — ré-ancrage du base_price
Les coefficients partent de 1,0 à ≤30 m². Le base_price doit donc être le prix d'un petit chantier de référence, sinon inflation (double comptage avec coef_surface).
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| PRE-001 | Installation chantier + protection sols + nettoyage courant | fixed_price | 1 | — | Quantité 1. Prix = base_price[quality_level] × coef_niveau × coef_surface |
| PRE-002 | Protection parties communes | fixed_price | 1 | — | Quantité 1. Prix = base × coef_niveau × coef_etage |
| PRE-003 | Manutention & approvisionnement | fixed_price | 1 | — | Quantité 1. Prix = base × coef_niveau × coef_surface × coef_etage |
| PRE-004 | Nettoyage fin de chantier | fixed_price | 1 | — | Quantité 1. Prix = base × coef_niveau × coef_surface |
Lot 1 — Démolition / Dépose
Déposes de revêtements, sanitaires, menuiseries, évacuation
LOGIQUEPrincipe fondateur : l'analyse n'est jamais bloquante
Une donnée d'analyse (existing_floor_finish, has_radiator…) ne peut jamais faire tomber une quantité à 0. Base fiable = room_to_renovate + room.surface. « inconnu / absent » = on inclut.
CLIENTdoors_to_renovate / windows_to_renovate NOUVEAU (client)
Checkboxes écran 2. Pilotent la dépose porte/fenêtre via doors_count / windows_count.
LOGIQUEDEM-003 : quantité par sémantique
La démolition de cloison n'a aucun ancrage géométrique. La quantité (m²) est déduite du texte projet — jamais inventée par un ratio.
MOTEURSignaux d'analyse en OU
Ex. dépose radiateur = has_radiator OU visible_plumbing OU type_chauffage à eau, pour ne pas rater le cas si l'analyse est muette.
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| DEM-001 | Dépose revêtements de sols | floor_area_m2 | room.surface, sinon length_m×width_m | — | Σ room.surface des pièces où room_to_renovate=1 (aucun filtre sur existing_floor_finish) |
| DEM-002 | Dépose revêtements muraux | wall_area_m2 | perimeter_m × 2,5 | — | Σ wall_area_m2 des pièces où room_to_renovate=1 |
| DEM-003 | Démolition cloison légère | wall_area_m2 | manual | ratio_sémantique · défaut 0 | wall_area_m2 des pièces où DEM-003 est déclenchée (le multiplicateur donne la fraction de mur à abattre) |
| DEM-004 | Dépose faux plafond | ceiling_area_m2 | room.surface | — | Σ ceiling_area_m2 des pièces déclenchées où room_to_renovate=1 |
| DEM-005 | Dépose cuisine existante | fixed_price | 1 | — | 1 si room_type=kitchen OU presence_cuisine=1, avec room_to_renovate=1 |
| DEM-006 | Dépose salle de bain existante | rooms_count | 1 | — | Nb de pièces où room_bathroom_type ∈ {salle_de_bain, salle_d_eau} OU visible_plumbing=1, room_to_renovate=1 |
| DEM-007 | Dépose appareil sanitaire (WC) | rooms_count | 1 | — | Nb de pièces où room_bathroom_type=wc ET room_to_renovate=1 |
| DEM-008 | Dépose radiateur | rooms_count | 1 | — | Nb de pièces room_to_renovate=1 ET has_radiator=1 (si dispo) ; sinon 1 par pièce à rénover |
| DEM-009 | Dépose porte intérieure | doors_count | 1/pièce | — | Σ doors_count des pièces où doors_to_renovate=1 |
| DEM-010 | Dépose fenêtre | windows_count | 1/pièce | — | Σ windows_count des pièces où windows_to_renovate=1 |
| DEM-011 | Évacuation gravats + tri sélectif | fixed_price | 1 | — | 1 forfait global si ≥1 dépose/démolition déclenchée. Archétype A : prix = base × coef_niveau × coef_surface |
Lot 2 — Cloisons / Isolation / Faux plafonds
Créations, doublages, isolation, faux plafonds
LOGIQUEratio_sémantique NOUVEAU (concept)
La sémantique n'est JAMAIS une quantity_source : c'est un multiplicateur (0 → 1+) appliqué à une source géométrique réelle (wall_area_m2…). Le LLM répond « quelle fraction ? », jamais « combien de m² ? ».
LOGIQUEDéfaut ratio_sémantique = 0
Pour les ouvrages à ancrage sémantique pur (cloisons, coffrage), pas de mention dans la description = pas de ligne. La sémantique conditionne alors aussi l'apparition.
CLIENTIsolation = 2 conditions client obligatoires
PLA-005/007 exigent surface_a_isoler contient {murs|plafonds} ET type_isolation=isolation_interieure. L'isolation par l'extérieur ne déclenche jamais ces prestations d'ITI.
LOGIQUEForfait modulable par ratio
PLA-010 : fixed_price=1 mais le ratio_sémantique peut l'annuler (0) ou le pondérer.
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| PLA-001 | Cloisonnement (création) | wall_area_m2 | perimeter_m × 2,5 | ratio_sémantique · défaut 0 | wall_area_m2 |
| PLA-002 | Cloison hydrofuge BA13 | wall_area_m2 | perimeter_m × 2,5 | — | idem · défaut 0 |
| PLA-003 | Cloison acoustique renforcée | wall_area_m2 | perimeter_m × 2,5 | — | idem · défaut 0 |
| PLA-004 | Doublage mur | wall_area_m2 | perimeter_m × 2,5 | ratio_sémantique · défaut 0 | wall_area_m2 |
| PLA-005 | Isolation thermique mur (intérieur) | wall_area_m2 | perimeter_m × 2,5 | — | Σ wall_area_m2 des pièces room_to_renovate=1 ET surface_a_isoler contient murs ET type_isolation=isolation_interieure |
| PLA-006 | Faux plafond BA13 | ceiling_area_m2 | room.surface | ratio_sémantique · défaut 1 | Si niveau_renovation=complete : Σ ceiling_area_m2 des pièces room_type ∈ {couloir, dégagement, entrée, buanderie, salle_de_bain, salle_d_eau}. Sinon |
| PLA-007 | Faux plafond acoustique / isolé | ceiling_area_m2 | room.surface | ratio_sémantique · défaut 1 | Σ ceiling_area_m2 des pièces room_to_renovate=1 ET surface_a_isoler contient plafonds ET type_isolation=isolation_interieure · complément |
| PLA-008 | Coffrage (habillage réseaux) | linear_meters_total | perimeter_m | ratio_sémantique · défaut 0 | linear_meters_total |
| PLA-009 | Trappe de visite | rooms_count | 1 | — | Nb de pièces où un faux plafond/coffrage est déclenché |
| PLA-010 | Reprise encadrement / support | fixed_price | 1 | ratio_sémantique · défaut 0 | (voir source) |
Électricité
Points, circuits, appareillage, alimentations
MÉTIERbs_elec_count NOUVEAU (source métier)
Nombre d'appareillages électriques, calculé par pièce où room_to_renovate=1, selon room_type et room.surface. S'appuie sur les minimums NF C 15-100. AUCUNE variable client nouvelle.
MÉTIERbs_triggered_count NOUVEAU (source métier)
Nombre d'équipements alimentés déclenchés (via triggered_prestations.codes) — pour les sorties de câble.
MÉTIERcoef_niveau_elec NOUVEAU (coef)
complète 1,00 · partielle 0,60 · rafraîchissement 0,00 (électricité hors périmètre).
LOGIQUEFusion appareillage
ELEC-013/014/015 fusionnés en ELEC-013 : l'appareillage = total des points ; la gamme ne joue que sur le prix.
À CRÉERtype_habitat À CRÉER
ELEC-024 (interphone) : proxy property_floor_level>0 en attendant une variable appartement/maison.
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| ELEC-001 | Mise en sécurité électrique | fixed_price | 1 | — | 1 forfait global si électricité dans le périmètre |
| ELEC-002 | Tableau électrique | fixed_price | 1 | — | 1 global · prix modulé par la taille du projet |
| ELEC-003 | Prise 16A | bs_elec_count | room_type inconnu → 1/pièce | — | Σ pièces room_to_renovate=1 : séjour max(5, ⌈room.surface/4⌉), cuisine 6 (3 si ≤4 m²), chambre 3, autres 1, WC 0 · × coef_niveau_elec |
| ELEC-004 | Interrupteur simple | bs_elec_count | 1/pièce | — | Σ pièces room_to_renovate=1 : 1/pièce (0 couloir) · × coef_niveau_elec |
| ELEC-005 | Va-et-vient | bs_elec_count | 0 | — | Σ pièces room_to_renovate=1 : 1 (séjour, chambre, couloir) · × coef_niveau_elec |
| ELEC-006 | Point lumineux | bs_elec_count | 1/pièce | — | Σ pièces room_to_renovate=1 : 1/pièce, cuisine 2 · × coef_niveau_elec |
| ELEC-007 | Prise 32A | bs_elec_count | 0 | — | Σ pièces room_type=kitchen : 1 · × coef_niveau_elec |
| ELEC-008 | Prise 20A | bs_elec_count | 0 | — | Σ pièces room_to_renovate=1 : cuisine 3 + buanderie 1 · × coef_niveau_elec |
| ELEC-009 | Prise RJ45 | bs_elec_count | 0 | — | Σ pièces room_to_renovate=1 : séjour 2 + chambre 1 · × coef_niveau_elec |
| ELEC-010 | Prise TV | bs_elec_count | 0 | — | Σ pièces room_type=living_room : 1 · × coef_niveau_elec |
| ELEC-011 | Spots | rooms_count | 0 | ratio_sémantique · défaut 0 | rooms_count |
| ELEC-012 | Ruban LED (ml) | linear_meters_total | 0 | ratio_sémantique · défaut 0 | (voir source) |
| ELEC-013 | Appareillage (fusion éco/std/premium) | bs_elec_count | = total points | — | Total des points posés (prises + interrupteurs + va-et-vient + RJ45 + TV) · × coef_niveau_elec |
| ELEC-016 | Sortie de câbles | bs_triggered_count | 1 | — | Nb d'équipements alimentés déclenchés (ballon, radiateur, sèche-serviette, VMC…) |
| ELEC-017 | Alimentation ballon | fixed_price | 1 | — | 1 par ballon ECS · triggered_by PLO-011 · lié type_eau_chaude=ballon_electrique |
| ELEC-018 | Alimentation VMC | fixed_price | 1 | — | 1 par VMC · triggered_by CVC-007 |
| ELEC-019 | Alimentation miroir | rooms_count | 1 | — | Nb de SDB rénovées · triggered_by SDB-016 |
| ELEC-020 | Prise commandée | rooms_count | 0 | ratio_sémantique · défaut 0 | (voir source) |
| ELEC-021 | Prise USB-C | rooms_count | 0 | ratio_sémantique · défaut 0 | (voir source) |
| ELEC-022 | Interrupteur variateur | rooms_count | 0 | ratio_sémantique · défaut 0 | (voir source) |
| ELEC-023 | Télérupteur encastré | rooms_count | 0 | ratio_sémantique · défaut 0 | (voir source) |
| ELEC-024 | Provision interphone | fixed_price | 1 | — | 1 si project_type = apartment |
| ELEC-025 | Alimentation volet | = MEN-025 | windows_count | — | = quantité de MEN-025 (volets motorisés, triggered_by MEN-025) |
| ELEC-026 | Alimentation cave à vin | fixed_price | 0 | ratio_sémantique · défaut 0 | (voir source) |
| ELEC-027 | Alimentation PAC / clim | fixed_price | 1 | — | 1 par attente clim · triggered_by CVC-008 |
Plomberie
Réseaux, sanitaires, robinetterie
MÉTIERbs_plumbing_linear NOUVEAU (source métier)
Mètres linéaires de réseau par pièce humide où room_to_renovate=1, pondérés par la taille du projet (coef_taille_plomberie).
MÉTIERbs_water_points NOUVEAU (source métier)
Nombre de points d'eau (équipements sanitaires posés, via triggered_prestations.codes) — pour compter les robinets.
MÉTIERcoef_taille_plomberie NOUVEAU (coef)
≤50→1,0 · 50-80→1,2 · 80-120→1,4 · >120→1,6.
LOGIQUEml_base par type de pièce
Alim EF+EC : SDB 8 / salle d'eau 6 / cuisine 5 ml. Évacuation : SDB 5 / salle d'eau 4 / cuisine 3 ml.
LOGIQUEPrestations « non spécifiées V1 »
PLO-003/012/014/015 → ratio_sémantique défaut 0 : n'apparaissent que si la description les évoque.
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| PLO-001 | Création alimentation EF/EC | bs_plumbing_linear | perimeter_m de la pièce | — | Σ pièces humides rénovées : ml_base[type] × coef_taille_plomberie |
| PLO-002 | Création évacuation PVC | bs_plumbing_linear | perimeter_m | — | Σ pièces humides rénovées : ml_base_évac[type] × coef_taille_plomberie |
| PLO-003 | Déplacement arrivée/évacuation existante | manual | 1 | — | À confirmer (non spécifié V1) |
| PLO-004 | Pose WC suspendu | rooms_count | 1 | — | Nb de WC rénovés · exclusif avec PLO-005 |
| PLO-005 | Pose WC à poser | rooms_count | 1 | — | Nb de WC rénovés · exclusif avec PLO-004 |
| PLO-011 | Ballon eau chaude | fixed_price | 1 | — | 1 · lié type_eau_chaude=ballon_electrique |
| PLO-012 | Raccordement électroménager | manual | 1 | — | À confirmer (non spécifié V1) |
| PLO-013 | Robinets / vannes d'arrêt | bs_water_points | 2 | × 2 | 2 × bs_water_points (un point d'eau = 2 arrivées EF/EC) |
| PLO-014 | Déplacement WC sur colonne existante | manual | 1 | — | À confirmer (non spécifié V1) |
| PLO-015 | Remplacement vanne générale logement | manual | 1 | — | À confirmer (non spécifié V1) |
| PLO-016 | Raccordement pompe de relevage | fixed_price | 1 | — | 1 (unité) |
CVC — Chauffage / Ventilation
Radiateurs, VMC, chaudière, clim
MÉTIERbs_radiator_count NOUVEAU (source métier)
1 radiateur par pièce à chauffer (room_to_renovate=1, hors cuisine/pièces humides). L'analyse has_radiator confirme, ne bloque jamais.
MÉTIERbs_vmc_count NOUVEAU (source métier)
1 VMC si surface_totale_m2 ≤ 80, 2 si > 80. Fallback 1.
CLIENTtype_chauffage = donnée maîtresse
Aiguille radiateur électrique (CVC-002) vs eau chaude (CVC-003) — jamais les deux. Donnée client fiable, l'analyse n'ajuste qu'à la marge.
LOGIQUEExclusivité VMC / extracteur
VMC posée → bouches (CVC-005) ; sinon → extracteur individuel (CVC-006).
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| CVC-002 | Pose radiateur électrique | bs_radiator_count | 1/pièce | — | Nb pièces room_to_renovate=1 (hors cuisine/humides) si type_chauffage=electrique |
| CVC-003 | Pose radiateur eau chaude | bs_radiator_count | 1/pièce | — | idem si type_chauffage ∈ {gaz, collectif, individuel} |
| CVC-004 | Déplacement radiateur eau chaude | manual | 1 | — | À confirmer (non spécifié V1) |
| CVC-005 | Création bouche VMC | rooms_count | 1 | — | Nb de pièces humides rénovées |
| CVC-006 | Pose extracteur pièce humide | rooms_count | 1 | — | Nb de pièces humides rénovées sans VMC |
| CVC-007 | Pose VMC | bs_vmc_count | 1 | — | 1 par défaut ; 2 si nombre_etages > 1 (logement sur plusieurs niveaux) |
| CVC-008 | Attente climatisation | manual | 1 | — | À confirmer (non spécifié V1) |
| CVC-009 | Pose chaudière gaz condensation | fixed_price | 1 | — | 1 si type_chauffage=gaz (lié type_eau_chaude=chaudiere) |
| CVC-010 | Pose robinet thermostatique | bs_radiator_count | 1 | — | 1 par radiateur eau chaude (triggered_by CVC-003) si type_chauffage ∈ {gaz, collectif, individuel} |
Sols
Préparation, revêtements, plinthes
MOTEURAucune source métier
Le lot le plus propre : la surface au sol (floor_area_m2 / room.surface) est la donnée la plus fiable. Uniquement des sources moteur existantes.
LOGIQUEExclusivité : un seul sol par pièce
SOL-004 à 009/015 sont exclusifs dans une même pièce. Le calcul (room.surface) est identique ; c'est l'apparition qui tranche. La quantité ne dédoublonne pas.
LOGIQUELa préparation suit la pose
Primaire/ragréage/chape (SOL-001/002/003/013) se calculent une seule fois par pièce où un sol neuf est posé.
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| SOL-001 | Primaire d'accrochage | floor_area_m2 | room.surface | — | Σ surface des pièces où une pose de sol neuf est déclenchée |
| SOL-002 | Ragréage autolissant | floor_area_m2 | room.surface | — | idem |
| SOL-003 | Ragréage fibré | floor_area_m2 | room.surface | — | idem |
| SOL-004 | Sol PVC / stratifié (gamme éco) | floor_area_m2 | room.surface | — | Σ surface des pièces room_to_renovate=1 où le sol est refait |
| SOL-005 | Parquet contrecollé flottant (std) | floor_area_m2 | room.surface | — | idem |
| SOL-006 | Parquet contrecollé collé | floor_area_m2 | room.surface | — | idem |
| SOL-007 | Parquet massif (premium) | floor_area_m2 | room.surface | — | idem |
| SOL-008 | Carrelage sol | floor_area_m2 | room.surface | — | Σ surface des pièces room_to_renovate=1 (pièces humides / cuisine) |
| SOL-009 | Carrelage petit format / mosaïque | floor_area_m2 | room.surface | ratio_sémantique · défaut 0 | (voir source) |
| SOL-010A | Plinthes bois | linear_meters_total | perimeter_m | — | Σ périmètre des pièces où sol bois posé |
| SOL-010B | Plinthes carrelage | linear_meters_total | perimeter_m | — | Σ périmètre des pièces où carrelage posé |
| SOL-011 | Barre de seuil / profilé | doors_count | 1/pièce | — | Nb de passages entre pièces rénovées (≈ portes) |
| SOL-012 | Ponçage / vitrification parquet | floor_area_m2 | room.surface | — | Σ surface des pièces existing_floor_finish=parquet conservé |
| SOL-013 | Chape | floor_area_m2 | room.surface | — | Σ surface des pièces où pose de sol neuf ET niveau_renovation=complete |
| SOL-014 | Dalle OSB (support) | floor_area_m2 | room.surface | ratio_sémantique · défaut 0 | (voir source) |
| SOL-015 | Jonc de mer / moquette | floor_area_m2 | room.surface | — | Σ surface des pièces concernées |
| SOL-016 | Étanchéité sous carrelage (SEL) | floor_area_m2 | room.surface | — | Σ surface des pièces humides où carrelage sol posé (triggered_by SOL-008) |
Peinture / Murs / Plafonds
Finitions et préparations
MOTEURAucune source métier
Tout tient sur wall_area_m2, ceiling_area_m2, doors_count et ratio_sémantique.
LOGIQUEPréparation en cascade
Une finition (PEI-006) entraîne à la pièce l'impression (PEI-005) et la préparation adaptée, toutes sur la même surface. L'analyse choisit le niveau de ratissage, sans jamais bloquer.
LOGIQUEDéfaut = préparation légère
Si wall_condition absent/inconnu, on retombe sur PEI-001 (léger) plutôt que 0, sans surfacturer un ratissage complet.
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| PEI-001 | Préparation légère des murs | wall_area_m2 | perimeter_m × 2,5 | — | Σ murs des pièces room_to_renovate=1 où peinture murs déclenchée |
| PEI-003 | Ratissage partiel | wall_area_m2 | perimeter_m × 2,5 | — | idem · affiné par wall_condition=a_preparer (ne bloque pas) |
| PEI-004 | Ratissage complet | wall_area_m2 | perimeter_m × 2,5 | — | idem · affiné par wall_condition=degrade |
| PEI-005 | Impression murs | wall_area_m2 | perimeter_m × 2,5 | — | Σ murs des pièces où peinture murs déclenchée (systématique) |
| PEI-006 | Enduit & peinture murs | wall_area_m2 | perimeter_m × 2,5 | — | Σ murs des pièces room_to_renovate=1 (base du lot) |
| PEI-007 | Impression plafonds | ceiling_area_m2 | room.surface | — | Σ plafonds des pièces où peinture plafond déclenchée |
| PEI-008 | Peinture plafonds | ceiling_area_m2 | room.surface | — | Σ plafonds des pièces room_to_renovate=1 · affiné needs_ceiling_paint |
| PEI-009 | Peinture porte | doors_count | 1/pièce | — | Σ portes des pièces room_to_renovate=1 |
| PEI-010 | Pose papier peint | wall_area_m2 | perimeter_m × 2,5 | ratio_sémantique · défaut 0 | (voir source) |
| PEI-011 | Enduit décoratif / peinture premium | wall_area_m2 | perimeter_m × 2,5 | ratio_sémantique · défaut 0 | (voir source) |
| PEI-012 | Peinture prépa + finition BA13 neuf | wall_area_m2 | perimeter_m × 2,5 | — | = Σ des quantités de PLA-001 + PLA-004 + PLA-006 déclenchées (surfaces BA13 neuves) |
| PEI-013 | Dépose/repose radiateur pour peinture | rooms_count | 1 | — | Nb de pièces peintes où type_chauffage ∈ {gaz, collectif, individuel} · triggered_by PEI-006 |
| PEI-014 | Plus-value polychromie | rooms_count | 0 | ratio_sémantique · défaut 0 | (voir source) |
| PEI-015 | Entoilage fibre de verre | wall_area_m2 | perimeter_m × 2,5 | ratio_sémantique · défaut 0 | (voir source) |
| PEI-016 | Entoilage de support | wall_area_m2 | perimeter_m × 2,5 | ratio_sémantique · défaut 0 | (voir source) |
Salle de bain
Étanchéité, faïence, sanitaires
LOGIQUERéutilisation bs_water_points
Aucune source métier nouvelle — les mitigeurs réutilisent bs_water_points (créée en plomberie).
LOGIQUEExclusivité douche / baignoire
Receveur (SDB-007) et baignoire (SDB-013) ne sortent jamais ensemble. Défaut : salle_d_eau → douche ; salle_de_bain → baignoire. Paroi/colonne suivent la douche.
LOGIQUEFusion baignoire
SDB-013 et SDB-014 (avec/sans tablier) fusionnés en une ligne : le tablier est une option de prix.
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| SDB-004 | Étanchéité sous carrelage (SEL/SPEC) | floor_area_m2 | room.surface | — | Σ surface des pièces humides rénovées où carrelage sol posé |
| SDB-005 | Carrelage mural | wall_area_m2 | perimeter_m × 2,5 | ratio_sémantique (si demi-hauteur) | Σ murs des pièces humides room_to_renovate=1 |
| SDB-006 | Faïence petit format / calepinage | wall_area_m2 | perimeter_m × 2,5 | ratio_sémantique · défaut 0 | (voir source) |
| SDB-007 | Receveur de douche | rooms_count | 1 | — | Nb de pièces humides avec douche · exclusif baignoire |
| SDB-008 | Paroi / porte de douche | rooms_count | 1 | — | 1 par douche posée (triggered_by SDB-007) |
| SDB-009 | Meuble vasque | rooms_count | 1 | — | 1 meuble par SDB / salle d'eau (room_to_renovate=1). Double vasque = variante de prix, pas de quantité |
| SDB-010 | Colonne de douche | rooms_count | 1 | — | 1 par douche posée (triggered_by SDB-007) |
| SDB-011 | Mitigeur lavabo | bs_water_points | 1 | — | 1 par vasque posée (2 si double vasque) |
| SDB-013 | Baignoire (fusion avec/sans tablier) | rooms_count | 1 | — | Nb de SDB avec baignoire · exclusif douche |
| SDB-015 | Meuble colonne SDB | rooms_count | 0 | ratio_sémantique · défaut 0 | (voir source) |
| SDB-016 | Pose miroir SDB | rooms_count | 1 | — | 1 par SDB/salle d'eau rénovée |
Cuisine
Meubles, plan de travail, crédence
MÉTIERbs_kitchen_linear NOUVEAU (source métier)
Linéaire de cuisine = (length_m + width_m) × ratio_sémantique — déduit des DIMENSIONS RÉELLES de la pièce cuisine dans le plan (implantation en L).
MOTEURFallback en cascade
Si length_m/width_m absents : 2×racine(room.surface), sinon perimeter_m×0,5, sinon 3 ml. Jamais 0.
LOGIQUEExclusivités
Plan de travail stratifié (CUI-006) vs pierre (CUI-007) ; crédence (CUI-008) vs premium (CUI-009). Un seul par cuisine, tranché à l'apparition.
Fiches de calcul des quantités
| Code | Prestation | quantity_source | Fallback | Multiplicateur | Règle de calcul (quantité) |
|---|---|---|---|---|---|
| CUI-001 | Fourniture meubles cuisine | bs_kitchen_linear | borné [2 ; 8] ml ; sinon 2×racine(room.surface) | ratio_sémantique · défaut 1 | (length_m + width_m) de la cuisine rénovée |
| CUI-003 | Pose meubles cuisine | bs_kitchen_linear | borné [2 ; 8] ml | — | = même linéaire (triggered_by CUI-001) |
| CUI-004 | Pose cuisine premium / ajustements | bs_kitchen_linear | 0 | ratio_sémantique · défaut 0 | (voir source) |
| CUI-006 | Plan de travail stratifié | bs_kitchen_linear | idem | — | = linéaire cuisine · exclusif CUI-007 |
| CUI-007 | Plan de travail pierre / quartz | bs_kitchen_linear | idem | — | = linéaire cuisine · exclusif CUI-006 |
| CUI-008 | Crédence cuisine | bs_kitchen_linear | idem | — | = linéaire cuisine · exclusif CUI-009 |
| CUI-009 | Crédence premium | bs_kitchen_linear | 0 | ratio_sémantique · défaut 0 | (voir source) |
| CUI-010 | Pose évier | rooms_count | 1 | — | 1 par cuisine rénovée |
| CUI-011 | Pose électroménager | manual | 1 | — | À confirmer (V1 ; bs_appliance_count envisageable plus tard) |