Spécification chiffrage par lot/Intégration référentiel de prix ►
Doc

Introduction & modèle de données

Préambule de la spécification : modèle de données, règle fondamentale de décomposition d'une ligne de devis, et base MVP. Contenu repris tel quel.

ChampRôle
Codeidentifiant unique de prestation
Prestationlibellé métier
Unitém², ml, u, point, forfait
Règle de métrédonnée à calculer depuis plan / JSON / saisie
GammeÉco / Standard / Premium
TypeMain-d’œuvre, fourniture, fourni-posé, forfait, aléa

Pour chaque prestation, je recommande ce modèle de données :

Champ techniqueExemple
codeSOL-005
lotSols
label_frPose parquet contrecollé flottant
unit
quantity_sourcesurface_sol_piece
pricing_typepose
eligible_rangeseco, standard, premium
default_rangestandard
requires_producttrue
linked_product_categoryparquet
waste_rate_default7 %
complexity_factor_availabletrue
regional_factor_availabletrue
company_custom_price_allowedtrue
client_visibletrue
internal_notehors dépose et ragréage

Règle fondamentale à intégrer

Une ligne de devis doit toujours distinguer :

ÉlémentExemple
Déposedépose ancien parquet
Préparation supportragréage
Fourniture produitparquet choisi
Posepose parquet
Finitionsplinthes, seuils
Aléaétage, accès, ancien

Base de prestations MVP

0. Préparation / installation chantier

CodePrestationUnitéRègle de métréGammeType
PRE-001Installation de chantierforfait1 par projetTousForfait
PRE-002Protection des sols existantssurface sols à conserverTousFourni-posé
PRE-003Protection des parties communesforfaitselon étage + accès + duréeTousForfait
PRE-004Protection ascenseur / escalierforfaitsi copropriété / accès communTousForfait
PRE-005Acheminement matériauxforfaitselon étage, ascenseur, distance camionTousAléa
PRE-006Évacuation gravatsvolume gravats estiméTousForfait
PRE-007Nettoyage courant chantierforfaitselon durée chantierTousForfait
PRE-008Nettoyage fin de chantiersurface totale rénovéeTousForfait

1. Démolition / dépose

CodePrestationUnitéRègle de métréGammeType
DEM-001Dépose revêtement sol souplesurface sol concernéeTousMain-d’œuvre
DEM-002Dépose parquet existantsurface parquet à déposerTousMain-d’œuvre
DEM-003Dépose carrelage solsurface carrelage solTousMain-d’œuvre
DEM-004Dépose faïence muralesurface faïence existanteTousMain-d’œuvre
DEM-005Démolition cloison légèresurface cloison à démolirTousMain-d’œuvre
DEM-006Dépose faux plafondsurface faux plafondTousMain-d’œuvre
DEM-007Dépose cuisine existanteforfait1 par cuisineTousForfait
DEM-008Dépose salle de bain existanteforfait1 par salle de bainTousForfait
DEM-009Dépose appareil sanitaireunombre WC / vasque / douche / baignoireTousMain-d’œuvre
DEM-010Dépose radiateurunombre de radiateursTousMain-d’œuvre
DEM-011Dépose porte intérieureunombre portesTousMain-d’œuvre

RÈGLES MÉTIER :

Pour le lot 1 — Démolition / dépose, il y a une limite importante : le plan seul ne permet pas de savoir ce que le client veut déposer. Il permet de connaître les surfaces, pièces, murs, portes, sanitaires visibles, mais pas l’intention travaux.

Pour garder la promesse de rapidité, je recommande de ne pas demander beaucoup plus au client, mais d’ajouter une donnée simple dans l’écran de création du projet ainsi que dans l’écran après l’analyse :

Donnée minimale utileFormat conseilléPourquoi
Niveau d’interventionRafraîchissement / Rénovation complète / Rénovation lourdedéclenche les règles de dépose par défaut
Pièces concernéespar défaut : toutes les pièces détectéespermet d’exclure une pièce sans questionnaire long
Conservation éléments existantstoggles optionnels : cuisine, SDB, sols, portes, chauffageévite les grosses erreurs de chiffrage
Photos par pièceoptionnel mais fortement recommandépermet de reconnaître sols, faïence, cuisine, état existant

La donnée vraiment indispensable est donc : niveau d’intervention global. Le reste peut être prérempli par défaut et corrigé en écran 2.

Voici la première version exploitable à envoyer à l’équipe de développement.

Lot 0

Préparation / Installation chantier

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
PRE-001Installation de chantierforfait10%Règle définie
PRE-002Protection sols existants10%Règle définie + choix client
PRE-003Protection parties communesforfait10%Règle définie
PRE-004Protection accès verticalforfait10%Règle définie
PRE-005Acheminement matériauxforfait10%Règle définie
PRE-006Évacuation gravats10%Règle définie
PRE-007Nettoyage courant chantiersemaine10%Règle définie
PRE-008Nettoyage fin chantier10%Règle définie
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

2.1 Données issues du JSON validé

Le moteur utilise :

{
"rooms": [],
"area_m2": null,
"room_count": null,
"layout_fidelity": {},
"warnings": []
}

Variables calculées depuis le JSON :

{
"detected_total_area_m2": null,
"renovated_area_m2": null,
"room_count": null,
"wet_room_count": null,
"kitchen_count": null
}

2.2 Données issues de l’écran 0

Le moteur utilise les champs existants :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"floor_count": null,
"hot_water_type": null,
"heating_type": null,
"project_description": null,
"quality_level": null
}

2.3 Seule donnée supplémentaire ajoutée

Ajouter uniquement :

{
"property_floor_level": null
}

Format recommandé :

{
"property_floor_level": "ground | 1 | 2 | 3 | 4 | 5_plus"
}
Définition
ValeurSignification
groundrez-de-chaussée
11er étage
22e étage
33e étage
44e étage
5_plus5e étage ou plus

Si le type de projet est une maison :

property_floor_level = "ground"

par défaut, sauf si le projet concerne explicitement un étage intérieur.

3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Variables globales de chiffrage

Avant de générer le lot 0, le moteur doit calculer :

{
"project_surface_m2": null,
"renovated_area_m2": null,
"estimated_duration_weeks": null,
"demolition_waste_m3": null,
"floor_logistics_level": null,
"common_area_protection_required": null,
"vertical_access_protection_required": null,
"cleaning_level": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

PRE-001 Installation de chantier
Définition

Mise en place initiale du chantier : organisation, matériel de base, zones de stockage, préparation générale du chantier.

Unité

forfait

Déclencheur

Toujours créer cette ligne si au moins une prestation travaux est générée.

if quote_lines_count > 0:

create PRE-001

Règle de quantité
quantity = 1

Classification du forfait

Le moteur classe le projet selon la surface rénovée :

ClasseRègle
petit chantierrenovated_area_m2 < 30
chantier moyen30 <= renovated_area_m2 <= 80
grand chantierrenovated_area_m2 > 80

Ajustements autorisés

PRE-001 peut être ajusté uniquement selon :

{
"renovated_area_m2": true,
"quality_level": true,
"floor_logistics_level": false
}

L’étage ne doit pas impacter PRE-001, car l’installation de chantier est liée à la taille et à l’organisation du projet, pas directement à l’accès.

Inclus

PRE-001 inclut :

  • mise en route chantier ;
  • organisation de base ;
  • petit matériel chantier ;
  • consommables généraux non affectés à un lot ;
  • repérage des zones de stockage.

Exclus

PRE-001 n’inclut pas :

  • protection sols ;
  • protection parties communes ;
  • évacuation gravats ;
  • nettoyage ;
  • autorisations administratives ;
  • benne ;
  • monte-meuble.
PRE-002 Protection des sols existants
Définition

Protection des sols conservés dans le logement pendant les travaux.

Unité

Déclencheurs

Créer la ligne si au moins un des cas est vrai :

keep_existing_floor == true

ou si certaines pièces sont exclues des travaux mais servent de passage.

Si aucune information n’indique que les sols sont conservés :

ne pas créer automatiquement PRE-002 sur toute la surface

Créer uniquement une protection minimale de circulation.

Règle de quantité

Cas 1 — pièces avec sols conservés :

quantity = sum(area_m2 des pièces avec sol conservé)

Cas 2 — absence d’information :

quantity = renovated_area_m2 × default_internal_floor_protection_ratio

Ratio paramétrable recommandé :

"default_internal_floor_protection_ratio": 0.20

Ajustements autorisés

PRE-002 peut être ajusté selon :

{
"renovated_area_m2": true,
"quality_level": true,
"floor_logistics_level": false
}

L’étage ne doit pas influencer PRE-002.

Exclusions

Ne comprend pas :

  • protection parties communes ;
  • protection accès vertical ;
  • nettoyage final ;
  • réparation de sols existants.
PRE-003 Protection des parties communes
Définition

Protection des zones communes entre l’entrée de l’immeuble et l’entrée du logement : hall, sas, paliers, circulations communes.

Unité

forfait

Déclencheurs

Créer la ligne si :

project_type == "apartment"

Ne pas créer par défaut pour :

project_type == "house"

sauf si la description projet mentionne explicitement des parties communes.

Règle de quantité
quantity = 1

Classification du forfait

floor_logistics_levelClasse de protection
lowfaible
standardstandard
highrenforcée
very_hightrès renforcée

Ajustements autorisés

PRE-003 peut être ajusté selon :

{
"project_type": true,
"property_floor_level": true,
"floor_logistics_level": true,
"quality_level": true
}
Inclus
  • protection hall ;
  • protection palier ;
  • protection circulations communes ;
  • protection d’accès standard jusqu’au logement.

Exclus

  • nettoyage quotidien des parties communes ;
  • réparation de dégradations ;
  • remplacement de protections demandé en cours de chantier ;
  • protection spécifique ascenseur ou escalier détaillée.

Dans cette version MVP, la protection spécifique ascenseur/escalier n’est pas distinguée. Elle est traitée dans PRE-004 comme protection accès vertical générique.

PRE-004 Protection accès vertical
Définition

Protection générique des circulations verticales utilisées pour accéder au logement.

Le moteur ne distingue pas ascenseur et escalier, car l’ascenseur n’est pas une donnée d’entrée.

Unité

forfait

Déclencheurs

Créer si :

project_type == "apartment"

et :

property_floor_level != "ground"

Ne pas créer si :

property_floor_level == "ground"
Règle de quantité
quantity = 1

Classification du forfait

property_floor_levelClasse
1standard
2standard
3renforcée
4renforcée
5_plustrès renforcée

Ajustements autorisés

PRE-004 peut être ajusté selon :

{
"property_floor_level": true,
"quality_level": true
}

PRE-004 ne doit pas utiliser :

{
"elevator_available": false,
"truck_access": false,
"is_occupied": false
}
Inclus
  • protection générique des accès verticaux ;
  • protections nécessaires à l’acheminement courant ;
  • mise en place et retrait des protections.

Exclus

  • réparation de l’ascenseur ;
  • protection spécifique demandée par syndic ;
  • monte-charge ;
  • monte-meuble ;
  • nettoyage quotidien ;
  • manutention matériaux.
PRE-005 Acheminement matériaux
Définition

Acheminement des matériaux depuis le point de livraison jusqu’à la zone de chantier.

Le moteur ne doit pas demander ni utiliser d’information sur le stationnement, camion, ascenseur ou distance de portage.

Unité

forfait

Déclencheurs

Créer si le devis contient au moins une ligne de fourniture ou de pose nécessitant des matériaux.

if material_supply_or_installation_lines_count > 0:

create PRE-005

Règle de quantité
quantity = 1

Classification du forfait

Le forfait est classé selon :

  • surface rénovée ;
  • étage du logement ;
  • volume théorique de matériaux issu des autres lots.
{
"renovated_area_m2": true,
"floor_logistics_level": true,
"material_volume_proxy": true
}

Calcul du volume théorique

Chaque ligne avec fourniture doit porter un facteur volume :

{
"material_volume_factor": null
}

La variable globale est :

material_volume_proxy = sum(quote_line.quantity × quote_line.material_volume_factor)

Si les facteurs volume ne sont pas disponibles :

material_volume_proxy = renovated_area_m2 × default_material_volume_ratio

default_material_volume_ratio doit être paramétrable en base.

Classification simplifiée

ConditionClasse
petite surface + étage basfaible
surface moyenne ou étage standardstandard
grande surface ou étage élevéélevée
très grande surface ou 5e étage et plustrès élevée
Exclusions

Ne comprend pas :

  • évacuation gravats ;
  • livraison fournisseur ;
  • stockage externe ;
  • monte-meuble ;
  • autorisation stationnement ;
  • frais de voirie.
PRE-006 Évacuation gravats
Définition

Sortie, chargement, transport et mise en décharge des gravats issus des travaux.

Le moteur ne doit pas demander ni utiliser d’information sur camion, stationnement ou benne.

Unité

Déclencheurs

Créer si au moins une ligne de démolition ou dépose est générée.

if demolition_lines_count > 0:

create PRE-006

Règle de quantité principale

Chaque prestation de démolition doit porter un facteur de gravats :

{
"waste_m3_per_unit": null
}

La quantité totale est :

quantity = sum(demolition_line.quantity × demolition_line.waste_m3_per_unit)
Fallback si volume gravats indisponible

Si les facteurs de gravats ne sont pas disponibles :

quantity = renovated_area_m2 × default_waste_ratio

default_waste_ratio doit être paramétrable selon la densité de travaux générés.

La densité de travaux peut être déduite des lignes existantes :

CasDensité
peu de lignes de déposefaible
dépose sols + SDB/cuisinemoyenne
démolition cloisons + sols + SDB/cuisineforte

Ajustements autorisés

PRE-006 peut être ajusté selon :

{
"demolition_waste_m3": true,
"floor_logistics_level": true,
"quality_level": false
}

Le niveau de qualité ne doit pas influencer l’évacuation gravats.

Exclusions

Ne comprend pas :

  • désamiantage ;
  • déchets dangereux ;
  • évacuation mobilier client ;
  • location benne longue durée ;
  • autorisation voirie ;
  • nettoyage final.

Règle anti-double comptage

Si une ligne de démolition inclut déjà l’évacuation :

demolition_line.includes_waste_removal == true

alors ne pas l’ajouter à PRE-006.

Par défaut, les lignes du lot démolition n’incluent pas l’évacuation gravats.

PRE-007 Nettoyage courant chantier
Définition

Nettoyage régulier pendant le chantier : balayage, maintien de propreté minimale, entretien courant des zones de travail.

Unité

semaine

ou :

forfait

Déclencheurs

Créer si :

estimated_duration_weeks >= 2

ou si le projet contient :

  • démolition ;
  • dépose sols ;
  • dépose SDB ;
  • dépose cuisine ;
  • peinture ;
  • sols ;
  • plâtrerie.
Règle de quantité
quantity = estimated_duration_weeks

Calcul durée

La durée estimée doit venir du moteur planning ou d’un moteur de complexité.

Si la durée n’est pas disponible :

estimated_duration_weeks = duration_from_quote_lines_density

Densité :

Densité du devisDurée théorique
faiblecourte
moyennemoyenne
fortelongue

Les valeurs doivent être paramétrables en base.

Ajustements autorisés

PRE-007 peut être ajusté selon :

{
"estimated_duration_weeks": true,
"renovated_area_m2": true,
"quality_level": true,
"floor_logistics_level": false
}

L’étage ne doit pas influencer le nettoyage courant.

Exclusions

Ne comprend pas :

  • nettoyage final ;
  • nettoyage spécialisé ;
  • remise en état après sinistre ;
  • nettoyage extérieur ;
  • réparation de dégradations.
PRE-008 Nettoyage fin de chantier
Définition

Nettoyage final avant livraison du chantier.

Unité

Déclencheurs

Toujours créer cette ligne si le chantier contient des travaux intérieurs.

if interior_work_lines_count > 0:

create PRE-008

Règle de quantité
quantity = renovated_area_m2

Si le logement entier est concerné :

quantity = project_surface_m2

Niveau de nettoyage

quality_levelcleaning_level
ecostandard
standardstandard
premiumpremium

Ajustements autorisés

PRE-008 peut être ajusté selon :

{
"renovated_area_m2": true,
"quality_level": true,
"floor_logistics_level": false
}

L’étage ne doit pas influencer le nettoyage final.

Inclus
  • aspiration / balayage ;
  • nettoyage surfaces principales ;
  • retrait protections simples ;
  • nettoyage basique avant livraison ;
  • préparation livraison.

Exclus

  • nettoyage vitres complexe ;
  • shampouinage textile ;
  • nettoyage extérieur ;
  • débarras mobilier ;
  • nettoyage spécialisé.
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version simplifiée avec une seule donnée ajoutée : étage du logement

Pour le lot 0 — Préparation / installation chantier, il faut ajouter une donnée d’entrée, car ce lot dépend beaucoup plus de la logistique réelle du chantier que du plan.

Les données actuelles de l’écran 0 ne suffisent pas totalement. Pour garder l’outil rapide, je recommande d’ajouter uniquement un champ simple :

Donnée à ajouterFormatImpact
Étage du logementRDC / 1 / 2 / 3 / 4+manutention, parties communes, temps

Objectif du lot

Le lot 0 couvre les prestations transversales nécessaires au démarrage, à la protection, à la logistique et à la propreté du chantier.

Ce lot comprend :

  • installation de chantier ;
  • protections intérieures ;
  • protections des parties communes ;
  • protection accès vertical ;
  • acheminement matériaux ;
  • évacuation gravats ;
  • nettoyage courant ;
  • nettoyage final.

Ce lot ne correspond pas directement à une pièce, mais au projet entier.

Le lot 0 doit être calculé à partir :

  • de la surface du projet ;
  • des pièces validées ;
  • des prestations générées dans les autres lots ;
  • du niveau de qualité choisi ;
  • du type de projet ;
  • de l’étage du logement.

Aucune autre donnée d’accès ne doit influencer les règles de chiffrage.

Données explicitement exclues des règles

Les données suivantes ne doivent pas être demandées et ne doivent pas influencer le chiffrage automatique du lot 0 :

{
"elevator_available": "excluded",
"is_occupied": "excluded",
"truck_access": "excluded",
"parking_access": "excluded"
}

Le moteur ne doit donc pas créer de règles conditionnées à :

  • présence ou absence d’ascenseur ;
  • logement vide ou occupé ;
  • stationnement facile ou difficile ;
  • distance camion-logement ;
  • rue étroite ou large.

Ces contraintes pourront éventuellement être traitées plus tard comme options manuelles, mais elles ne font pas partie du moteur MVP.

Règles de surface

5.1 Surface projet

Priorité 1 :

project_surface_m2 = declared_total_surface_m2

Priorité 2 :

project_surface_m2 = sum(rooms.area_m2)

Si les deux valeurs existent, contrôler l’écart :

surface_gap_percent = abs(declared_total_surface_m2 - detected_total_area_m2) / declared_total_surface_m2

Si l’écart dépasse un seuil paramétrable :

{
"warning": "Écart entre surface déclarée et surface détectée",
"user_validation_required": true
}

Seuil recommandé :

"surface_gap_warning_threshold": 0.10

5.2 Surface rénovée

Si toutes les pièces sont concernées :

renovated_area_m2 = project_surface_m2

Si l’utilisateur exclut certaines pièces en écran 2 :

renovated_area_m2 = sum(area_m2 des pièces sélectionnées)

Si aucune sélection n’est faite :

renovated_area_m2 = project_surface_m2

Niveau logistique lié à l’étage

Le moteur calcule un niveau logistique standardisé uniquement à partir de l’étage du logement.

"floor_logistics_level": "low | standard | high | very_high"
Règle de calcul
property_floor_levelfloor_logistics_level
groundlow
1standard
2standard
3high
4high
5_plusvery_high

Cette variable peut influencer :

  • protection des parties communes ;
  • protection accès vertical ;
  • acheminement matériaux ;
  • évacuation gravats.

Elle ne doit pas dépendre d’un ascenseur, d’un stationnement ou d’un accès camion.

Lignes volontairement exclues du MVP

Les lignes suivantes ne doivent pas être générées automatiquement dans cette version, car elles nécessiteraient des données supplémentaires que le produit ne souhaite pas demander au client.

Exclu — Autorisation stationnement / voirie

Non généré automatiquement.

Raison :

Nécessite information stationnement ou réglementation locale non demandée.

Exclu — Monte-meuble / monte-charge

Non généré automatiquement.

Raison :

Nécessite information ascenseur, façade, rue et accès non demandée.

Exclu — Déchets spécifiques / dangereux

Non généré automatiquement.

Raison :

Nécessite diagnostic spécifique ou preuve documentaire.

Ces lignes pourront être ajoutées plus tard comme options manuelles ou alertes, mais elles ne doivent pas influencer le moteur automatique MVP.

Règles anti-double comptage

9.1 Gravats

PRE-006 centralise l’évacuation gravats.

Les prestations de démolition ne doivent pas inclure l’évacuation sauf si explicitement paramétré.

9.2 Nettoyage

PRE-007 = nettoyage courant pendant chantier.

PRE-008 = nettoyage final avant livraison.

Ne pas fusionner les deux.

9.3 Protection

PRE-002 = sols intérieurs du logement.

PRE-003 = parties communes horizontales.

PRE-004 = accès vertical générique.

Ne pas intégrer les parties communes dans PRE-002.

9.4 Manutention

PRE-005 = matériaux entrants.

PRE-006 = gravats sortants.

Ne pas mélanger les deux.

Effet du niveau Éco / Standard / Premium

Le niveau Éco / Standard / Premium ne modifie pas les quantités du lot 0.

Il peut modifier uniquement certains niveaux de service :

PrestationImpact qualité
PRE-001possible ajustement organisation
PRE-002protection plus ou moins renforcée
PRE-003protection parties communes plus ou moins renforcée
PRE-004protection accès vertical plus ou moins renforcée
PRE-005aucun impact direct
PRE-006aucun impact direct
PRE-007nettoyage courant plus ou moins fréquent
PRE-008niveau de nettoyage final

Règle générale :

quantity_eco = quantity_standard = quantity_premium

mais :

unit_price may vary by quality_level for selected PRE lines

Format de sortie attendu

Chaque ligne du lot 0 doit être générée sous cette forme :

{
"lot": "Préparation / Installation chantier",
"code": "PRE-006",
"label": "Évacuation gravats",
"unit": "m3",
"quantity": 3.5,
"quantity_formula": "sum(demolition_line.quantity × waste_m3_per_unit)",
"pricing_mode": "unit_price",
"source": "derived_from_demolition_lines",
"confidence": 0.82,
"is_assumption": false,
"assumption_reason": null,
"user_validation_required": false,
"included": [],
"excluded": [],
"dependencies": ["DEM-001", "DEM-003", "DEM-004"],
"warnings": []
}

Règles de validation

Avant génération du lot 0, le moteur doit vérifier :

{
"has_project_surface": true,
"has_renovated_area": true,
"has_project_type": true,
"has_property_floor_level": true
}

Si property_floor_level est absent :

Utiliser "ground" par défaut uniquement pour une maison.

Si project_type == apartment et property_floor_level est absent :

Demander la donnée étage du logement.

Si renovated_area_m2 == null :

Bloquer le lot 0.

Message :

Impossible de chiffrer le lot préparation sans surface rénovée validée.

Résumé des données nécessaires

Obligatoire

DonnéeSource
surface projetécran 0 ou JSON
surface rénovéeécran 2
type de projetécran 0
étage du logementécran 0
existence de travaux générésmoteur de devis

Calculé automatiquement

DonnéeSource
volume de gravatslignes de démolition
volume théorique de matériauxlignes de fourniture / pose
durée estiméedensité des lignes ou moteur planning
niveau logistiqueétage du logement
niveau nettoyagequalité choisie

Non demandé au client

DonnéeStatut
ascenseurexclu
logement occupéexclu
accès camionexclu
stationnementexclu
largeur escalierexclu
distance camion-logementexclu

Règle produit finale

Le lot 0 doit rester simple et compatible avec la promesse d’instantanéité.

Le moteur doit donc fonctionner avec une seule donnée logistique :

Étage du logement

Toutes les règles logistiques sont ensuite dérivées de cette donnée, sans autre question client.

Le moteur doit distinguer :

Logistique faible = RDC

Logistique standard = 1er ou 2e étage

Logistique élevée = 3e ou 4e étage

Logistique très élevée = 5e étage et plus

Aucune autre contrainte d’accès ne doit influencer automatiquement le lot 0 dans cette version.

Pour le lot 2 — Cloisons / doublages / faux plafonds, la donnée clé n’est pas un champ client supplémentaire, mais plutôt une donnée produit : le plan cible ou l’intention de modification.

Le plan existant seul permet de voir les murs actuels, mais il ne permet pas de savoir :

  • quelles cloisons créer ;
  • quelles cloisons supprimer ;
  • quels murs doubler ;
  • quels plafonds refaire ;
  • quels coffrages créer.

Donc je ne recommande pas d’ajouter un nouveau champ obligatoire côté client à ce stade. La bonne règle est :

Si aucun plan cible, aucune demande explicite ou aucune personnalisation n’indique une modification, le moteur ne doit pas inventer de cloisons, doublages ou faux plafonds.

Lot 1

Démolition / Dépose

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
DEM-001Dépose revêtement sol souple10%Règle définie + choix client
DEM-002Dépose parquet existant10%Règle définie + choix client
DEM-003Dépose carrelage sol10%Règle définie + choix client
DEM-004Dépose faïence murale10%Règle définie + choix client
DEM-005Démolition cloison légère10%Choix client
DEM-006Dépose faux plafond10%Choix client
DEM-007Dépose cuisine existanteforfait10%Règle définie + choix client
DEM-008Dépose salle de bain existanteforfait10%Règle définie + choix client
DEM-009Dépose appareil sanitaireu10%Règle définie + choix client
DEM-010Dépose radiateuru10%Règle définie + choix client
DEM-011Dépose porte intérieureu10%Règle définie + choix client
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

2.1 Données issues du JSON validé du plan

Le moteur utilise les données suivantes :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"length_m": null,
"width_m": null,
"ceiling_height_m": null,
"openings": [],
"visual_evidence": {
"sanitary_elements": [],
"kitchen_elements": [],
"fixed_features": []
},
"layout_fidelity": {},
"warnings": []
}

2.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"floor_count": null,
"hot_water_type": null,
"heating_type": null,
"project_description": null,
"quality_level": null
}

2.3 Données supplémentaires recommandées

Ajouter un champ simple :

{
"renovation_scope": "refresh | complete_renovation | heavy_renovation"
}
Définition
ValeurDéfinition
refreshtravaux légers, pas de démolition lourde par défaut
complete_renovationrénovation complète des pièces, dépose des sols, cuisine, SDB selon pièces
heavy_renovationrénovation lourde avec possibilité de redistribution, cloisons, faux plafonds

Par défaut, si la donnée est absente :

"renovation_scope": "complete_renovation"

mais le devis doit afficher une hypothèse :

Hypothèse : chiffrage basé sur une rénovation complète du bien.

3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Variables calculées

Le moteur doit calculer les variables suivantes avant de chiffrer :

{
"total_renovated_area_m2": null,
"room_floor_area_m2": null,
"room_wall_perimeter_m": null,
"room_wall_surface_m2": null,
"ceiling_surface_m2": null,
"bathroom_count": null,
"kitchen_count": null,
"sanitary_fixture_count": null,
"internal_door_count": null,
"radiator_count": null
}

4.1 Surface sol par pièce

room_floor_area_m2 = room.area_m2

Si room.area_m2 est null :

room_floor_area_m2 = room.length_m × room.width_m

uniquement si les deux dimensions sont fiables.

Sinon :

room_floor_area_m2 = null

et la ligne doit être bloquée ou marquée comme non chiffrable automatiquement.

4.2 Surface plafond

ceiling_surface_m2 = room_floor_area_m2

4.3 Périmètre de pièce

Si longueur et largeur fiables :

room_wall_perimeter_m = 2 × (length_m + width_m)

Si pièce irrégulière :

room_wall_perimeter_m = estimated_perimeter_from_layout

avec :

"is_assumption": true

4.4 Surface murale brute

room_wall_surface_m2 = room_wall_perimeter_m × ceiling_height_m

Si hauteur inconnue :

ceiling_height_m = project_default_ceiling_height_m

Valeur par défaut recommandée :

"project_default_ceiling_height_m": 2.50

Cette hypothèse doit être affichée à l’utilisateur.

4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

DEM-001 Dépose revêtement sol souple
Définition

Dépose de sol souple existant : PVC, lino, moquette, vinyle, sol stratifié clipsé assimilé léger.

Unité

Déclencheurs

Créer la ligne si :

existing_floor_finish == "soft_floor"

ou si une photo / analyse visuelle détecte :

  • moquette ;
  • lino ;
  • PVC ;
  • vinyle ;
  • sol souple.
Règle de quantité
quantity = sum(area_m2 des pièces concernées)
Fallback si revêtement inconnu

Ne pas utiliser DEM-001 si le type de sol est inconnu.

Utiliser une ligne générique :

DEM-000 Dépose revêtement de sol existant non identifié
Exclusions

Ne comprend pas :

  • ragréage ;
  • préparation du support ;
  • fourniture nouveau sol ;
  • pose nouveau sol ;
  • évacuation générale gravats.
Sortie attendue
{
"code": "DEM-001",
"label": "Dépose revêtement sol souple",
"unit": "m2",
"quantity": 0,
"source": "photo_or_user_input",
"confidence": 0.8,
"is_assumption": false
}
DEM-002 Dépose parquet existant
Définition

Dépose de parquet existant flottant, collé, cloué ou ancien parquet.

Unité

Déclencheurs

Créer la ligne si :

existing_floor_finish == "parquet"

ou si une photo détecte clairement du parquet.

En rénovation complète d’appartement ancien, si le sol est inconnu, ne pas supposer automatiquement du parquet. Utiliser DEM-000 avec hypothèse.

Règle de quantité
quantity = sum(area_m2 des pièces avec parquet à déposer)
Cas particulier

Si le parquet est conservé et rénové :

keep_existing_parquet = true

ne pas créer DEM-002.

Envoyer vers le lot sols :

Ponçage / vitrification parquet existant

Exclusions

Ne comprend pas :

  • évacuation gravats ;
  • dépose lambourdes ;
  • reprise support ;
  • ragréage ;
  • ponçage / vitrification.
DEM-003 Dépose carrelage sol
Définition

Dépose de carrelage au sol existant.

Unité

Déclencheurs

Créer la ligne si :

existing_floor_finish == "tile"

ou si la pièce est une salle de bain / WC / cuisine avec carrelage détecté par photo ou visuellement.

Si aucune photo n’est disponible :

  • en SDB/SDE/WC : carrelage sol probable ;
  • en cuisine : carrelage sol possible ;
  • dans les autres pièces : ne pas supposer.
Règle de quantité
quantity = sum(area_m2 des pièces avec carrelage sol à déposer)
Hypothèse automatique possible

Pour complete_renovation :

Si room.type in ["bathroom", "shower_room", "wc"] et sol inconnu :

quantity = room.area_m2
is_assumption = true
assumption_reason = "Carrelage sol probable en pièce humide"
Exclusions

Ne comprend pas :

  • ragréage ;
  • chape ;
  • reprise support ;
  • étanchéité ;
  • nouveau carrelage.
DEM-004 Dépose faïence murale
Définition

Dépose de faïence ou carrelage mural existant.

Unité

Déclencheurs

Créer la ligne si :

existing_wall_finish == "wall_tile"

ou si photo détecte de la faïence.

Créer aussi une hypothèse si :

room.type in ["bathroom", "shower_room", "wc"]

et :

renovation_scope in ["complete_renovation", "heavy_renovation"]

Règle de quantité prioritaire

Si surface de faïence détectée :

quantity = detected_wall_tile_area_m2

Sinon, pour SDB/SDE :

quantity = room_wall_perimeter_m × default_tile_height_m

Valeur paramétrable recommandée :

"default_tile_height_m": 2.00

Puis plafonner :

quantity <= room_wall_surface_m2

Pour cuisine :

quantity = kitchen_linear_m × default_credence_height_m

Valeur paramétrable recommandée :

"default_credence_height_m": 0.60

Si kitchen_linear_m est inconnu :

quantity = null

ou créer une hypothèse :

quantity = room.area_m2 × kitchen_wall_tile_ratio

avec ratio paramétrable.

Exclusions

Ne comprend pas :

  • reprise de mur ;
  • enduit ;
  • nouvelle faïence ;
  • étanchéité ;
  • évacuation gravats.
DEM-005 Démolition cloison légère
Définition

Démolition de cloison intérieure non porteuse.

Unité

Déclencheurs obligatoires

Créer la ligne uniquement si l’un des cas suivants est vrai :

target_layout.wall_to_remove == true

ou :

user_project_description contains ["abattre", "ouvrir", "supprimer cloison", "cuisine ouverte", "agrandir", "redistribuer"]

ou :

user_selected_wall_removal == true
Règle de quantité
quantity = wall_length_m × ceiling_height_m

Si plusieurs cloisons :

quantity = sum(wall_length_m × ceiling_height_m)
Condition technique

Si la cloison est potentiellement porteuse :

requires_structural_validation = true

et la ligne doit être affichée comme estimation non contractuelle.

Exclusions

Ne comprend pas :

  • démolition mur porteur ;
  • reprise structurelle ;
  • IPN ;
  • étude ingénieur structure ;
  • autorisation copropriété ;
  • reprise sols/plafonds/murs après démolition ;
  • déplacement réseaux électriques/plomberie inclus dans cloison.

Règle anti-double comptage

Si une porte est incluse dans la cloison démolie, ne pas générer DEM-011 pour cette même porte sauf si le moteur fonctionne en mode détaillé.

DEM-006 Dépose faux plafond
Définition

Dépose de faux plafond existant.

Unité

Déclencheurs

Créer la ligne si :

existing_false_ceiling_detected == true

ou si l’utilisateur indique :

remove_false_ceiling == true

Ne jamais supposer un faux plafond depuis un plan 2D seul.

Règle de quantité
quantity = ceiling_surface_m2 des pièces concernées
Exclusions

Ne comprend pas :

  • nouveau faux plafond ;
  • isolation ;
  • électricité intégrée ;
  • reprise plafond ;
  • peinture plafond.
DEM-007 Dépose cuisine existante
Définition

Dépose des meubles et équipements de cuisine existants.

Unité

forfait

ou option avancée :

ml

Déclencheurs

Créer la ligne si :

room.type == "kitchen"

et :

renovation_scope in ["complete_renovation", "heavy_renovation"]

sauf si :

keep_existing_kitchen == true

Créer aussi la ligne si visual_evidence.kitchen_elements contient :

  • évier ;
  • plaque ;
  • plan de travail ;
  • hotte ;
  • linéaire cuisine visible.
Règle de quantité MVP
quantity = 1 forfait par cuisine déposée

Classification taille cuisine

Si kitchen_linear_m disponible :

ClasseRègle
petitekitchen_linear_m < 3
moyenne3 <= kitchen_linear_m <= 6
grandekitchen_linear_m > 6

Si kitchen_linear_m indisponible :

ClasseRègle
petitekitchen.area_m2 < 8
moyenne8 <= kitchen.area_m2 <= 14
grandekitchen.area_m2 > 14
Exclusions

Ne comprend pas :

  • dépose carrelage sol ;
  • dépose crédence/faïence ;
  • modification plomberie ;
  • modification électricité ;
  • évacuation gravats ;
  • fourniture ou pose nouvelle cuisine.
DEM-008 Dépose salle de bain existante
Définition

Dépose des équipements existants d’une salle de bain ou salle d’eau.

Unité

forfait

Déclencheurs

Créer la ligne si :

room.type in ["bathroom", "shower_room", "sdb", "sde"]

et :

renovation_scope in ["complete_renovation", "heavy_renovation"]

sauf si :

keep_existing_bathroom == true
Règle de quantité
quantity = 1 forfait par salle de bain ou salle d’eau rénovée

Classification taille SDB

ClasseRègle
petitearea_m2 < 4
moyenne4 <= area_m2 <= 7
grandearea_m2 > 7

Ajustement par nombre d’équipements

Si sanitary_elements_count > 3, appliquer une majoration paramétrable.

Inclusion

DEM-008 inclut :

  • dépose meuble vasque ;
  • dépose lavabo ;
  • dépose paroi douche ;
  • dépose receveur ;
  • dépose baignoire ;
  • dépose WC présent dans la pièce ;
  • dépose accessoires standards.
Exclusions

Ne comprend pas :

  • dépose faïence murale ;
  • dépose carrelage sol ;
  • démolition cloison ;
  • modification réseaux ;
  • étanchéité ;
  • reprise supports ;
  • fourniture nouveaux équipements ;
  • pose nouveaux équipements.

Règle anti-double comptage

Si DEM-008 est généré pour une pièce, ne pas générer DEM-009 pour les sanitaires de cette même pièce.

DEM-009 Dépose appareil sanitaire
Définition

Dépose d’un équipement sanitaire isolé.

Unité

u

Déclencheurs

Créer la ligne si un élément sanitaire est détecté hors package SDB :

visual_evidence.sanitary_elements[] exists

ou si une pièce WC séparée est détectée.

Types concernés :

  • WC ;
  • lavabo ;
  • lave-mains ;
  • baignoire ;
  • douche ;
  • bidet.
Règle de quantité
quantity = count(sanitary_elements à déposer)

Cas WC séparé

Si room.type == "wc" :
quantity = 1

sauf si plusieurs équipements détectés.

Exclusions

Ne comprend pas :

  • modification plomberie ;
  • rebouchage réseaux ;
  • nouvelle pose ;
  • évacuation gravats.
DEM-010 Dépose radiateur
Définition

Dépose de radiateur existant.

Unité

u

Déclencheurs

Créer la ligne si :

radiator_detected == true

ou si l’utilisateur indique :

replace_heating_emitters == true

ou si la description contient :

  • remplacer radiateurs ;
  • déposer radiateurs ;
  • chauffage à refaire.

Ne pas créer automatiquement cette ligne uniquement parce que le chauffage est électrique ou gaz.

Règle de quantité

Priorité 1 :

quantity = count(radiators_detected)

Priorité 2 :

quantity = user_declared_radiator_count

Priorité 3 :

quantity = null

Ne pas estimer automatiquement un radiateur par pièce sans validation utilisateur.

Exclusions

Ne comprend pas :

  • modification réseau chauffage ;
  • purge ;
  • condamnation tuyaux ;
  • pose nouveau radiateur ;
  • reprise mur ;
  • intervention chaudière.
DEM-011 Dépose porte intérieure
Définition

Dépose de porte intérieure existante avec huisserie ou vantail selon cas.

Unité

u

Déclencheurs

Créer la ligne si :

replace_internal_doors == true

ou si :

target_layout.removed_doors[] exists

ou si rénovation lourde avec remplacement menuiseries intérieures sélectionné.

Ne pas déposer automatiquement toutes les portes en rénovation complète.

Règle de quantité
quantity = count(internal_doors_to_remove)

Source possible :

rooms[].openings[type="door"]

Exclure :

  • porte d’entrée ;
  • porte-fenêtre ;
  • baie vitrée ;
  • ouverture sans porte.

Règle anti-double comptage

Si la porte appartient à une cloison démolie en DEM-005 :

do not generate DEM-011

sauf si mode détail activé.

Exclusions

Ne comprend pas :

  • fourniture nouvelle porte ;
  • pose nouvelle porte ;
  • reprise cloison ;
  • peinture huisserie ;
  • modification dimensions ouverture.
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Objectif du lot

Le lot 1 couvre toutes les prestations de dépose, démolition légère, retrait d’équipements existants et préparation destructive avant reconstruction.

Ce lot ne doit pas chiffrer :

  • les protections de chantier ;
  • l’installation de chantier ;
  • l’évacuation générale des gravats ;
  • le nettoyage ;
  • les reprises de supports ;
  • les nouveaux ouvrages.

Ces éléments sont traités dans d’autres lots.

Le lot 1 doit uniquement générer des lignes de devis liées à la dépose ou à la démolition.

Principes généraux de calcul

3.1 Ne jamais chiffrer une démolition sans déclencheur

Une prestation de démolition ne doit être créée que si au moins un des déclencheurs existe :

DéclencheurExemple
Type de rénovationrénovation complète ou lourde
Pièce concernéepièce cochée comme à rénover
Élément détectécuisine, SDB, sanitaire, porte
Demande utilisateurdescription contenant “déposer”, “supprimer”, “ouvrir”, “abattre”
Projet cibleplan cible différent du plan existant

3.2 Ne jamais déduire une démolition de cloison depuis le plan existant seul

Le plan existant montre les cloisons, mais ne dit pas lesquelles doivent être supprimées.

La démolition de cloison doit être chiffrée uniquement si :

target_layout.wall_to_remove == true

ou si la description client indique clairement :

  • abattre cloison ;
  • ouvrir mur ;
  • supprimer séparation ;
  • agrandir séjour ;
  • cuisine ouverte ;
  • redistribution.

Sinon, ne pas créer de ligne DEM-005.

3.3 Toujours séparer dépose, préparation, fourniture et pose

Exemple interdit :

Rénovation sol chambre

Exemple attendu :

Dépose parquet existant

Ragréage

Fourniture parquet

Pose parquet

Pose plinthes

Le lot 1 ne génère que la première ligne : dépose.

3.4 Gestion des hypothèses

Chaque ligne générée doit avoir :

{
"confidence": 0.0,
"is_assumption": true,
"assumption_reason": null,
"user_validation_required": true
}

Si la prestation est directement détectée depuis le plan ou la photo, la confiance peut être élevée.

Si la prestation est générée par défaut selon le niveau de rénovation, elle doit être marquée comme hypothèse.

Ligne générique recommandée à ajouter

DEM-000 Dépose revêtement de sol existant non identifié

Pourquoi ajouter cette ligne

Le plan seul ne permet pas toujours de connaître le sol existant.

Pour éviter d’inventer parquet, carrelage ou PVC, le moteur doit pouvoir créer une ligne générique.

Déclencheur

Créer si :

renovation_scope in ["complete_renovation", "heavy_renovation"]

et :

existing_floor_finish == null

et :

replace_floor == true
Quantité
quantity = sum(area_m2 des pièces dont le sol est à remplacer)

Affichage utilisateur

Afficher :

Hypothèse : dépose d’un revêtement de sol existant non identifié. Le prix pourra être ajusté après validation du type de sol.

Règles globales anti-double comptage

7.1 Cuisine

Si DEM-007 est généré :

  • ne pas générer une dépose séparée d’évier cuisine ;
  • ne pas générer une dépose séparée de plan de travail ;
  • ne pas générer une dépose séparée de meubles cuisine.

Mais DEM-003 et DEM-004 peuvent être générés séparément pour carrelage sol et crédence/faïence.

7.2 Salle de bain

Si DEM-008 est généré :

  • ne pas générer DEM-009 pour les sanitaires de cette pièce.

Mais DEM-003 et DEM-004 peuvent être générés séparément pour carrelage sol et faïence murale.

7.3 Cloisons et portes

Si DEM-005 est généré sur une cloison contenant une porte :

  • ne pas générer DEM-011 pour cette porte.

7.4 Faux plafond

DEM-006 ne doit pas déclencher automatiquement :

  • électricité ;
  • peinture ;
  • isolation ;
  • nouveau faux plafond.

Ces prestations appartiennent à d’autres lots.

Gestion du niveau de qualité Éco / Standard / Premium

Le niveau de qualité ne doit pas modifier directement les quantités de démolition.

Il peut modifier uniquement :

NiveauImpact éventuel
Écodépose simple, sans conservation
Standarddépose classique
Premiumdépose plus soignée si éléments conservés ou environnement sensible

Mais par défaut :

quantity_eco = quantity_standard = quantity_premium

Le prix unitaire peut être différent uniquement si la base tarifaire prévoit une dépose soignée ou une contrainte premium.

Format de sortie attendu pour chaque ligne

Chaque ligne de devis générée par le moteur doit suivre ce format :

{
"lot": "Démolition / Dépose",
"code": "DEM-003",
"label": "Dépose carrelage sol",
"room_id": "room_4",
"room_name": "Salle de bain",
"unit": "m2",
"quantity": 4.2,
"quantity_formula": "room.area_m2",
"pricing_mode": "unit_price",
"source": "plan_json | user_input | photo_analysis | default_assumption",
"confidence": 0.75,
"is_assumption": true,
"assumption_reason": "Carrelage sol probable en pièce humide",
"user_validation_required": true,
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Règles de validation avant génération du devis

Avant de générer le lot 1, le moteur doit vérifier :

{
"has_valid_rooms": true,
"has_area_data": true,
"has_renovation_scope": true,
"has_room_selection": true
}

Si renovation_scope est absent :

Utiliser complete_renovation par défaut

Créer une hypothèse visible

Si les surfaces sont absentes :

Bloquer les lignes m²

Demander validation utilisateur

Si les pièces sont absentes :

Bloquer le lot 1

Demander correction écran 2

Résumé des données vraiment nécessaires

Obligatoire

DonnéeSource
Pièces détectéesJSON plan
Surfaces par pièceJSON plan
Type de pièceJSON plan
Niveau d’interventionécran 0 ou défaut
Pièces à rénoverécran 2 ou défaut toutes pièces

Fortement recommandé

DonnéeSource
Type de sol existantphoto ou choix rapide
Cuisine conservée ou déposéetoggle
Salle de bain conservée ou déposéetoggle
Portes ou fenêtres remplacées ou conservéestoggle
Radiateurs remplacés ou conservéstoggle

Non nécessaire au premier chiffrage

DonnéePourquoi
marque des produits existantsinutile pour dépose
âge exact des équipementsinutile pour estimation rapide
composition exacte des mursutile seulement si cloison à démolir
étude structureuniquement si mur porteur / ouverture

Règle produit finale

Le lot 1 doit pouvoir produire un devis instantané même avec peu d’informations, mais chaque ligne incertaine doit être marquée comme hypothèse.

Le moteur doit donc distinguer :

Prix certain = donnée visible ou validée

Prix probable = hypothèse métier raisonnable

Prix à valider = donnée manquante mais nécessaire

Prix bloqué = donnée impossible à estimer proprement

Aucune prestation de démolition lourde ne doit être chiffrée comme certaine sans validation utilisateur ou donnée cible explicite.

Lot 2

Cloisons / Doublages / Faux plafonds

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
PLA-001Cloison BA13 simple10%Règle définie + choix client
PLA-002Cloison hydrofuge BA1310%Règle définie
PLA-003Cloison acoustique renforcée10%Règle définie + choix client
PLA-004Doublage mural simple10%Choix client
PLA-005Doublage isolant thermique5,5%Règle définie + choix client
PLA-006Faux plafond BA1310%Règle définie + choix client
PLA-007Faux plafond acoustique / isolé10%Règle définie + choix client
PLA-008Coffrage techniqueml10%Règle définie + choix client
PLA-009Trappe de visiteu10%Règle définie
PLA-010Reprise localisée supportforfait/m²10%Règle définie
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

2.1 Données issues du JSON validé du plan existant

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"length_m": null,
"width_m": null,
"ceiling_height_m": null,
"openings": [],
"layout_fidelity": {},
"visual_evidence": {
"fixed_features": [],
"sanitary_elements": [],
"kitchen_elements": []
}
}

2.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"floor_count": null,
"hot_water_type": null,
"heating_type": null,
"project_description": null,
"quality_level": null,
"property_floor_level": null,
"wall_insulation_type": "none",
"ceiling_insulation_type": "none"
}

Menu déroulant : Isolation des murs

Valeurs possibles :

[

"interior",

"exterior",

"none"

]

Correspondance interface :

ValeurLibellé
interiorIsolation par l'intérieur
exteriorIsolation par l'extérieur
noneNon

Menu déroulant : Isolation plafond

Valeurs possibles :

[

"interior",

"exterior",

"none"

]

Correspondance interface :

ValeurLibellé
interiorIsolation par l'intérieur
exteriorIsolation par l'extérieur
noneNon

2.3 Données issues de l’écran 2

Si une isolation des murs est sélectionnée à l'écran 0 :

{
"room_has_exterior_wall": true,
"wall_insulation_enabled": true
}

Règles

Le champ wall_insulation_enabled :

  • n'apparaît que pour les pièces possédant au moins un mur périphérique ;
  • est coché par défaut ;
  • peut être décoché par l'utilisateur ;
  • n'apparaît jamais pour une pièce entièrement centrale sans mur extérieur.

2.4 Données issues du projet cible ou de la personnalisation

Pour chiffrer précisément le lot 2, le moteur doit idéalement recevoir :

{
"target_layout_json": {
"new_partitions": [],
"removed_partitions": [],
"new_openings": [],
"new_false_ceilings": [],
"new_doublings": [],
"technical_boxings": []
}
}

Si target_layout_json n’existe pas, le moteur ne doit pas inventer de modification de cloisonnement.

3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

La logique doit être :

Pas de plan cible ou d’intention explicite = pas de cloison, doublage ou faux plafond inventé.

Les intentions peuvent venir de :

  • la description libre du projet ;
  • la personnalisation utilisateur ;
  • une comparaison entre plan existant et plan cible ;
  • une option sélectionnée dans l’interface ;
  • une demande explicite de redistribution.

Variables calculées

Avant de chiffrer le lot 2, le moteur doit calculer :

{
"project_surface_m2": null,
"renovated_area_m2": null,
"default_ceiling_height_m": 2.50,
"new_partition_length_m": null,
"new_partition_area_m2": null,
"new_hydro_partition_area_m2": null,
"new_acoustic_partition_area_m2": null,
"new_doubling_area_m2": null,
"new_insulated_doubling_area_m2": null,
"new_false_ceiling_area_m2": null,
"technical_boxing_length_m": null,
"support_repair_area_m2": null,
"exterior_wall_area_to_insulate_m2": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

PLA-001 Cloison BA13 simple
Définition

Création d’une cloison intérieure standard en plaques de plâtre.

Unité

Déclencheurs

Créer la ligne si :

target_layout_json.new_partitions[] exists

et si la cloison n’est pas située dans une pièce humide.

Créer aussi si la description projet contient :

  • créer une cloison ;
  • séparer une pièce ;
  • fermer une pièce ;
  • créer une chambre ;
  • créer un bureau.
Règle de quantité

Pour chaque cloison :

partition_area_m2 = partition_length_m × ceiling_height_m

Quantité totale :

quantity = sum(partition_area_m2)

Gestion des ouvertures

Par défaut MVP :

Ne pas déduire les portes intérieures standard de la surface de cloison.

Raison : simplification et cohérence avec une logique de prix unitaire fourni-posé.

Si une ouverture est très importante :

large_opening_area_m2 > configurable_threshold

alors déduire :

net_partition_area_m2 = gross_partition_area_m2 - large_opening_area_m2

Le seuil doit être paramétrable.

Exclusions

Ne comprend pas :

  • peinture ;
  • enduit de finition peinture ;
  • plinthes ;
  • porte intérieure ;
  • électricité intégrée ;
  • isolation acoustique renforcée ;
  • carrelage ;
  • démolition existante.
Sortie attendue
{
"code": "PLA-001",
"label": "Cloison BA13 simple",
"unit": "m2",
"quantity": 0,
"quantity_formula": "partition_length_m × ceiling_height_m",
"source": "target_layout_json",
"confidence": 0.9,
"is_assumption": false
}
PLA-002 Cloison hydrofuge BA13
Définition

Création d’une cloison en plaques de plâtre hydrofuges pour pièces humides.

Unité

Déclencheurs

Créer la ligne si :

new_partition.room_type in ["bathroom", "shower_room", "sdb", "sde", "wc"]

ou si :

new_partition.adjacent_to_wet_room == true

ou si la cloison est destinée à recevoir une douche, baignoire, WC, meuble vasque ou réseau plomberie.

Règle de quantité
quantity = sum(partition_length_m × ceiling_height_m for wet room partitions)

Priorité sur PLA-001

Si une cloison est éligible à PLA-002, ne pas créer PLA-001 pour cette même cloison.

PLA-002 overrides PLA-001

Exclusions

Ne comprend pas :

  • étanchéité SPEC ;
  • carrelage ;
  • faïence ;
  • plomberie ;
  • électricité ;
  • peinture ;
  • porte.
PLA-003 Cloison acoustique renforcée
Définition

Création d’une cloison intérieure avec performance acoustique renforcée.

Unité

Déclencheurs

Créer la ligne uniquement si :

acoustic_partition_required == true

ou si :

quality_level == "premium"

et que la cloison sépare :

  • chambre / séjour ;
  • chambre / cuisine ;
  • chambre / salle de bain ;
  • chambre / WC ;
  • bureau / séjour ;
  • bureau / pièce bruyante.
Règle de quantité
quantity = sum(acoustic_partition_length_m × ceiling_height_m)
Priorité

PLA-003 remplace PLA-001 si la cloison est acoustique.

Si cloison humide et acoustique :

use PLA-003 only if price base includes acoustic + hydro

Sinon :

create PLA-002 and add acoustic option line

La base de prix doit prévoir une règle de compatibilité.

Exclusions

Ne comprend pas :

  • porte acoustique ;
  • joints acoustiques spécifiques ;
  • traitement sol/plafond acoustique ;
  • peinture ;
  • électricité.
PLA-004 Doublage mural simple
Définition

Doublage intérieur non isolant ou faiblement technique, utilisé pour redresser, habiller ou créer une paroi propre.

Unité

Déclencheurs

Créer la ligne si :

target_layout_json.new_doublings[] exists

ou si l’utilisateur sélectionne :

  • redresser les murs ;
  • doubler les murs ;
  • cacher des réseaux ;
  • créer une paroi technique.

Ne pas créer automatiquement sur tous les murs en rénovation complète.

Règle de quantité

Si murs explicitement listés :

quantity = sum(wall_length_m × ceiling_height_m)

Si pièce entière à doubler :

quantity = room_wall_perimeter_m × ceiling_height_m - openings_area_m2

Si openings_area_m2 indisponible :

quantity = room_wall_perimeter_m × ceiling_height_m

et marquer comme surface brute.

Exclusions

Ne comprend pas :

  • isolation thermique ;
  • isolation acoustique ;
  • peinture ;
  • carrelage ;
  • électricité ;
  • plomberie ;
  • dépose existante.
PLA-005 Doublage isolant thermique intérieur
Déclencheurs

Créer automatiquement la ligne si :

{
"wall_insulation_type": "interior"
}

et :

{
"room_has_exterior_wall": true,
"wall_insulation_enabled": true
}
Quantité

Somme des surfaces des murs périphériques sélectionnés :

quantity = Σ(exterior_wall_length_m × ceiling_height_m)
PLA-006 Faux plafond BA13
Définition

Création d’un faux plafond simple en plaques de plâtre.

Déclencheurs automatiques

Par défaut, créer la ligne dans les pièces suivantes :

  • salle de bain ;
  • salle d'eau ;
  • WC ;
  • cuisine ;
  • entrée ;
  • couloir ;
  • dégagement ;
  • circulation.

Sauf si :

{
"ceiling_insulation_type": "interior"
}

Dans ce cas PLA-007 remplace PLA-006.

Quantité
quantity = room.area_m2

pour chaque pièce concernée.

PLA-007 Faux plafond acoustique / isolé
Déclencheurs supplémentaires

Créer automatiquement la ligne si :

{
"ceiling_insulation_type": "interior"
}
Quantité
quantity = project_surface_m2

La totalité de la surface du logement est alors considérée comme isolée.

Priorité

PLA-007 overrides PLA-006

PLA-008 Coffrage technique
Définition

Création d’un coffrage pour masquer ou protéger des réseaux, gaines, évacuations, colonnes techniques ou éléments fixes.

Unité

ml

ou en mode avancé :

Déclencheurs

Créer la ligne si :

technical_boxings[] exists

ou si les lots plomberie / ventilation / climatisation créent un réseau apparent nécessitant coffrage.

Exemples :

  • évacuation WC apparente ;
  • descente technique ;
  • gaine VMC ;
  • colonne technique ;
  • coffrage bâti-support ;
  • habillage tuyaux.
Règle de quantité

Si longueur disponible :

quantity = boxing_length_m

Si surface disponible :

quantity = boxing_length_m × boxing_height_m

Si aucune dimension fiable :

quantity = 1 forfait

avec :

{
"is_assumption": true,
"user_validation_required": true
}
Exclusions

Ne comprend pas :

  • trappe de visite ;
  • peinture ;
  • carrelage ;
  • plomberie ;
  • ventilation ;
  • isolation acoustique.
PLA-009 Création trappe de visite
Définition

Création d’une trappe de visite dans un faux plafond, coffrage ou gaine technique.

Unité

u

Déclencheurs

Créer la ligne si :

technical_boxing_requires_access == true

ou si :

false_ceiling_contains_serviceable_equipment == true

Exemples :

  • vanne ;
  • nourrice ;
  • siphon ;
  • moteur VMC ;
  • compteur ;
  • bâti-support ;
  • trappe technique existante à conserver.
Règle de quantité
quantity = count(access_required_points)

Si un coffrage technique est créé sans point d’accès identifié :

quantity = 0

Ne pas créer automatiquement une trappe pour chaque coffrage.

Exclusions

Ne comprend pas :

  • coffrage ;
  • peinture ;
  • carrelage ;
  • équipement technique derrière trappe.
PLA-010 Reprise localisée de support
Définition

Reprise ponctuelle de support après démolition, dépose ou modification technique.

Cette prestation sert à remettre un support en état avant finition.

Unité

forfait

ou :

Déclencheurs

Créer la ligne si une prestation précédente entraîne une reprise localisée :

  • démolition cloison ;
  • dépose porte ;
  • dépose cuisine ;
  • dépose salle de bain ;
  • création ouverture ;
  • modification plomberie ;
  • modification électricité ;
  • dépose faux plafond.
Règle de quantité

Si surface connue :

quantity = affected_surface_m2

Si surface inconnue :

quantity = 1 forfait par zone concernée
PLA-011 Isolation thermique par l'extérieur (ITE)
Définition

Isolation thermique des façades par l'extérieur.

Unité

Déclencheurs

Créer la ligne uniquement si :

{
"wall_insulation_type": "exterior"
}
Quantité
quantity = exterior_facade_area_m2
Exclusions
  • échafaudage spécifique ;
  • ravalement complet ;
  • modification des descentes EP ;
  • modification des garde-corps.

8. Prestations complémentaires sur demande explcite du client ou plan cible

Les prestations suivantes ne doivent jamais être générées automatiquement.

Elles ne peuvent être créées que :

  • via le plan cible ;
  • via une personnalisation utilisateur ;
  • via une instruction explicite du client.
PLA-012 Coffrage tableau électrique
Unité

u

PLA-013 Création d'une arche
Unité

U et fonction de ML

PLA-014 Coffrage des fers / IPN
Unité

ml

PLA-015 Création d'étagères en placo
Unité

U et fonction de ML

PLA-016 Réalisation d'une niche dans la douche
Unité

U et fonction de la surface

PLA-017 Création de niche dans doublage
Unité

U et fonction de la surface

PLA-018 Provision création d'une tête de lit en placo
Unité

Forfait et fonction de la surface

PLA-019 Fourniture et création de paillasse en BA13
Unité

ml

PLA-020 Fourniture et pose d'une rosace au plafond
Unité

u

PLA-021 Création de moulures aux plafonds sur mesure en plâtre
Unité

ml

PLA-022 Pose de moulures au plafond (du commerce)
Unité

ml

PLA-023 Condamnation d'ouverture / trappe en plâtre
Unité

u

PLA-024 Forfait condamnation trappe / vide-ordures / évacuation
Unité

forfait

PLA-025 Création d'une bibliothèque ou structure en placo plâtre
Unité

Forfait et fonction de la surface

PLA-026 Création d'une cloison renforcée pour pose d'une verrière
Unité

PLA-027 Création d'un meuble vasque sur mesure en placo plâtre (hors vasque et robinetterie)
Unité

U et fonction de la surface

5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Objectif du lot

Le lot 2 couvre les prestations liées à la création, modification ou reprise d’ouvrages en plaques de plâtre, cloisons, doublages, faux plafonds, coffrages, ouvrages décoratifs en plâtre et reprises localisées de supports.

Ce lot comprend :

  • création de cloisons ;
  • création de cloisons hydrofuges ;
  • création de cloisons acoustiques ;
  • doublage mural simple ;
  • doublage isolant thermique intérieur ;
  • isolation thermique par l'extérieur ;
  • faux plafond simple ;
  • faux plafond acoustique ou isolé ;
  • coffrage technique ;
  • trappe de visite ;
  • ouvrages décoratifs et sur mesure en placo ;
  • reprise localisée de support après démolition ou modification.

Ce lot ne doit pas chiffrer :

  • démolition de cloisons existantes ;
  • peinture ;
  • enduits de finition peinture ;
  • carrelage ;
  • électricité ;
  • plomberie ;
  • menuiserie.

Hauteur sous plafond

5.1 Priorité

Priorité 1 :

ceiling_height_m = room.ceiling_height_m

Priorité 2 :

ceiling_height_m = project.default_ceiling_height_m

Valeur par défaut :

"default_ceiling_height_m": 2.50

Règles générales du lot

6.1 Ne jamais créer de cloison depuis le plan existant seul

Le plan existant montre les cloisons actuelles mais ne dit pas quelles cloisons doivent être créées.

Donc :

existing_plan_json alone must not generate PLA-001, PLA-002 or PLA-003

6.2 Isolation des murs

Si :

{
"wall_insulation_type": "interior"
}

alors PLA-005 est automatiquement généré pour toutes les pièces :

{
"room_has_exterior_wall": true,
"wall_insulation_enabled": true
}

La quantité correspond uniquement aux murs périphériques du logement.

Si :

{
"wall_insulation_type": "exterior"
}

alors la prestation PLA-011 est générée.

6.3 Ne jamais créer de doublage automatiquement sur tous les murs

Le moteur ne doit pas doubler tous les murs par défaut.

Le doublage doit être déclenché uniquement par :

  • une sélection utilisateur ;
  • un scénario énergétique ;
  • un mur explicitement marqué à doubler ;
  • une contrainte technique ;
  • une demande de redressement ou d’isolation.

Isolation plafond

Si :

{
"ceiling_insulation_type": "interior"
}

alors PLA-007 est généré automatiquement sur la totalité de la surface du logement.

Dans ce cas :

PLA-007 overrides PLA-006

Aucun PLA-006 ne doit être créé.

6.4 Toujours transmettre les surfaces créées aux lots suivants

Les cloisons, doublages, coffrages et faux plafonds créent des surfaces à finir.

Le lot 2 doit transmettre aux lots suivants :

{
"new_wall_surface_to_finish_m2": null,
"new_ceiling_surface_to_finish_m2": null,
"new_tile_ready_surface_m2": null,
"new_paint_ready_surface_m2": null
}

Ces surfaces alimentent ensuite :

  • lot peinture ;
  • lot carrelage ;
  • lot salle de bain ;
  • lot électricité ;
  • lot plomberie.

Règles de priorité entre prestations

8.1 Cloisons

Priorité

PLA-003 acoustic > PLA-002 hydro > PLA-001 standard

Ne jamais générer deux types de cloisons pour la même surface, sauf si la base tarifaire prévoit une option complémentaire.

8.2 Doublages

Priorité

PLA-005 insulated > PLA-004 simple

Ne jamais doubler deux fois la même surface.

8.3 Faux plafonds

Priorité

PLA-007 acoustic/insulated > PLA-006 simple

Ne jamais générer deux faux plafonds pour la même surface.

8.4 Coffrage et trappe

PLA-009 peut être généré en complément de PLA-008.

Mais PLA-008 ne déclenche pas automatiquement PLA-009.

Interactions avec les autres lots

9.1 Avec lot 1 — Démolition

Si DEM-005 est généré :

Créer éventuellement PLA-010 pour reprise localisée.

Si DEM-006 est généré :

Créer éventuellement PLA-006 ou PLA-007 uniquement si nouveau faux plafond prévu.

9.2 Avec lot électricité

Si électricité prévoit spots encastrés :

Créer PLA-006 si faux plafond nécessaire et non existant.

Si électricité crée beaucoup de réseaux encastrés :

Créer PLA-010 pour reprises localisées si non inclus ailleurs.

9.3 Avec lot plomberie

Si plomberie crée des réseaux apparents :

Créer PLA-008 coffrage technique.

Si coffrage cache une vanne ou nourrice :

Créer PLA-009 trappe de visite.

9.4 Avec lot peinture

Toutes les surfaces créées par PLA-001 à PLA-008 doivent alimenter la surface à peindre.

{
"new_paint_surface_m2": "created_wall_or_ceiling_surface"
}

9.5 Avec lot salle de bain

Les cloisons et doublages en pièces humides doivent alimenter :

{
"tile_ready_surface_m2": null,
"waterproofing_required_surface_m2": null
}

Gestion du niveau Éco / Standard / Premium

Le niveau de qualité peut influencer le choix de prestation.

NiveauRègle
Écocloison simple sauf pièce humide
Standardcloison simple ou hydro selon pièce
Premiumacoustique possible selon adjacence et usage

10.1 Cloisons

Si quality_level == premium, le moteur peut recommander PLA-003 si la cloison sépare une chambre ou un bureau d’une pièce bruyante.

Mais cette ligne doit être marquée :

{
"is_assumption": true,
"assumption_reason": "Cloison acoustique recommandée en niveau premium"
}

10.2 Doublages

Le niveau premium ne doit pas automatiquement créer des doublages.

10.3 Faux plafonds

Le niveau premium ne doit pas automatiquement créer des faux plafonds.

Il peut seulement transformer un faux plafond prévu en faux plafond renforcé si le scénario cible le demande.

Règles de validation

Ajouter :

{
"wall_insulation_type": "interior|exterior|none",
"ceiling_insulation_type": "interior|exterior|none"
}

Résumé des données nécessaires

Obligatoire

DonnéeSource
pièces validéesJSON écran 2
surfaces piècesJSON écran 2
hauteur sous plafondJSON ou défaut
niveau de qualitéécran 0
isolation mursécran 0
isolation plafondécran 0

Complémentaires

DonnéeSource
pièce avec mur extérieuranalyse du plan
checkbox isolation pièceécran 2
plan ciblepersonnalisation
ouvrages décoratifspersonnalisation

Règle produit finale

Le lot 2 ne doit pas inventer de travaux.

Le moteur doit appliquer cette règle :

Pas de plan cible, pas de demande explicite, pas de dépendance technique = pas de cloison, doublage ou ouvrage spécifique généré automatiquement.

Exceptions autorisées :

1. Faux plafonds standards dans cuisines, salles de bain, WC et circulations ;

2. Isolation intérieure si sélectionnée à l'écran 0 ;

3. Isolation plafond si sélectionnée à l'écran 0 ;

4. Reprises localisées liées aux démolitions ;

5. Coffrages liés aux réseaux techniques.

Toutes les prestations décoratives ou sur mesure (arches, niches, bibliothèques, moulures, têtes de lit, meubles vasques, verrières, rosaces, paillasses, etc.) nécessitent obligatoirement une demande explicite du client ou une présence dans le plan cible.

CodePrestationUnitéRègle de métréGammeType
ELE-001Mise en sécurité électriqueforfait1 par projet si installation conservéeTousForfait
ELE-002Création / remplacement tableau électriqueu1 par logementTousFourni-posé
ELE-003Point prise 16Apointnombre prises prévuesTousFourni-posé
ELE-004Point interrupteur simplepointnombre interrupteursTousFourni-posé
ELE-005Point va-et-vientpointnombre commandes va-et-vientTousFourni-posé
ELE-006Point lumineux plafond / appliquepointnombre points lumineuxTousFourni-posé
ELE-007Circuit spécialisé plaque cuissonu1 par cuisine équipéeTousFourni-posé
ELE-008Circuit spécialisé four / LL / LV / SLunombre circuits spécialisésTousFourni-posé
ELE-009Prise RJ45pointnombre prises RJ45Standard / PremiumFourni-posé
ELE-010Prise TVpointnombre prises TVStandard / PremiumFourni-posé
ELE-011Spot encastréunombre spotsStandard / PremiumFourni-posé
ELE-012Ruban LED / éclairage décoratifmllongueur LEDPremiumFourni-posé
ELE-013Appareillage électrique entrée de gammepointnombre points appareillésÉcoFourniture
ELE-014Appareillage électrique standardpointnombre points appareillésStandardFourniture
ELE-015Appareillage électrique premiumpointnombre points appareillésPremiumFourniture
Lot 3

Électricité

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
ELEC-001Mise en sécurité électriqueforfait10%Règle définie + choix client
ELEC-002Création / remplacement tableau électriqueu10%Règle définie
ELEC-003Point prise 16Apoint10%Règle définie + choix client
ELEC-004Point interrupteur simplepoint10%Règle définie
ELEC-005Point va-et-vientpoint10%Règle définie + choix client
ELEC-006Point lumineux plafond / appliquepoint10%Règle définie
ELEC-007Circuit spécialisé plaque cuissonu10%Règle définie
ELEC-008Circuit spécialisé four / LL / LV / SLu10%Règle définie + choix client
ELEC-009Prise RJ45point10%Règle définie + choix client
ELEC-010Prise TVpoint10%Règle définie + choix client
ELEC-011Spot encastréu10%Choix client
ELEC-012Ruban LEDml10%Choix client
ELEC-013Appareillage électrique entrée de gammepoint10%Règle définie
ELEC-014Appareillage électrique standardpoint10%Règle définie
ELEC-015Appareillage électrique premiumpoint10%Règle définie
ELEC-016Alimentation électrique radiateurpoint5,5%Règle définie + choix client
ELEC-017Alimentation électrique ballon d’eau chaudeu5,5%Règle définie + choix client
ELEC-018Alimentation électrique VMC ou aérateuru5,5%Règle définie
ELEC-019Alimentation électrique miroiru10%Règle définie
ELEC-020Prise commandée simplepoint10%Choix client
ELEC-021Plus-value prise USB-C intégréeu10%Choix client
ELEC-022Interrupteur variateuru10%Choix client
ELEC-023Télérupteur encastréu10%Choix client
ELEC-024Provision changement / déplacement interphoneforfait10%Choix client
ELEC-025Alimentation électrique volet électriqueu5,5%Choix client
ELEC-026Alimentation électrique cave à vinu10%Choix client
ELEC-027Alimentation électrique PAC ou climatisationu5,5%Choix client
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

2.1 Données issues du JSON validé du plan

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"type": null,
"name": null,
"openings": [],
"visual_evidence": {
"kitchen_elements": [],
"sanitary_elements": [],
"fixed_features": []
},
"layout_fidelity": {}
}

2.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"floor_count": null,
"hot_water_type": null,
"heating_type": null,
"project_description": null,
"quality_level": null,
"property_floor_level": null
}

2.3 Données issues de l’écran 2

Le moteur utilise :

{
"validated_rooms": [],
"room_type_overrides": [],
"room_area_overrides": [],
"rooms_to_renovate": [],
"room_photos": []
}

2.4 Données issues de la personnalisation

Le moteur peut recevoir :

{
"electrical_customization": {
"renovation_mode": null,
"custom_socket_points": [],
"custom_light_points": [],
"custom_switch_points": [],
"custom_specialized_circuits": [],
"custom_rj45_points": [],
"custom_tv_points": [],
"custom_spots": [],
"custom_led_strips": [],
"custom_controlled_sockets": [],
"custom_usb_c_sockets": [],
"custom_dimmers": [],
"custom_remote_switches": [],
"custom_intercom_change": false,
"custom_electric_shutters": [],
"custom_wine_cellar_power": [],
"custom_heat_pump_or_ac_power": []
}
}

La personnalisation est optionnelle.

Si elle n’existe pas, le moteur applique les règles automatiques par type de pièce.

3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

Aucune donnée client supplémentaire obligatoire n’est recommandée pour le MVP.

Données optionnelles utiles mais non bloquantes :

{
"electrical_diagnostic_uploaded": false,
"electrical_panel_photo_uploaded": false
}

Ces données peuvent améliorer la précision de :

  • ELEC-001 mise en sécurité ;
  • ELEC-002 tableau électrique ;
  • nombre de rangées du tableau ;
  • niveau de confiance global du lot électricité.

Mais elles ne doivent pas être obligatoires.

Variables calculées

Avant de générer le lot 3, le moteur doit calculer :

{
"project_surface_m2": null,
"renovated_area_m2": null,
"room_count": null,
"kitchen_count": null,
"bathroom_count": null,
"bedroom_count": null,
"living_room_count": null,
"office_count": null,
"electrical_scope": null,
"electrical_panel_rows_count": null,
"socket_points_count": null,
"switch_points_count": null,
"two_way_switch_points_count": null,
"light_points_count": null,
"specialized_circuit_count": null,
"rj45_points_count": null,
"tv_points_count": null,
"spot_count": null,
"led_strip_length_m": null,
"apparatus_points_count": null,
"electric_radiator_power_points_count": null,
"water_heater_power_points_count": null,
"ventilation_power_points_count": null,
"mirror_power_points_count": null,
"controlled_socket_count": null,
"usb_c_socket_upgrade_count": null,
"dimmer_switch_count": null,
"remote_switch_count": null,
"intercom_provision_count": null,
"electric_shutter_power_points_count": null,
"wine_cellar_power_points_count": null,
"heat_pump_or_ac_power_points_count": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

ELEC-001 — Mise en sécurité électrique

Définition

Mise en sécurité minimale de l’installation électrique existante.

Unité

forfait

Déclencheurs

Créer si :

electrical_scope == "safety_only"

ou si la description projet contient :

  • mise en sécurité ;
  • sécuriser électricité ;
  • tableau à revoir ;
  • installation ancienne ;
  • diagnostic électrique défavorable.

Règle de quantité

quantity = 1

Anti-double comptage

Si :

electrical_scope == "full_renovation"

ne pas générer ELEC-001 séparément, sauf si la base de prix le prévoit comme ligne obligatoire.

Exclusions

Ne comprend pas :

  • rénovation complète ;
  • création de nouveaux points ;
  • reprise peinture ;
  • fourniture luminaires ;
  • domotique ;
  • mise en conformité complète si installation entièrement refaite.

ELEC-002 — Création / remplacement tableau électrique

Définition

Fourniture et pose ou remplacement du tableau électrique principal du logement.

Unité

u

Déclencheurs

Créer si :

electrical_scope == "full_renovation"

ou si :

electrical_scope == "safety_only"

avec tableau à remplacer.

Créer aussi si :

specialized_circuit_count > 0

et que le tableau existant n’est pas confirmé comme conservé.

Règle de quantité

quantity = 1

Règle de nombre de rangées selon surface

Le moteur doit définir un nombre de rangées cible selon la surface du bien.

"electrical_panel_rows_count": null
Règle de base
Surface du bienNombre de rangées
surface <= 35 m²2 rangées
35 m² < surface <= 80 m²3 rangées
80 m² < surface <= 120 m²4 rangées
surface > 120 m²5 rangées ou tableau renforcé
Formule
if project_surface_m2 <= 35:
electrical_panel_rows_count = 2
elif project_surface_m2 <= 80:
electrical_panel_rows_count = 3
elif project_surface_m2 <= 120:
electrical_panel_rows_count = 4

else:

electrical_panel_rows_count = 5

Sécurité par nombre de circuits

Le nombre de rangées calculé par surface est un minimum.

Le moteur doit aussi vérifier le nombre de circuits générés.

required_rows_by_circuits = compute_rows_from_circuit_count(total_circuit_count)

Règle finale :

electrical_panel_rows_count = max(rows_by_surface, required_rows_by_circuits)

Si required_rows_by_circuits est indisponible :

electrical_panel_rows_count = rows_by_surface

avec :

{
"is_assumption": true,
"assumption_reason": "Nombre de rangées défini par surface, sans calcul détaillé du nombre de circuits"
}

Classification

Le tableau doit être classé selon :

{
"project_surface_m2": null,
"room_count": null,
"specialized_circuit_count": null,
"electrical_panel_rows_count": null,
"heating_type": null,
"hot_water_type": null
}

Classes possibles :

ClasseRègle
tableau 2 rangéessurface <= 35 m² sauf surcharge circuits
tableau 3 rangéessurface 35 à 80 m² sauf surcharge circuits
tableau 4 rangéessurface 80 à 120 m² sauf surcharge circuits
tableau 5 rangées ou renforcésurface > 120 m² ou nombreux circuits

Exclusions

Ne comprend pas :

  • déplacement compteur ;
  • intervention Enedis ;
  • colonne montante ;
  • augmentation puissance abonnement ;
  • domotique avancée ;
  • reprise peinture autour tableau.

ELEC-003 — Point prise 16A

Définition

Création d’un point prise de courant 16A standard.

Unité

point

Déclencheurs

Créer selon le programme électrique cible par pièce.

quantity = sum(socket_points_by_room)

Règle de quantité

Le moteur calcule le nombre de prises par pièce selon :

{
"room.type": null,
"room.area_m2": null,
"quality_level": null,
"electrical_customization": null
}

Si l’utilisateur ajoute ou supprime des prises dans la personnalisation :

quantity = user_customized_socket_count

sinon :

quantity = automatic_socket_count_by_room_type

Exclusions

Ne comprend pas :

  • circuit spécialisé ;
  • prise RJ45 ;
  • prise TV ;
  • appareillage premium si séparé ;
  • peinture après saignée ;
  • déplacement lourd de tableau.

ELEC-004 — Point interrupteur simple

Définition

Création d’un point de commande simple pour éclairage.

Unité

point

Déclencheurs

Créer un interrupteur simple si une pièce dispose d’un seul accès principal.

if room.access_count <= 1:

create ELEC-004

Règle de quantité

quantity = count(simple_switch_points)

Par défaut :

1 interrupteur simple par pièce avec point lumineux

Exclusions

Ne comprend pas :

  • va-et-vient ;
  • variateur ;
  • bouton poussoir ;
  • domotique ;
  • appareillage premium si séparé.

ELEC-005 — Point va-et-vient

Définition

Création d’un système de commande d’éclairage depuis deux points.

Unité

point

Déclencheurs

Créer si :

room.access_count >= 2

ou si la pièce est :

  • couloir ;
  • entrée avec plusieurs accès ;
  • grande pièce avec deux accès ;
  • chambre premium avec commande tête de lit ;
  • escalier intérieur.

Règle de quantité

quantity = count(two_way_switch_groups)

Un va-et-vient correspond à un groupe de commande pour un même éclairage.

Anti-double comptage

Si ELEC-005 est généré pour une pièce :

do not generate ELEC-004 for same light control

sauf si plusieurs éclairages indépendants existent.

Exclusions

Ne comprend pas :

  • télérupteur ;
  • variateur ;
  • domotique ;
  • commande sans fil.

ELEC-006 — Point lumineux plafond / applique

Définition

Création d’un point lumineux en plafond, applique ou sortie de câble.

Unité

point

Déclencheurs

Créer au moins un point lumineux par pièce rénovée.

quantity = sum(light_points_by_room)

Règle de quantité par défaut

1 point lumineux par pièce

Ajustement :

if room.area_m2 > large_room_threshold:

add additional light point

large_room_threshold doit être paramétrable.

Pour premium :

if quality_level == "premium":

allow multiple lighting zones

Exclusions

Ne comprend pas :

  • fourniture luminaire décoratif ;
  • spot encastré ;
  • ruban LED ;
  • faux plafond ;
  • peinture.

ELEC-007 — Circuit spécialisé plaque cuisson

Définition

Création d’un circuit spécialisé pour plaque de cuisson ou cuisinière.

Unité

u

Déclencheurs

Créer si :

room.type == "kitchen"

et si la cuisine est rénovée.

Créer aussi si :

visual_evidence.kitchen_elements contains "plaque"

ou si la personnalisation ajoute une plaque.

Règle de quantité

quantity = 1 per kitchen

Exclusions

Ne comprend pas :

  • plaque de cuisson ;
  • pose de la plaque ;
  • meuble cuisine ;
  • plan de travail ;
  • modification tableau hors protections nécessaires si séparées.

ELEC-008 — Circuit spécialisé four / LL / LV / SL

Définition

Création d’un circuit spécialisé pour gros appareil électroménager.

Unité

u

Types concernés

[

"oven",

"dishwasher",

"washing_machine",

"dryer",

"freezer"

]

Déclencheurs automatiques

Créer en cuisine rénovée :

oven = 1

Créer lave-vaisselle si :

quality_level in ["standard", "premium"]

Créer lave-linge si :

room.type in ["laundry", "buanderie"]

ou si la description projet indique lave-linge.

Créer sèche-linge si :

quality_level == "premium"

et si buanderie ou emplacement prévu.

Règle de quantité

quantity = count(specialized_appliance_circuits)

Exclusions

Ne comprend pas :

  • appareil électroménager ;
  • pose appareil ;
  • plomberie appareil ;
  • meuble cuisine ;
  • ventilation.

ELEC-009 — Prise RJ45

Définition

Création d’une prise de communication RJ45.

Unité

point

Déclencheurs

Créer selon qualité et type de pièce.

Règles par défaut :

PièceÉcoStandardPremium
Séjour012
Chambre011
Bureau112
Cuisine00optionnel

Règle de quantité

quantity = sum(rj45_points_by_room)

Exclusions

Ne comprend pas :

  • abonnement internet ;
  • box ;
  • baie de brassage complexe ;
  • réseau informatique avancé ;
  • fibre opérateur.

ELEC-010 — Prise TV

Définition

Création d’une prise TV / coaxiale ou point TV selon configuration.

Unité

point

Déclencheurs

Créer par défaut :

if room.type in ["living_room", "salon", "sejour"] and quality_level in ["standard", "premium"]:

tv_points = 1

Pour chambre :

if quality_level == "premium" and user_customization.tv_in_bedroom == true:

tv_points += 1

Règle de quantité

quantity = sum(tv_points_by_room)

Exclusions

Ne comprend pas :

  • antenne collective ;
  • intervention opérateur ;
  • abonnement ;
  • meuble TV ;
  • écran TV.

ELEC-011 — Spot encastré

Définition

Création d’un point spot encastré.

Unité

u

Déclencheurs

Créer uniquement si :

target_lighting_plan.spots[] exists

ou si l’utilisateur sélectionne des spots.

Ne pas créer automatiquement des spots uniquement parce que le niveau est premium.

Règle de quantité

quantity = count(spots)

Si l’utilisateur choisit un scénario de spots par pièce sans plan détaillé :

quantity = room.area_m2 × default_spot_density

default_spot_density doit être paramétrable.

Dépendances

Si spots encastrés et aucun faux plafond existant :

trigger dependency PLA-006 or PLA-007

Exclusions

Ne comprend pas :

  • faux plafond ;
  • peinture ;
  • luminaire spot si traité comme produit séparé ;
  • variateur ;
  • domotique.

ELEC-012 — Ruban LED / éclairage décoratif

Définition

Création d’une alimentation et pose technique pour ruban LED ou éclairage décoratif linéaire.

Unité

ml

Déclencheurs

Créer uniquement si :

target_lighting_plan.led_strips[] exists

ou si l’utilisateur sélectionne :

  • LED sous meuble ;
  • LED corniche ;
  • LED niche ;
  • LED tête de lit ;
  • LED dressing.

Règle de quantité

quantity = sum(led_strip_length_m)

Si longueur inconnue :

quantity = 1 forfait

avec hypothèse utilisateur.

Exclusions

Ne comprend pas :

  • création corniche ;
  • menuiserie ;
  • faux plafond ;
  • peinture ;
  • alimentation domotique avancée ;
  • transformateur premium si séparé en produit.

ELEC-013 — Appareillage électrique entrée de gamme

Définition

Fourniture de l’appareillage visible en gamme Éco.

Unité

point

Déclencheur

Créer si :

quality_level == "eco"

et si le moteur fonctionne en mode prix séparé :

apparatus_pricing_mode == "separate"

Règle de quantité

quantity = apparatus_points_count

avec :

apparatus_points_count = sockets + switches + rj45 + tv + special_outlets

Anti-double comptage

Si les prix unitaires ELEC-003 à ELEC-012 incluent déjà l’appareillage :

do not create ELEC-013

ELEC-014 — Appareillage électrique standard

Définition

Fourniture de l’appareillage visible en gamme Standard.

Unité

point

Déclencheur

Créer si :

quality_level == "standard"

et :

apparatus_pricing_mode == "separate"

Règle de quantité

quantity = apparatus_points_count

Anti-double comptage

Ne pas créer si les points électriques incluent déjà l’appareillage.

ELEC-015 — Appareillage électrique premium

Définition

Fourniture de l’appareillage visible en gamme Premium.

Unité

point

Déclencheur

Créer si :

quality_level == "premium"

et :

apparatus_pricing_mode == "separate"

Règle de quantité

quantity = apparatus_points_count

Exclusions

Ne comprend pas :

  • domotique avancée ;
  • interrupteurs connectés ;
  • variateurs spécifiques ;
  • finitions très haut de gamme hors base produit.

ELEC-016 — Fourniture et pose d’une alimentation électrique radiateur

Définition

Création d’une alimentation électrique dédiée ou adaptée pour radiateur électrique.

Unité

point

Déclencheurs

Créer si :

heating_type in ["electric", "chauffage_electrique"]

ou si l’écran 2 ou la personnalisation indique des radiateurs électriques à créer ou remplacer.

Créer aussi si un lot chauffage génère :

electric_radiators[] exists

Règle de quantité

Priorité 1 :

quantity = count(electric_radiators from personalization or CVC lot)

Priorité 2 :

quantity = count(heated_main_rooms)

Définition heated_main_rooms :

[

"living_room",

"salon",

"sejour",

"bedroom",

"chambre",

"office",

"bureau",

"kitchen"

]

Les pièces suivantes ne déclenchent pas automatiquement une alimentation radiateur :

[

"wc",

"corridor",

"entry",

"closet",

"dressing",

"subspace"

]

Pour salle de bain :

create radiator power point only if electric_towel_radiator_expected == true

Exclusions

Ne comprend pas :

  • fourniture radiateur ;
  • pose radiateur ;
  • thermostat ;
  • domotique chauffage ;
  • déplacement ancien radiateur ;
  • réseau chauffage eau chaude.

ELEC-017 — Fourniture et pose d’une alimentation électrique ballon d’eau chaude

Définition

Création d’une alimentation électrique pour ballon d’eau chaude électrique.

Unité

u

Déclencheurs

Créer si :

hot_water_type in ["electric_water_heater", "ballon_electrique", "ecs_electrique"]

ou si le lot plomberie génère :

water_heater.type == "electric"

ou si la personnalisation ajoute un ballon d’eau chaude électrique.

Règle de quantité

quantity = 1

Sauf si plusieurs ballons sont explicitement prévus :

quantity = count(electric_water_heaters)

Exclusions

Ne comprend pas :

  • ballon d’eau chaude ;
  • groupe de sécurité ;
  • plomberie ;
  • évacuation ;
  • support ;
  • pose ballon ;
  • modification tableau hors protection si séparée.

ELEC-018 — Fourniture et pose d’une alimentation électrique VMC ou aérateur

Définition

Création d’une alimentation électrique pour VMC, extracteur ou aérateur.

Unité

u

Déclencheurs

Créer automatiquement si le lot électricité est généré pour un logement rénové.

Règle cible demandée :

quantity = 1

Créer aussi si le lot ventilation génère :

ventilation_equipment exists

Règle de quantité

quantity = 1

Cette quantité reste à 1 par projet, sauf personnalisation technique explicite.

Exclusions

Ne comprend pas :

  • VMC ;
  • aérateur ;
  • bouche ;
  • gaine ;
  • percement ;
  • coffrage ;
  • sortie toiture/façade.

ELEC-019 — Fourniture et pose d’une alimentation électrique miroir

Définition

Création d’une alimentation électrique pour miroir lumineux, miroir chauffant ou meuble miroir électrique.

Unité

u

Déclencheurs

Créer automatiquement pour chaque salle de bain ou salle d’eau rénovée.

Types concernés :

[

"bathroom",

"shower_room",

"sdb",

"sde"

]

Règle de quantité

quantity = count(renovated_bathrooms_and_shower_rooms)

Donc :

1 alimentation miroir par salle de bain ou salle d’eau

Ne pas créer automatiquement pour un WC simple, sauf personnalisation.

Exclusions

Ne comprend pas :

  • miroir ;
  • meuble miroir ;
  • pose miroir ;
  • interrupteur spécifique ;
  • applique décorative ;
  • carrelage ;
  • percement support.

ELEC-020 — Fourniture et pose d’une prise commandée simple

Définition

Création d’une prise commandée par interrupteur simple.

Unité

point

Déclencheur

Créer uniquement si demandé en personnalisation.

custom_controlled_sockets[] exists

Règle de quantité

quantity = count(custom_controlled_sockets)

Anti-double comptage

Une prise commandée remplace une prise 16A standard sur le même emplacement.

Si une prise commandée est créée :

do not also count it as ELEC-003 for the same location

sauf si la base de prix fonctionne en plus-value.

Exclusions

Ne comprend pas :

  • luminaire ;
  • lampe ;
  • domotique ;
  • variateur ;
  • scénario connecté.

ELEC-021 — Plus-value prise avec port USB-C intégré

Définition

Plus-value pour remplacer une prise standard par une prise avec port USB-C intégré.

Unité

u

Déclencheur

Créer uniquement si demandé en personnalisation.

custom_usb_c_sockets[] exists

Règle de quantité

quantity = count(custom_usb_c_sockets)

Condition

La quantité de prises USB-C ne doit pas dépasser le nombre total de prises 16A prévues dans les pièces concernées.

custom_usb_c_sockets_count <= socket_points_count

Mode de prix

Cette prestation est une plus-value.

"pricing_mode": "upgrade"

Exclusions

Ne comprend pas :

  • création d’une prise supplémentaire ;
  • déplacement de prise ;
  • réseau informatique ;
  • chargeur externe.

ELEC-022 — Fourniture et pose d’un interrupteur variateur

Définition

Création d’un interrupteur variateur pour gérer l’intensité lumineuse d’un circuit compatible.

Unité

u

Déclencheur

Créer uniquement si demandé en personnalisation.

custom_dimmers[] exists

Règle de quantité

quantity = count(custom_dimmers)

Anti-double comptage

Un variateur remplace un interrupteur simple ou un va-et-vient sur le même circuit.

Si ELEC-022 est créé :

do not also count ELEC-004 for the same switch location

sauf si la base de prix fonctionne en plus-value.

Conditions

Le moteur doit ajouter un warning si le circuit concerné est composé de spots ou LED sans compatibilité connue :

{
"warning": "Compatibilité variateur à valider avec les luminaires sélectionnés"
}

Exclusions

Ne comprend pas :

  • luminaires compatibles ;
  • transformateur ;
  • domotique ;
  • variation connectée ;
  • reprise peinture.

ELEC-023 — Fourniture et pose d’un télérupteur encastré

Définition

Création d’un télérupteur encastré pour commander un éclairage depuis plusieurs boutons poussoirs.

Unité

u

Déclencheur

Créer uniquement si demandé en personnalisation.

custom_remote_switches[] exists

ou si le plan cible prévoit plus de deux points de commande pour un même éclairage.

Règle de quantité

quantity = count(remote_switch_circuits)

Un télérupteur correspond à un circuit d’éclairage commandé par plusieurs poussoirs, pas au nombre de poussoirs.

Anti-double comptage

Si ELEC-023 est généré pour un circuit :

do not generate ELEC-005 va-et-vient for same circuit

Exclusions

Ne comprend pas :

  • boutons poussoirs si chiffrés séparément ;
  • domotique ;
  • tableau électrique si installation au tableau ;
  • scénario connecté.

ELEC-024 — Provision changement / déplacement d’interphone

Définition

Provision pour changement, déplacement ou adaptation d’un interphone existant.

Unité

forfait

Déclencheur

Créer uniquement si demandé en personnalisation.

custom_intercom_change == true

ou si la description contient :

  • déplacer interphone ;
  • changer interphone ;
  • visiophone ;
  • interphone à déplacer.

Règle de quantité

quantity = 1

Type de ligne

Cette ligne doit être marquée comme provision.

"pricing_mode": "provision"

Exclusions

Ne comprend pas :

  • modification installation collective immeuble ;
  • intervention syndic ;
  • remplacement platine extérieure ;
  • câblage collectif ;
  • autorisation copropriété ;
  • visiophone premium sauf sélection produit.

ELEC-025 — Fourniture et pose d’une alimentation électrique pour volet électrique

Définition

Création d’une alimentation électrique pour volet roulant, store ou fermeture motorisée.

Unité

u

Déclencheur

Créer uniquement si demandé en personnalisation ou si le lot menuiserie / fermeture prévoit des volets électriques.

custom_electric_shutters[] exists

ou :

motorized_shutters[] exists

Règle de quantité

Priorité 1 :

quantity = count(custom_electric_shutters)

Priorité 2 :

quantity = count(motorized_shutters)

Si l’utilisateur sélectionne “volets électriques sur toutes fenêtres” :

quantity = count(window_openings)

Exclusions

Ne comprend pas :

  • volet électrique ;
  • moteur ;
  • pose volet ;
  • coffre ;
  • menuiserie ;
  • télécommande premium ;
  • domotique.

ELEC-026 — Fourniture et pose d’une alimentation électrique pour cave à vin

Définition

Création d’une alimentation électrique dédiée ou adaptée pour cave à vin.

Unité

u

Déclencheur

Créer uniquement si demandé en personnalisation.

custom_wine_cellar_power[] exists

ou si le lot cuisine / mobilier prévoit une cave à vin.

Règle de quantité

quantity = count(wine_cellar_power_points)

Par défaut :

quantity = 1

si une cave à vin est prévue mais que le nombre d’équipements n’est pas détaillé.

Exclusions

Ne comprend pas :

  • cave à vin ;
  • meuble ;
  • ventilation meuble ;
  • découpe cuisine ;
  • pose électroménager.

ELEC-027 — Fourniture et pose d’une alimentation électrique pour PAC ou climatisation

Définition

Création d’une alimentation électrique pour pompe à chaleur, climatisation ou unité technique CVC.

Unité

u

Déclencheur

Créer uniquement si demandé en personnalisation ou si le lot CVC prévoit une PAC ou une climatisation.

custom_heat_pump_or_ac_power[] exists

ou :

cvc_equipment.type in ["heat_pump", "pac", "air_conditioning", "clim"]

Règle de quantité

Priorité 1 :

quantity = count(custom_heat_pump_or_ac_power)

Priorité 2 :

quantity = count(cvc_power_required_units)

Si une seule PAC ou clim est prévue sans détail :

quantity = 1

Type de ligne

Si les caractéristiques électriques de la PAC ou clim ne sont pas connues :

{
"is_assumption": true,
"user_validation_required": true,
"assumption_reason": "Alimentation PAC/clim à valider selon puissance et matériel sélectionné"
}

Exclusions

Ne comprend pas :

  • pompe à chaleur ;
  • climatisation ;
  • liaison frigorifique ;
  • évacuation condensats ;
  • percement façade ;
  • support extérieur ;
  • mise en service ;
  • autorisation copropriété.
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version complète intégrant tableau par rangées, alimentations techniques et options personnalisées

Objectif du lot

Le lot 3 couvre les prestations liées à la mise en sécurité, à la rénovation, à la création ou à la modification de l’installation électrique intérieure.

Ce lot comprend :

  • mise en sécurité électrique ;
  • tableau électrique ;
  • prises de courant ;
  • interrupteurs ;
  • va-et-vient ;
  • points lumineux ;
  • circuits spécialisés ;
  • prises RJ45 ;
  • prises TV ;
  • spots ;
  • rubans LED ;
  • appareillage électrique selon gamme ;
  • alimentation radiateur électrique ;
  • alimentation ballon d’eau chaude électrique ;
  • alimentation VMC ou aérateur ;
  • alimentation miroir lumineux ;
  • prise commandée ;
  • prise USB-C ;
  • variateur ;
  • télérupteur ;
  • provision interphone ;
  • alimentation volet électrique ;
  • alimentation cave à vin ;
  • alimentation PAC ou climatisation.

Ce lot ne doit pas chiffrer :

  • peinture après saignées ;
  • faux plafond ;
  • rebouchage lourd hors prestation électrique ;
  • luminaires décoratifs hors sélection produit ;
  • domotique avancée non prévue ;
  • chauffage électrique complet si traité dans un lot CVC séparé ;
  • VMC complète si traitée dans lot ventilation, sauf alimentation électrique ;
  • pompe à chaleur ou climatisation complète si traitée dans lot CVC, sauf alimentation électrique.

Détermination du mode électrique

Le moteur doit d’abord déterminer le niveau d’intervention électrique.

"electrical_scope": "safety_only | partial_renovation | full_renovation"

5.1 Mise en sécurité uniquement

Déclencher :

"electrical_scope": "safety_only"

si la description contient :

  • mise en sécurité ;
  • mise aux normes partielle ;
  • conserver installation ;
  • seulement tableau ;
  • sécuriser électricité.

Dans ce cas, le moteur génère principalement :

  • ELEC-001 ;
  • éventuellement ELEC-002 ;
  • peu ou pas de nouveaux points.

5.2 Rénovation partielle

Déclencher :

"electrical_scope": "partial_renovation"

si seules certaines pièces sont rénovées ou si l’utilisateur personnalise des points électriques dans certaines pièces.

Dans ce cas :

electrical_points generated only for selected rooms

5.3 Rénovation complète

Déclencher :

"electrical_scope": "full_renovation"

si :

  • toutes les pièces sont rénovées ;
  • le projet est une rénovation complète ;
  • le projet implique cuisine + SDB + sols/murs ;
  • la description contient “tout refaire”, “rénovation complète”, “refaire électricité”.

Dans ce cas, le moteur génère :

  • tableau électrique ;
  • prises par pièce ;
  • points lumineux ;
  • interrupteurs ;
  • circuits spécialisés cuisine ;
  • alimentations techniques selon chauffage, ECS, VMC et SDB ;
  • RJ45 / TV selon gamme ;
  • appareillage selon gamme.

5.4 Cas par défaut

Si le mode électrique est inconnu mais que le projet est une rénovation intérieure complète :

{
"electrical_scope": "full_renovation",
"is_assumption": true,
"assumption_reason": "Rénovation électrique complète supposée dans le cadre d'une rénovation complète"
}

Si le projet est léger ou incertain :

{
"electrical_scope": "partial_renovation",
"is_assumption": true,
"assumption_reason": "Rénovation électrique partielle supposée"
}

Socle automatique par type de pièce

Le moteur doit générer un programme électrique cible par pièce.

6.1 Séjour / salon

Pour une pièce de type :

["living_room", "salon", "sejour"]

Créer :

ÉlémentÉcoStandardPremium
Prises 16Aminimumminimum + confortconfort renforcé
Point lumineux11 à 2selon scénario
Interrupteur11 à 2selon accès
RJ450 à 111 à 2
TV011
Règle de base

if living_room.area_m2 < 28:

sockets = 5

else:

sockets = 7

Ajustement qualité :

if quality_level == "standard":
sockets = sockets + 1
if quality_level == "premium":
sockets = sockets + 2

6.2 Chambre

Pour une pièce de type :

["bedroom", "chambre"]

Créer :

ÉlémentÉcoStandardPremium
Prises 16A345
Point lumineux111 à 2
Interrupteur111
RJ45011
TV00optionnel
Règle de base
sockets = 3

Ajustement qualité :

if quality_level == "standard":
sockets = 4
if quality_level == "premium":
sockets = 5

6.3 Cuisine

Pour une pièce de type :

["kitchen", "cuisine"]

Créer :

ÉlémentÉcoStandardPremium
Prises 16A générales3 à 666 à 8
Point lumineux11 à 2selon scénario
Interrupteur111 à 2
Circuit plaque111
Circuit four111
Circuit lave-vaisselle0 à 111
Circuit hotte0 à 111
RJ4500optionnel
Règle de base
if kitchen.area_m2 <= 4:
sockets = 3

else:

sockets = 6

Ajustement qualité :

if quality_level == "premium" and kitchen.area_m2 > 4:
sockets = 8

Circuits spécialisés à créer par défaut si la cuisine est rénovée :

create ELEC-007 circuit plaque cuisson

create ELEC-008 circuit four

create ELEC-008 circuit lave-vaisselle if quality_level in ["standard", "premium"]

Si la cuisine est très petite :

dishwasher_circuit = assumption

6.4 Salle de bain / salle d’eau

Pour une pièce de type :

["bathroom", "shower_room", "sdb", "sde"]

Créer :

ÉlémentÉcoStandardPremium
Prise sécurisée hors volume111 à 2
Point lumineux plafond / applique11 à 22
Interrupteur111
Alimentation miroir lumineux111
Alimentation sèche-servietteselon projetselon projetselon projet
Règle de base
sockets = 1
light_points = 1
switches = 1
mirror_power_points = 1

Ajustement qualité :

if quality_level == "premium":
light_points = 2

Ne pas créer automatiquement un sèche-serviette électrique si le mode chauffage ou la personnalisation ne l’indique pas.

6.5 WC

Pour une pièce ou subspace de type :

["wc", "toilet"]

Créer :

ÉlémentÉcoStandardPremium
Point lumineux111
Interrupteur111
Prise 16A00 à 11
Règle de base
light_points = 1
switches = 1

Prise uniquement si :

quality_level == "premium"

ou si WC lavant prévu.

6.6 Entrée / couloir / dégagement

Pour une pièce ou subspace de type :

["entry", "entree", "corridor", "hall", "degagement"]

Créer :

ÉlémentÉcoStandardPremium
Point lumineux11 à 2selon longueur
Interrupteur111
Va-et-vientselon accèsselon accèsselon accès
Prise 16A0 à 111

Règle :

if area_m2 > 4:

sockets = 1

else:

sockets = 0

Si la pièce a deux accès distincts :

create ELEC-005 va-et-vient

Sinon :

create ELEC-004 interrupteur simple

6.7 Bureau

Pour une pièce de type :

["office", "bureau"]

Créer :

ÉlémentÉcoStandardPremium
Prises 16A345 à 6
Point lumineux111 à 2
Interrupteur111
RJ45112
TV00optionnel
Règle de base
sockets = 3
rj45 = 1

Ajustement qualité :

if quality_level == "standard":
sockets = 4
if quality_level == "premium":
sockets = 6
rj45 = 2

6.8 Dressing / placard / cellier / buanderie

Pour les subspaces ou pièces de type :

["dressing", "closet", "cellier", "buanderie", "utility"]

Créer uniquement si la zone est une vraie pièce accessible.

Règle :

if area_m2 > 4:

light_points = 1
switches = 1
sockets = 1

else:

no automatic electrical point

Buanderie :

create specialized circuit for washing_machine if washing_machine_expected == true

Règles anti-double comptage

8.1 Tableau et circuits

ELEC-002 couvre le tableau.

ELEC-007, ELEC-008, ELEC-016, ELEC-017, ELEC-018, ELEC-025, ELEC-026 et ELEC-027 couvrent les alimentations ou circuits spécifiques.

Ne pas intégrer deux fois les protections électriques si la base de prix les inclut déjà dans ELEC-002 ou dans les circuits.

Le paramètre suivant doit exister :

{
"circuit_protection_included_in": "panel | circuit | separate"
}

8.2 Points et appareillage

Deux modes possibles :

{
"apparatus_pricing_mode": "included | separate"
}

Si :

"apparatus_pricing_mode": "included"

alors ELEC-013 à ELEC-015 ne sont pas créés.

Si :

"apparatus_pricing_mode": "separate"

alors ELEC-003 à ELEC-012 sont chiffrés hors appareillage visible, et ELEC-013 à ELEC-015 ajoutent la gamme esthétique.

8.3 Spots et points lumineux

ELEC-006 = point lumineux classique.

ELEC-011 = spot encastré.

Si une pièce est éclairée uniquement par spots :

do not also create ELEC-006 for the same lighting zone

8.4 Variateur et interrupteur simple

ELEC-022 remplace ELEC-004 sur le même point de commande.

Si la base de prix fonctionne en plus-value, ELEC-004 peut rester et ELEC-022 devient une plus-value.

8.5 Télérupteur et va-et-vient

ELEC-023 remplace ELEC-005 pour le même circuit.

Ne pas facturer va-et-vient et télérupteur sur un même circuit, sauf si la base de prix distingue boutons poussoirs et télérupteur.

8.6 Prise USB-C

ELEC-021 est une plus-value sur ELEC-003.

Ne pas créer une prise standard supplémentaire si ELEC-021 correspond à une prise déjà comptabilisée.

8.7 Ruban LED

ELEC-012 ne remplace pas ELEC-006 sauf si la personnalisation indique que le ruban LED est l’éclairage principal.

8.8 Faux plafond

ELEC-011 ne doit pas inclure le faux plafond.

Si spots encastrés :

create dependency toward PLA-006 or PLA-007

Interactions avec les autres lots

9.1 Avec lot 2 — Cloisons / faux plafonds

Si spots encastrés :

trigger possible PLA-006 faux plafond

Si nouvelles cloisons :

electrical points can attach to new partitions

Si saignées importantes :

trigger possible PLA-010 reprise localisée

9.2 Avec lot cuisine

Cuisine rénovée déclenche :

  • circuit plaque ;
  • circuit four ;
  • circuit lave-vaisselle selon gamme ;
  • prises plan de travail ;
  • hotte selon gamme ;
  • alimentation cave à vin si demandée ou prévue.

9.3 Avec lot salle de bain

Salle de bain rénovée déclenche :

  • point lumineux ;
  • prise sécurisée ;
  • alimentation miroir ;
  • alimentation sèche-serviette si prévu.

9.4 Avec lot peinture

Les reprises de saignées et rebouchages doivent alimenter les surfaces à reprendre, mais la peinture finale reste dans le lot peinture.

9.5 Avec lot CVC

Si chauffage électrique, VMC, PAC ou climatisation :

  • ELEC-016 alimentation radiateur ;
  • ELEC-018 alimentation VMC ou aérateur ;
  • ELEC-027 alimentation PAC ou climatisation.

9.6 Avec lot menuiserie / fermeture

Si volets électriques prévus :

  • ELEC-025 alimentation volet électrique.

Gestion du niveau Éco / Standard / Premium

Le niveau de qualité influence :

  • nombre de prises ;
  • nombre de RJ45 ;
  • nombre de points confort ;
  • niveau d’appareillage ;
  • présence de TV ;
  • présence éventuelle de LED ou spots uniquement si scénario cible.

10.1 Éco

Règle :

Respect du socle minimum par pièce

Appareillage entrée de gamme

Peu ou pas de confort additionnel

10.2 Standard

Règle :

Socle minimum + confort raisonnable

RJ45 séjour / bureau / chambres selon cas

Appareillage standard

10.3 Premium

Règle :

Plus de prises

Plus de RJ45

Appareillage premium

Scénarios lumineux possibles

Options décoratives si personnalisées

Le niveau premium ne doit pas créer automatiquement des spots, LED, volets électriques, cave à vin, PAC ou clim sans intention de conception ou personnalisation.

Format de sortie attendu

Chaque ligne du lot 3 doit respecter ce format :

{
"lot": "Électricité",
"code": "ELEC-003",
"label": "Point prise 16A",
"room_id": "room_2",
"room_name": "Chambre",
"unit": "point",
"quantity": 4,
"quantity_formula": "automatic_socket_count_by_room_type",
"pricing_mode": "unit_price",
"source": "business_rule_room_type",
"confidence": 0.85,
"is_assumption": true,
"assumption_reason": "Nombre de prises généré selon type de pièce et niveau de qualité",
"user_validation_required": false,
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Pour ELEC-002, ajouter :

{
"electrical_panel_rows_count": 3,
"panel_rows_formula": "rows_by_surface",
"project_surface_m2": 62
}

Pour les options personnalisées, source :

"source": "client_personalization"

Règles de validation

Avant génération du lot 3, le moteur doit vérifier :

{
"has_validated_rooms": true,
"has_room_types": true,
"has_room_surfaces": true,
"has_quality_level": true,
"has_electrical_scope": true,
"has_project_surface": true
}

Si quality_level est absent :

quality_level = "standard"

avec hypothèse visible.

Si electrical_scope est absent :

derive electrical_scope from project_description and renovation density

Si project_surface_m2 est absent :

use sum(rooms.area_m2)

Si les pièces ou surfaces sont absentes :

block room-based electrical pricing

Message :

Impossible de générer le lot électricité sans pièces et surfaces validées.

Résumé des données nécessaires

Obligatoire

DonnéeSource
pièces validéesJSON écran 2
type de pièceJSON écran 2
surface de pièceJSON écran 2
surface totale projetécran 0 ou somme JSON
niveau de qualitéécran 0
type chauffageécran 0
type ECSécran 0
description projetécran 0

Automatiquement déduit

DonnéeSource
nombre de rangées tableausurface du bien
nombre de prisestype pièce + surface + qualité
alimentation radiateurchauffage électrique ou lot CVC
alimentation ballonECS électrique
alimentation VMC/aérateurtoujours 1 par projet électrique
alimentation miroir1 par SDB/SDE
circuits cuisinecuisine détectée ou personnalisée

Optionnel utile

DonnéeSource
diagnostic électriqueupload client
photo tableau électriqueupload client
plan électrique ciblepersonnalisation
emplacement cuisine cibleplan cible
choix spots / LEDpersonnalisation
choix appareillagebase produits

Personnalisation uniquement

PrestationSource
prise commandéepersonnalisation
prise USB-Cpersonnalisation
variateurpersonnalisation
télérupteurpersonnalisation
interphonepersonnalisation
volet électriquepersonnalisation ou lot menuiserie
cave à vinpersonnalisation ou lot cuisine
PAC / climpersonnalisation ou lot CVC

Non demandé au client en MVP

DonnéeRaison
nombre exact de prises souhaitéesgénéré automatiquement puis personnalisable
marque appareillagedéduit par gamme / produit
section de câblegérée par base de prix / électricien
détail tableau completgénéré selon circuits
longueur exacte câblesnon nécessaire pour estimation instantanée
schéma unifilairenon nécessaire au premier chiffrage

Règle produit finale

Le lot 3 doit permettre un chiffrage instantané à partir des pièces validées.

Le moteur doit appliquer cette logique :

1. Identifier les pièces.

2. Déterminer le mode électrique.

3. Calculer la surface totale du bien.

4. Définir le tableau électrique et son nombre de rangées.

5. Générer un programme électrique cible par pièce.

6. Ajouter les circuits spécialisés selon cuisine, ECS, chauffage et équipements.

7. Ajouter les alimentations techniques automatiques :

  • radiateurs si chauffage électrique ;
  • ballon si ECS électrique ;
  • VMC/aérateur toujours 1 ;
  • miroir 1 par salle de bain.

8. Ajouter les options personnalisées uniquement si demandées.

9. Ajouter l’appareillage selon gamme.

10. Créer les dépendances vers cloisons, faux plafonds et finitions.

11. Marquer les lignes automatiques comme hypothèses personnalisables.

Le devis doit rester clair :

Les quantités électriques sont générées automatiquement selon les pièces, les surfaces, le mode de chauffage, le type d’eau chaude et le niveau de qualité. Elles peuvent être ajustées dans la personnalisation.

Lot 4

Plomberie

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
PLO-001Création alimentation eau froide / eau chaudepoint10%Règle définie + choix client
PLO-002Création évacuation PVCpoint10%Règle définie + choix client
PLO-003Déplacement arrivée / évacuation existantepoint10%Choix client
PLO-004Raccordement et pose WC suspenduu10%Règle définie + choix client
PLO-005Raccordement et pose WC à poseru10%Règle définie + choix client
PLO-011Pose ballon d’eau chaudeu5,5%Règle définie + choix client
PLO-012Raccordement électroménageru10%Règle définie + choix client
PLO-013Pose robinet / vanne d’arrêtu10%Règle définie
PLO-014Déplacement et raccordement des WC sur colonne existanteu10%Choix client
PLO-015Remplacement vanne d’arrêt générale logementu10%Choix client
PLO-016Raccordement d’une pompe de relevageu10%Choix client
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

5.1 Données issues du JSON validé du plan

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"type": null,
"name": null,
"visual_evidence": {
"sanitary_elements": [],
"kitchen_elements": [],
"fixed_features": []
},
"layout_fidelity": {},
"openings": []
}

5.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"floor_count": null,
"hot_water_type": null,
"heating_type": null,
"project_description": null,
"quality_level": null,
"property_floor_level": null
}

5.3 Données issues de l’écran 2

Le moteur utilise :

{
"validated_rooms": [],
"validated_fixtures": [],
"rooms_to_renovate": [],
"room_type_overrides": [],
"fixture_overrides": []
}

5.4 Données issues de la personnalisation

Le moteur peut recevoir :

{
"plumbing_customization": {
"target_fixtures": [],
"moved_fixtures": [],
"new_fixtures": [],
"removed_fixtures": [],
"wc_type": null,
"wc_moved": false,
"replace_main_shutoff_valve": false,
"water_heater_replacement": false,
"lift_pump_required": false,
"appliances_to_connect": []
}
}
3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

Aucune donnée client supplémentaire obligatoire n’est recommandée pour le MVP.

La précision du lot 4 doit venir principalement :

  • du JSON validé ;
  • des équipements sanitaires détectés ;
  • de la personnalisation ;
  • de la comparaison entre état existant et projet cible.

Règle produit :

Pas de déplacement demandé ou détecté = pas de déplacement de plomberie inventé.

Variables calculées

Avant de générer le lot 4, le moteur doit calculer :

{
"plumbing_scope": null,
"water_supply_points_count": null,
"evacuation_points_count": null,
"moved_plumbing_points_count": null,
"wc_suspended_count": null,
"wc_floor_mounted_count": null,
"wc_moved_count": null,
"sink_like_fixture_count": null,
"shutoff_valve_count": null,
"main_shutoff_valve_replacement_count": null,
"water_heater_count": null,
"appliance_connection_count": null,
"lift_pump_connection_count": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

PLO-001 — Création alimentation eau froide / eau chaude

Définition

Création ou remplacement d’un point d’alimentation eau froide / eau chaude ou eau froide seule selon l’équipement.

Unité

point

Déclencheurs

Créer si un équipement sanitaire ou cuisine nécessite une alimentation en eau.

Déclencheurs possibles

target_fixtures[] exists

ou :

validated_fixtures[] in renovated rooms

ou :

plumbing_scope == "full_renovation"

Règle de quantité

quantity = count(water_supply_points)

Un équipement EF/EC compte pour 1 point d’alimentation.

Exemples :

ÉquipementQuantité PLO-001
évier1
lavabo1
vasque1
lave-main1
douche1
baignoire1
lave-vaisselle1
lave-linge1
ballon d’eau chaude1 si réseau à créer

Cas plomberie conservée

Si l’équipement reste au même emplacement et que les réseaux sont explicitement conservés :

do not create PLO-001

Anti-double comptage

Si PLO-003 est généré pour un équipement déplacé :

do not create PLO-001 for the same moved fixture

sauf si la base de prix fonctionne en mode détaillé.

Exclusions

Ne comprend pas :

  • pose équipement sanitaire visible ;
  • robinetterie visible ;
  • meuble vasque ;
  • receveur ;
  • baignoire ;
  • raccordement final électroménager ;
  • carrelage ;
  • coffrage ;
  • peinture.

PLO-002 — Création évacuation PVC

Définition

Création ou remplacement d’un point d’évacuation PVC pour équipement sanitaire ou électroménager.

Unité

point

Déclencheurs

Créer si un équipement nécessite une évacuation.

Déclencheurs possibles

target_fixtures[] exists

ou :

validated_fixtures[] in renovated rooms

ou :

plumbing_scope == "full_renovation"

Règle de quantité

quantity = count(evacuation_points)

Exemples :

ÉquipementQuantité PLO-002
évier1
lavabo1
vasque1
lave-main1
douche1
baignoire1
lave-vaisselle1
lave-linge1

Les WC sont exclus de PLO-002 par défaut.

Cas plomberie conservée

Si l’équipement reste au même emplacement et que l’évacuation est explicitement conservée :

do not create PLO-002

Anti-double comptage

Si PLO-003 est généré pour un équipement déplacé :

do not create PLO-002 for the same moved fixture

sauf si la base de prix fonctionne en mode détaillé.

Exclusions

Ne comprend pas :

  • raccordement WC ;
  • colonne EU/EV ;
  • pompe de relevage ;
  • receveur ;
  • siphon visible ;
  • pose équipement ;
  • carrelage ;
  • coffrage.

PLO-003 — Déplacement arrivée / évacuation existante

Définition

Déplacement d’une alimentation et/ou évacuation existante pour un équipement sanitaire ou cuisine, hors WC.

Unité

point

Déclencheurs

Créer si un équipement existant change de position dans le projet cible.

moved_fixtures[] exists

ou si la comparaison entre plan existant et plan cible indique un déplacement.

Exemples :

  • évier déplacé ;
  • lavabo déplacé ;
  • vasque déplacée ;
  • douche déplacée ;
  • baignoire déplacée ;
  • lave-linge déplacé ;
  • lave-vaisselle déplacé.

Exclusion WC

Les WC déplacés doivent être traités par PLO-014.

Ne pas utiliser PLO-003 pour un WC.

Règle de déplacement

Le moteur doit comparer la position source et la position cible.

movement_distance_m = distance(source_fixture.centroid, target_fixture.centroid)

Créer PLO-003 si :

movement_distance_m > plumbing_movement_threshold_m

Seuil recommandé paramétrable :

"plumbing_movement_threshold_m": 0.50

Règle de quantité

quantity = count(moved_non_wc_plumbing_fixtures)

Anti-double comptage

Si PLO-003 est généré pour un équipement :

do not also create PLO-001 and PLO-002 for the same equipment

sauf si la base de prix est en mode détaillé.

Exclusions

Ne comprend pas :

  • déplacement WC ;
  • création colonne ;
  • pompe de relevage ;
  • pose équipement ;
  • coffrage ;
  • carrelage ;
  • reprise peinture.

PLO-004 — Raccordement et pose WC suspendu

Définition

Raccordement et pose d’un WC suspendu sur attente existante ou réseau prévu.

Unité

u

Déclencheurs

Créer si :

target_fixture.type == "wall_hung_wc"

ou si :

wc_type == "suspended"

ou si le niveau de qualité implique WC suspendu par défaut.

Règle par défaut selon qualité :

quality_levelWC par défaut
ecoWC à poser
standardWC suspendu
premiumWC suspendu

Règle de quantité

quantity = count(wall_hung_wc)

Cas WC déplacé

Si le WC suspendu change de place :

create PLO-014 instead of PLO-004

sauf si la base de prix fonctionne en mode détaillé.

Exclusions

Ne comprend pas :

  • déplacement colonne ;
  • déplacement réseau EU/EV ;
  • coffrage bâti-support si traité en lot 2 ;
  • habillage ;
  • carrelage ;
  • peinture ;
  • fourniture WC si produit séparé ;
  • alimentation électrique WC lavant.

PLO-005 — Raccordement et pose WC à poser

Définition

Raccordement et pose d’un WC à poser sur attente existante ou réseau prévu.

Unité

u

Déclencheurs

Créer si :

target_fixture.type == "floor_mounted_wc"

ou si :

wc_type == "floor_mounted"

ou si :

quality_level == "eco"

et aucun choix de WC suspendu n’est fait.

Règle de quantité

quantity = count(floor_mounted_wc)

Cas WC déplacé

Si le WC à poser change de place :

create PLO-014 instead of PLO-005

sauf si la base de prix fonctionne en mode détaillé.

Exclusions

Ne comprend pas :

  • déplacement colonne ;
  • déplacement réseau EU/EV ;
  • carrelage ;
  • peinture ;
  • fourniture WC si produit séparé ;
  • broyeur ;
  • pompe de relevage.

PLO-011 — Pose ballon d’eau chaude

Définition

Pose et raccordement plomberie d’un ballon d’eau chaude.

Unité

u

Déclencheurs

Créer si :

hot_water_type in ["electric_water_heater", "ballon_electrique", "ecs_electrique"]

et si le projet prévoit le remplacement ou la création du ballon.

Créer aussi si :

water_heater_replacement == true

ou si :

target_equipment includes "water_heater"

Règle de quantité

quantity = count(water_heaters)

Par défaut :

quantity = 1

si un ballon est prévu mais non détaillé.

Cas ECS électrique indiquée en écran 0

Si hot_water_type indique ECS électrique mais que le remplacement n’est pas explicitement demandé :

{
"is_assumption": true,
"assumption_reason": "Ballon d’eau chaude supposé dans le cadre de la rénovation plomberie"
}

Exclusions

Ne comprend pas :

  • alimentation électrique du ballon ;
  • tableau électrique ;
  • groupe de sécurité si séparé ;
  • évacuation spécifique si séparée ;
  • support renforcé ;
  • modification importante plomberie ;
  • dépose ancien ballon si traitée en démolition.

PLO-012 — Raccordement électroménager

Définition

Raccordement plomberie final d’un appareil électroménager nécessitant eau et/ou évacuation.

Unité

u

Équipements concernés

[

"dishwasher",

"washing_machine",

"fridge_water",

"steam_oven"

]

Déclencheurs

Créer si :

appliances_to_connect[] exists

ou si cuisine rénovée avec lave-vaisselle prévu.

Créer aussi si buanderie avec lave-linge prévu.

Règle de quantité

quantity = count(appliances_to_connect)

Règle automatique cuisine

Si cuisine rénovée :

if quality_level in ["standard", "premium"]:

dishwasher_connection = 1

Règle automatique buanderie

Si buanderie détectée :

washing_machine_connection = 1

Exclusions

Ne comprend pas :

  • création arrivée EF ;
  • création évacuation PVC ;
  • alimentation électrique ;
  • appareil électroménager ;
  • pose cuisine ;
  • meuble ;
  • découpe plan de travail.

Ces éléments sont traités dans d’autres lots.

PLO-013 — Pose robinet / vanne d’arrêt

Définition

Pose de robinets ou vannes d’arrêt sous équipement sanitaire.

Unité

u

Déclencheurs

Créer automatiquement pour chaque :

  • évier ;
  • lavabo ;
  • vasque ;
  • lave-main.

Types concernés :

[

"evier",

"sink",

"lavabo",

"vasque",

"lave_main"

]

Règle de quantité

La règle cible est :

2 unités par évier, lavabo, vasque ou lave-main

Formule
quantity = sink_like_fixture_count × 2

Exemples :

ÉquipementQuantité PLO-013
1 évier2
1 lavabo2
1 lave-main2
2 vasques4

Exclusions

Ne comprend pas :

  • robinetterie visible ;
  • mitigeur ;
  • siphon ;
  • meuble ;
  • pose vasque ;
  • raccordement électroménager.

PLO-014 — Déplacement et raccordement des WC sur colonne existante

Définition

Déplacement d’un WC et raccordement sur une colonne existante.

Unité

u

Déclencheurs

Créer uniquement si le WC change de place à la demande du client par rapport au plan de départ.

Déclencheur principal
wc_moved == true

ou comparaison source / cible :

distance(source_wc.position, target_wc.position) > wc_movement_threshold_m

Seuil recommandé paramétrable :

"wc_movement_threshold_m": 0.50

Condition obligatoire

Cette prestation suppose une colonne existante exploitable.

Si la colonne existante n’est pas identifiée :

{
"is_assumption": true,
"user_validation_required": true,
"assumption_reason": "Colonne existante non localisée avec certitude"
}

Règle de quantité

quantity = count(moved_wc)

Anti-double comptage

Si PLO-014 est généré pour un WC :

do not also generate PLO-004 or PLO-005 for the same WC

sauf si la base de prix fonctionne en mode détaillé.

Exclusions

Ne comprend pas :

  • création nouvelle colonne ;
  • broyeur ;
  • pompe de relevage ;
  • étude faisabilité pente ;
  • coffrage ;
  • carrelage ;
  • peinture ;
  • autorisation copropriété ;
  • WC fourni si produit séparé.

PLO-015 — Remplacement vanne d’arrêt générale du logement

Définition

Remplacement de la vanne d’arrêt générale du logement.

Unité

u

Déclencheurs

Créer uniquement si demandé par le client.

replace_main_shutoff_valve == true

ou si la description contient :

  • remplacer vanne générale ;
  • changer arrivée générale ;
  • changer robinet d’arrêt général ;
  • vanne générale défectueuse.

Règle de quantité

quantity = 1

Ne jamais créer automatiquement

Cette prestation ne doit pas être générée automatiquement à partir du plan seul.

Exclusions

Ne comprend pas :

  • intervention colonne collective ;
  • coupure générale immeuble ;
  • autorisation syndic ;
  • modification nourrice complète ;
  • remplacement compteur ;
  • travaux plomb / ancien réseau spécifique.

PLO-016 — Raccordement d’une pompe de relevage

Définition

Raccordement plomberie d’une pompe de relevage.

Unité

u

Déclencheurs

Créer si :

lift_pump_required == true

ou si le projet cible prévoit une pièce d’eau, WC ou évacuation nécessitant un relevage.

Créer aussi si le lot technique ou la personnalisation indique :

pump_equipment.type == "lift_pump"

Règle de quantité

quantity = count(lift_pumps)

Par défaut :

quantity = 1

si une pompe de relevage est prévue mais non détaillée.

Conditions

Si la pompe est déduite automatiquement mais non confirmée :

{
"is_assumption": true,
"user_validation_required": true,
"assumption_reason": "Pompe de relevage à confirmer selon pente et évacuation disponible"
}

Exclusions

Ne comprend pas :

  • alimentation électrique pompe ;
  • pompe elle-même si produit séparé ;
  • coffrage ;
  • percement ;
  • création colonne ;
  • évacuation longue distance ;
  • maintenance pompe.
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version recentrée sur réseaux, alimentations, évacuations et raccordements techniques

Objectif du lot

Le lot 4 couvre les prestations de plomberie technique liées :

  • aux alimentations eau froide / eau chaude ;
  • aux évacuations PVC ;
  • aux déplacements de réseaux ;
  • aux raccordements WC ;
  • aux ballons d’eau chaude ;
  • aux raccordements électroménagers ;
  • aux vannes d’arrêt ;
  • aux raccordements de pompe de relevage.

Ce lot ne doit pas chiffrer les équipements visibles de salle de bain qui relèvent du lot Salle de bain.

Prestations conservées dans le lot 4

Les prestations conservées sont :

CodePrestation
PLO-001Création alimentation eau froide / eau chaude
PLO-002Création évacuation PVC
PLO-003Déplacement arrivée / évacuation existante
PLO-004Raccordement et pose WC suspendu
PLO-005Raccordement et pose WC à poser
PLO-011Pose ballon d’eau chaude
PLO-012Raccordement électroménager
PLO-013Pose robinet / vanne d’arrêt
PLO-014Déplacement et raccordement des WC sur colonne existante
PLO-015Remplacement vanne d’arrêt générale du logement
PLO-016Raccordement d’une pompe de relevage

Détermination du périmètre plomberie

Le moteur doit d’abord déterminer le niveau d’intervention plomberie.

"plumbing_scope": "none | partial_renovation | full_renovation"

8.1 Aucun travaux plomberie

Déclencher :

"plumbing_scope": "none"

si aucune pièce humide, cuisine, WC, ballon, électroménager ou équipement hydraulique n’est concerné.

Dans ce cas, ne générer aucune ligne PLO.

8.2 Rénovation partielle plomberie

Déclencher :

"plumbing_scope": "partial_renovation"

si seules certaines pièces sont concernées :

  • cuisine seule ;
  • salle de bain seule ;
  • WC seul ;
  • raccordement électroménager ;
  • ballon d’eau chaude ;
  • pompe de relevage.

8.3 Rénovation complète plomberie

Déclencher :

"plumbing_scope": "full_renovation"

si le projet implique :

  • rénovation complète cuisine + salle de bain ;
  • remplacement des réseaux ;
  • déplacement de plusieurs équipements ;
  • création ou refonte complète des points d’eau.

8.4 Cas par défaut

Si cuisine, SDB ou WC sont rénovés et que le périmètre plomberie n’est pas précisé :

{
"plumbing_scope": "partial_renovation",
"is_assumption": true,
"assumption_reason": "Rénovation plomberie partielle déduite des pièces humides concernées"
}

Identification des équipements plomberie

Le moteur doit identifier les équipements nécessitant des alimentations ou évacuations.

9.1 Équipements avec alimentation EF/EC

Créer un point d’alimentation pour :

[

"evier",

"sink",

"lavabo",

"vasque",

"lave_main",

"douche",

"shower",

"baignoire",

"bathtub"

]

9.2 Équipements avec alimentation EF seule

Créer un point d’alimentation EF seule pour :

[

"wc",

"dishwasher",

"washing_machine",

"fridge_water",

"water_heater"

]

9.3 Équipements avec évacuation

Créer un point d’évacuation pour :

[

"evier",

"sink",

"lavabo",

"vasque",

"lave_main",

"douche",

"shower",

"baignoire",

"bathtub",

"dishwasher",

"washing_machine"

]

Les WC sont traités par PLO-004, PLO-005 ou PLO-014, et ne doivent pas être comptés automatiquement dans PLO-002 sauf mode détaillé spécifique.

Règles anti-double comptage

11.1 PLO-001 / PLO-002 / PLO-003

Si PLO-003 est généré pour un équipement déplacé :

do not also create PLO-001 and PLO-002 for the same equipment

sauf si mode détaillé activé.

11.2 WC

Si PLO-014 est généré :

do not generate PLO-004 or PLO-005 for the same WC

Si WC non déplacé :

use PLO-004 or PLO-005 depending on WC type

11.3 Salle de bain

Le lot Salle de bain gère :

  • pose meuble vasque ;
  • receveur ;
  • douche italienne ;
  • baignoire ;
  • robinetterie visible.

Le lot 4 gère uniquement :

  • alimentation ;
  • évacuation ;
  • vannes ;
  • raccordements techniques.

11.4 Ballon d’eau chaude

PLO-011 gère la pose plomberie du ballon.

L’alimentation électrique du ballon doit être traitée dans le lot Électricité.

11.5 Pompe de relevage

PLO-016 gère le raccordement plomberie.

L’alimentation électrique doit être traitée dans le lot Électricité.

Le coffrage éventuel doit être traité dans le lot Cloisons / Doublages / Faux plafonds.

Interactions avec les autres lots

12.1 Avec lot Salle de bain

Les équipements visibles de salle de bain génèrent des besoins en alimentation et évacuation.

Exemples :

Équipement SDBLot Salle de bainLot 4
meuble vasquepose visiblePLO-001 + PLO-002 + PLO-013
douchepose receveur ou italiennePLO-001 + PLO-002
baignoirepose visiblePLO-001 + PLO-002
robinetteriepose visiblehors PLO-013 si mitigeur

12.2 Avec lot Cuisine

Cuisine rénovée peut générer :

  • PLO-001 alimentation évier ;
  • PLO-002 évacuation évier ;
  • PLO-013 vannes arrêt évier ;
  • PLO-012 raccordement lave-vaisselle.

12.3 Avec lot Électricité

Certaines prestations plomberie doivent générer une dépendance électrique :

Prestation plomberieDépendance électrique
PLO-011 ballonalimentation ballon
PLO-016 pompe relevagealimentation pompe
électroménagercircuit spécialisé selon équipement

12.4 Avec lot Cloisons / Coffrages

Certaines prestations plomberie peuvent générer :

  • coffrage technique ;
  • trappe de visite ;
  • reprise localisée support.

Exemples :

Réseau apparent -> PLA-008 coffrage technique

Vanne inaccessible -> PLA-009 trappe de visite

Gestion du niveau Éco / Standard / Premium

Le niveau de qualité influence principalement :

  • type de WC par défaut ;
  • nombre d’équipements prévus ;
  • présence d’équipements complémentaires ;
  • degré de remplacement des réseaux.

13.1 Éco

Règle :

WC à poser par défaut

Pas de déplacement réseau sans demande

Réseaux créés uniquement si nécessaires

13.2 Standard

Règle :

WC suspendu par défaut

Réseaux repris dans les pièces rénovées

Raccordements électroménagers standards

13.3 Premium

Règle :

WC suspendu par défaut

Réseaux repris proprement

Options techniques possibles si personnalisées

Le niveau premium ne doit pas créer automatiquement :

  • déplacement WC ;
  • pompe de relevage ;
  • remplacement vanne générale ;
  • ballon ;
  • équipements non demandés.

Format de sortie attendu

Chaque ligne du lot 4 doit respecter ce format :

{
"lot": "Plomberie",
"code": "PLO-001",
"label": "Création alimentation eau froide / eau chaude",
"room_id": "room_3",
"room_name": "Cuisine",
"unit": "point",
"quantity": 1,
"quantity_formula": "count(water_supply_points)",
"pricing_mode": "unit_price",
"source": "validated_fixtures_or_target_fixtures",
"confidence": 0.85,
"is_assumption": true,
"assumption_reason": "Point d’eau généré selon équipement détecté ou prévu",
"user_validation_required": false,
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Pour PLO-014 :

{
"lot": "Plomberie",
"code": "PLO-014",
"label": "Déplacement et raccordement des WC sur colonne existante",
"unit": "u",
"quantity": 1,
"source": "client_personalization_or_target_layout",
"confidence": 0.65,
"is_assumption": true,
"assumption_reason": "Colonne existante à confirmer",
"user_validation_required": true
}

Règles de validation

Avant génération du lot 4, le moteur doit vérifier :

{
"has_validated_rooms": true,
"has_room_types": true,
"has_wet_rooms_or_kitchen": true,
"has_validated_fixtures_or_target_fixtures": true
}

Si aucune pièce humide, cuisine, WC, ballon, électroménager ou pompe n’est détecté :

do not generate plumbing lot

Si les équipements sont détectés mais non validés :

{
"is_assumption": true,
"user_validation_required": true
}

Si un déplacement est demandé mais que les positions source/cible sont indisponibles :

{
"warning": "Déplacement plomberie demandé mais distance non calculable",
"pricing_mode": "provision"
}

Résumé des données nécessaires

Obligatoire

DonnéeSource
pièces validéesJSON écran 2
type de pièceJSON écran 2
cuisine / SDB / WC détectésJSON validé
équipements sanitaires détectés ou ciblésJSON / personnalisation
type ECSécran 0
niveau de qualitéécran 0

Automatiquement déduit

DonnéeSource
points EF/ECfixtures validées
points évacuationfixtures validées
vannes d’arrêt2 par évier/lavabo/lave-main
WC suspendu ou à poserqualité ou personnalisation
ballonECS ou personnalisation
électroménager à raccordercuisine/buanderie/personnalisation
pompe relevagepersonnalisation ou contrainte technique

Personnalisation uniquement

PrestationSource
déplacement WCpersonnalisation / plan cible
remplacement vanne généralepersonnalisation
pompe de relevagepersonnalisation ou scénario technique
déplacement spécifique réseauxpersonnalisation / plan cible

Non demandé au client en MVP

DonnéeRaison
diamètre exact tuyauxgéré par entreprise / base technique
pente exacte évacuationnon déductible automatiquement
matériau réseau existanttrop technique
position exacte colonne EU/EVdéduite si possible, sinon hypothèse
état vanne généraledemandé seulement si remplacement voulu
longueur exacte réseauxestimation par point ou par déplacement

Règle produit finale

Le lot 4 doit rester centré sur la plomberie technique.

Le moteur doit appliquer cette logique :

1. Identifier les pièces humides, cuisine, WC et équipements.

2. Générer les alimentations EF/EC nécessaires.

3. Générer les évacuations nécessaires.

4. Identifier les équipements déplacés.

5. Traiter les WC séparément des autres évacuations.

6. Générer les vannes d’arrêt : 2 par évier/lavabo/lave-main.

7. Générer ballon, électroménager et pompe si nécessaires.

8. Envoyer les équipements visibles vers les lots Salle de bain ou Cuisine.

9. Créer les dépendances vers Électricité, Cloisons/Coffrages et Finitions.

Le devis doit rester clair :

Les prestations de plomberie sont générées selon les équipements détectés, validés ou personnalisés. Les équipements visibles de salle de bain sont chiffrés dans le lot Salle de bain.

Lot 5

Chauffage / Ventilation / Climatisation

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
CVC-002Pose radiateur électriqueu5,5%Règle définie + choix client
CVC-003Pose radiateur eau chaudeu5,5%Règle définie + choix client
CVC-004Déplacement radiateur eau chaudeu5,5%Choix client
CVC-005Création bouche VMCu5,5%Règle définie
CVC-006Pose extracteur pièce humideu5,5%Règle définie + choix client
CVC-007Pose VMC simple flux appartementforfait5,5%Règle définie + choix client
CVC-008Attente climatisationu/forfait5,5%Choix client
CVC-009Pose chaudière gaz condensationu5,5%Choix client
CVC-010Pose robinet thermostatique radiateur eauu5,5%Règle définie + choix client
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

4.1 Données issues du JSON validé du plan

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"type": null,
"name": null,
"visual_evidence": {
"fixed_features": [],
"sanitary_elements": [],
"kitchen_elements": []
},
"layout_fidelity": {}
}

4.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"floor_count": null,
"hot_water_type": null,
"heating_type": null,
"project_description": null,
"quality_level": null,
"property_floor_level": null
}

4.3 Données issues de l’écran 2

Le moteur utilise :

{
"validated_rooms": [],
"rooms_to_renovate": [],
"room_type_overrides": [],
"room_area_overrides": [],
"validated_equipment": []
}

4.4 Données issues de la personnalisation

Le moteur peut recevoir :

{
"cvc_customization": {
"heating_mode_target": null,
"radiators_to_install": [],
"radiators_to_move": [],
"water_radiators": [],
"electric_radiators": [],
"thermostatic_valves": [],
"gas_boiler_replacement": false,
"vmc_required": false,
"extractors": [],
"ac_preinstallation": [],
"heat_pump_or_ac_project": false
}
}
3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

Aucune donnée client supplémentaire obligatoire n’est recommandée pour le MVP.

Les données existantes suffisent pour générer une estimation :

DonnéeSource
type de chauffageécran 0
type de pièceJSON validé
surface de pièceJSON validé
pièces rénovéesécran 2
niveau de qualitéécran 0
personnalisationoptionnelle

Pour une précision supérieure, le moteur peut utiliser des données optionnelles :

  • radiateurs visibles sur plan ou photos ;
  • chaudière visible ou déclarée ;
  • projet de climatisation personnalisé ;
  • choix client sur remplacement chaudière ;
  • choix client sur ventilation.

Mais ces données ne doivent pas être obligatoires.

Variables calculées

Avant de générer le lot 5, le moteur doit calculer :

{
"cvc_scope": null,
"heating_scope": null,
"ventilation_scope": null,
"cooling_scope": null,
"heated_main_room_count": null,
"wet_room_count": null,
"kitchen_count": null,
"electric_radiator_count": null,
"water_radiator_count": null,
"moved_water_radiator_count": null,
"vmc_vent_count": null,
"extractor_count": null,
"vmc_system_count": null,
"ac_preinstallation_count": null,
"gas_boiler_count": null,
"thermostatic_valve_count": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

CVC-002 Pose radiateur électrique
Définition

Pose d’un radiateur électrique dans une pièce chauffée.

Unité

u

Déclencheurs

Créer si :

heating_type in ["electric", "chauffage_electrique"]

ou si la personnalisation contient :

electric_radiators[] exists

ou si un scénario cible prévoit des radiateurs électriques.

Règle de quantité

Priorité 1 :

quantity = count(electric_radiators from personalization)

Priorité 2 :

quantity = count(heated_main_rooms)

Pièces incluses par défaut :

  • séjour ;
  • salon ;
  • chambre ;
  • bureau ;
  • cuisine fermée.

Pièces exclues par défaut :

  • entrée ;
  • couloir ;
  • WC ;
  • placard ;
  • dressing ;
  • subspace.

Salle de bain :

Créer un radiateur électrique SDB uniquement si sèche-serviette ou radiateur SDB prévu.

Exclusions

Ne comprend pas :

  • alimentation électrique radiateur ;
  • thermostat ;
  • déplacement ancien radiateur ;
  • dépose ancien radiateur ;
  • reprise mur ;
  • peinture ;
  • domotique chauffage.

L’alimentation électrique doit être traitée dans le lot Électricité :

ELEC-016 Alimentation électrique radiateur
CVC-003 Pose radiateur eau chaude
Définition

Pose d’un radiateur raccordé à un réseau de chauffage à eau chaude.

Unité

u

Déclencheurs

Créer si :

heating_type in ["gas", "chauffage_gaz", "collective_hot_water", "chauffage_collectif", "water_heating"]

ou si la personnalisation contient :

water_radiators[] exists

ou si un scénario cible prévoit des radiateurs à eau.

Règle de quantité

Priorité 1 :

quantity = count(water_radiators from personalization)

Priorité 2 :

quantity = count(heated_main_rooms)

Cas radiateurs existants conservés

Si les radiateurs existants sont explicitement conservés :

do not create CVC-003

Créer éventuellement :

CVC-010 Pose robinet thermostatique

si demandé ou prévu.

Exclusions

Ne comprend pas :

  • dépose ancien radiateur ;
  • création réseau complet de chauffage ;
  • déplacement réseau ;
  • chaudière ;
  • robinet thermostatique si chiffré séparément ;
  • peinture ;
  • reprise mur.
CVC-004 Déplacement radiateur eau chaude
Définition

Déplacement d’un radiateur à eau chaude existant vers un nouvel emplacement.

Unité

u

Déclencheurs

Créer si :

radiators_to_move[] exists

ou si le plan cible indique un déplacement de radiateur à eau.

Ne jamais créer automatiquement depuis le plan existant seul.

Règle de quantité
quantity = count(radiators_to_move)
Condition

Créer uniquement si le chauffage est à eau chaude :

heating_type in ["gas", "chauffage_gaz", "collective_hot_water", "chauffage_collectif", "water_heating"]

Si le chauffage est électrique :

use ELEC-016 and CVC-002 instead, not CVC-004

Exclusions

Ne comprend pas :

  • dépose définitive radiateur ;
  • remplacement radiateur ;
  • chaudière ;
  • modification lourde réseau chauffage ;
  • peinture ;
  • reprise sol ;
  • reprise mur.
CVC-005 Création bouche VMC
Définition

Création ou pose d’une bouche VMC dans une pièce nécessitant extraction d’air.

Unité

u

Déclencheurs

Créer si :

CVC-007 VMC simple flux is created

et si le projet contient des pièces à extraire :

["kitchen", "cuisine", "bathroom", "shower_room", "sdb", "sde", "wc"]

Règle de quantité
quantity = count(rooms requiring vmc vent)

Pièces comptabilisées :

  • cuisine ;
  • salle de bain ;
  • salle d’eau ;
  • WC.

Si cuisine ouverte :

count kitchen extraction only once

Anti-double comptage

Si CVC-006 extracteur pièce humide est généré pour une pièce :

do not create CVC-005 for the same room

Exclusions

Ne comprend pas :

  • groupe VMC ;
  • gaine ;
  • alimentation électrique ;
  • coffrage ;
  • percement complexe ;
  • sortie toiture/façade.
CVC-006 Pose extracteur pièce humide
Définition

Pose d’un extracteur ou aérateur dans une pièce humide.

Unité

u

Déclencheurs

Créer si :

extractors[] exists

ou si l’utilisateur choisit un aérateur au lieu d’une VMC.

Créer aussi si une pièce humide rénovée ne dispose pas de VMC prévue.

Pièces concernées

[

"bathroom",

"shower_room",

"sdb",

"sde",

"wc"

]

Règle de quantité
quantity = count(wet_rooms requiring extractor)

Anti-double comptage

Si CVC-007 VMC simple flux est générée :

do not create CVC-006 for rooms already connected to VMC

Exclusions

Ne comprend pas :

  • alimentation électrique ;
  • percement façade complexe ;
  • gaine longue ;
  • coffrage ;
  • grille extérieure ;
  • peinture.

L’alimentation électrique est traitée dans le lot Électricité :

ELEC-018 Alimentation VMC ou aérateur
CVC-007 Pose VMC simple flux appartement
Définition

Pose d’un système VMC simple flux pour logement ou appartement.

Unité

forfait

Déclencheurs

Créer si :

vmc_required == true

ou si la personnalisation prévoit une VMC.

Créer aussi par défaut si :

project contains renovated wet rooms

et :

quality_level in ["standard", "premium"]

Règle de quantité
quantity = 1
Conditions

Si le logement ne permet pas de passage de gaines ou d’extraction identifiable :

{
"is_assumption": true,
"user_validation_required": true,
"assumption_reason": "Faisabilité VMC à confirmer selon gaines et sorties existantes"
}
Exclusions

Ne comprend pas :

  • alimentation électrique ;
  • coffrage ;
  • percement complexe ;
  • sortie toiture/façade ;
  • création gaine technique lourde ;
  • reprise peinture.
CVC-008 Attente climatisation
Définition

Création d’une attente technique pour future climatisation ou système équivalent.

Unité

u

ou :

forfait

Déclencheurs

Créer uniquement si :

ac_preinstallation[] exists

ou si la personnalisation contient :

  • attente clim ;
  • pré-équipement clim ;
  • future climatisation ;
  • climatisation prévue plus tard.

Ne pas créer automatiquement avec le niveau premium.

Règle de quantité

Priorité 1 :

quantity = count(ac_preinstallation_points)

Priorité 2 :

quantity = 1 forfait

si la demande est globale mais non détaillée.

Dépendances

Si attente climatisation :

create dependency ELEC-027 alimentation PAC ou clim if needed

Exclusions

Ne comprend pas :

  • unité intérieure ;
  • unité extérieure ;
  • liaisons frigorifiques définitives ;
  • mise en service ;
  • percement façade ;
  • autorisation copropriété ;
  • alimentation électrique si traitée en lot Électricité.
CVC-009 Pose chaudière gaz condensation
Définition

Pose d’une chaudière gaz à condensation.

Unité

u

Déclencheurs

Créer uniquement si :

gas_boiler_replacement == true

ou si la personnalisation prévoit une chaudière gaz condensation.

Créer aussi si la description projet contient :

  • remplacer chaudière ;
  • nouvelle chaudière gaz ;
  • chaudière condensation ;
  • chaudière à gaz ;
  • chauffage gaz à refaire.
Ne pas créer automatiquement uniquement parce que heating_type == gas.
Règle de quantité
quantity = 1

Sauf si plusieurs chaudières sont explicitement prévues :

quantity = count(gas_boilers)
Conditions techniques

Cette prestation doit générer une validation requise si les éléments suivants ne sont pas connus :

{
"gas_supply_available": null,
"flue_or_evacuations_available": null,
"condensate_drain_available": null,
"boiler_location_known": null
}

Si l’un de ces éléments est inconnu :

{
"is_assumption": true,
"user_validation_required": true,
"assumption_reason": "Pose chaudière gaz à confirmer selon alimentation gaz, évacuation fumées et évacuation condensats"
}
Exclusions

Ne comprend pas :

  • dépose ancienne chaudière ;
  • modification lourde gaz ;
  • tubage conduit ;
  • création conduit fumées ;
  • évacuation condensats complexe ;
  • remplacement radiateurs ;
  • robinets thermostatiques ;
  • thermostat connecté ;
  • contrat entretien ;
  • mise en service spécifique si chiffrée séparément ;
  • autorisation copropriété si nécessaire.

Interactions

Si CVC-009 est générée, le moteur peut aussi générer selon projet :

CVC-003 pose radiateurs eau chaude

CVC-010 robinets thermostatiques

mais uniquement si les radiateurs sont remplacés ou équipés.

CVC-010 Pose robinet thermostatique pour radiateur à eau
Définition

Pose d’un robinet thermostatique sur radiateur à eau chaude.

Unité

u

Déclencheurs

Créer si :

thermostatic_valves[] exists

ou si la personnalisation demande des robinets thermostatiques.

Créer aussi si :

CVC-003 water_radiators are created

et que la base de prix ne les inclut pas déjà.

Règle de quantité

Priorité 1 :

quantity = count(thermostatic_valves from personalization)

Priorité 2 :

quantity = count(water_radiators)
Condition

Créer uniquement pour radiateurs à eau chaude.

Ne jamais créer pour radiateurs électriques.

Anti-double comptage

Si la prestation CVC-003 inclut déjà le robinet thermostatique :

do not create CVC-010

Le paramètre suivant doit exister :

{
"water_radiator_valve_included_in_cvc003": true
}
Exclusions

Ne comprend pas :

  • radiateur ;
  • déplacement radiateur ;
  • purge complète installation ;
  • équilibrage complet réseau ;
  • chaudière ;
  • thermostat central.
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version mise à jour sans dépose radiateur

Objectif du lot

Le lot 5 couvre les prestations liées au chauffage, à la ventilation et aux attentes techniques pour climatisation ou pompe à chaleur.

Ce lot comprend :

  • pose radiateur électrique ;
  • pose radiateur à eau chaude ;
  • déplacement radiateur à eau chaude ;
  • création bouche VMC ;
  • pose extracteur pièce humide ;
  • pose VMC simple flux appartement ;
  • attente climatisation ;
  • pose chaudière gaz condensation ;
  • pose robinet thermostatique pour radiateur à eau.

Ce lot ne doit pas chiffrer :

  • dépose radiateur existant ;
  • dépose chaudière existante ;
  • alimentation électrique radiateur ;
  • alimentation électrique VMC ;
  • alimentation électrique PAC / clim ;
  • plomberie sanitaire ;
  • peinture ;
  • coffrage ;
  • percements lourds ;
  • autorisations copropriété ;
  • étude thermique.

Prestation retirée du lot 5

La prestation suivante est retirée du lot CVC :

Ancien codePrestationNouveau traitement
CVC-001Dépose radiateur existantLot 1 — Démolition / Dépose

La dépose radiateur doit rester traitée par :

DEM-010 Dépose radiateur

Le lot 5 ne doit jamais générer de ligne de dépose radiateur.

Prestations du lot 5

CodePrestation
CVC-002Pose radiateur électrique
CVC-003Pose radiateur eau chaude
CVC-004Déplacement radiateur eau chaude
CVC-005Création bouche VMC
CVC-006Pose extracteur pièce humide
CVC-007Pose VMC simple flux appartement
CVC-008Attente climatisation
CVC-009Pose chaudière gaz condensation
CVC-010Pose robinet thermostatique pour radiateur à eau

Détermination du périmètre CVC

Le moteur doit déterminer le périmètre du lot 5.

"cvc_scope": "none | heating | ventilation | cooling | heating_and_ventilation | full_cvc"

7.1 Aucun lot CVC

Déclencher :

"cvc_scope": "none"

si aucune prestation chauffage, ventilation ou climatisation n’est attendue.

Dans ce cas, ne générer aucune ligne CVC.

7.2 Chauffage

Déclencher si :

heating_type != null

ou si la personnalisation contient :

  • radiateur électrique ;
  • radiateur eau chaude ;
  • chaudière ;
  • robinet thermostatique.

7.3 Ventilation

Déclencher si le projet contient :

  • cuisine rénovée ;
  • salle de bain rénovée ;
  • WC rénové ;
  • pièce humide ;
  • VMC demandée ;
  • extracteur demandé.

7.4 Climatisation / PAC

Déclencher uniquement si demandé en personnalisation ou dans la description projet.

Ne pas créer automatiquement une attente climatisation uniquement parce que le niveau est premium.

Définition des pièces chauffées

Le moteur doit calculer les pièces principales à chauffer.

"heated_main_room_types": [

"living_room",

"salon",

"sejour",

"bedroom",

"chambre",

"office",

"bureau",

"kitchen"

]

Les pièces suivantes ne sont pas chauffées automatiquement :

[

"wc",

"corridor",

"entry",

"hall",

"degagement",

"closet",

"dressing",

"subspace"

]

Salle de bain :

La salle de bain ne déclenche pas automatiquement un radiateur, sauf si sèche-serviette ou radiateur SDB prévu.

Règles anti-double comptage

10.1 Dépose radiateur

La dépose radiateur est exclue du lot 5.

Si un radiateur est remplacé :

DEM-010 handles removal

CVC-002 or CVC-003 handles new radiator

10.2 Radiateur électrique

CVC-002 pose le radiateur électrique.

L’alimentation électrique est traitée par :

ELEC-016 alimentation électrique radiateur

Ne pas inclure l’alimentation dans CVC-002 si elle est générée dans le lot Électricité.

10.3 Radiateur eau chaude

CVC-003 pose le radiateur eau chaude.

CVC-010 pose le robinet thermostatique uniquement si non inclus dans CVC-003.

10.4 VMC / extracteur

CVC-007 = système VMC.

CVC-005 = bouche VMC.

CVC-006 = extracteur indépendant.

Ne pas générer CVC-005 et CVC-006 pour la même pièce.

10.5 Chaudière

CVC-009 = pose chaudière gaz condensation.

Ne pas inclure automatiquement :

  • dépose ancienne chaudière ;
  • radiateurs ;
  • robinets thermostatiques ;
  • modification réseau ;
  • thermostat.

Ces éléments doivent être générés séparément si nécessaires.

10.6 Climatisation

CVC-008 = attente climatisation.

L’alimentation électrique est traitée par :

ELEC-027 alimentation PAC ou clim

Ne pas inclure l’alimentation électrique dans CVC-008 si elle est générée dans le lot Électricité.

Interactions avec les autres lots

11.1 Avec lot 1 — Démolition / Dépose

Si remplacement radiateur :

Créer DEM-010 pour dépose radiateur existant

Créer CVC-002 ou CVC-003 pour pose nouveau radiateur

11.2 Avec lot 3 — Électricité

Électricité doit gérer :

  • alimentation radiateur électrique ;
  • alimentation VMC ou extracteur ;
  • alimentation clim / PAC ;
  • alimentation éventuelle chaudière si nécessaire.

11.3 Avec lot 4 — Plomberie

Plomberie peut interagir avec :

  • évacuation condensats chaudière ;
  • évacuation condensats clim ;
  • raccordements eau si système spécifique.

11.4 Avec lot 2 — Coffrages

Créer dépendance vers coffrage si :

  • gaines VMC apparentes ;
  • réseaux chauffage apparents ;
  • attente clim à cacher ;
  • chaudière nécessitant habillage.

11.5 Avec lot peinture

Les percements, déplacements ou reprises associés aux équipements CVC peuvent générer reprises support ou peinture dans les lots concernés.

Gestion du niveau Éco / Standard / Premium

Le niveau de qualité influence le niveau d’équipement, mais ne doit pas inventer de systèmes lourds.

12.1 Éco

Règle :

Radiateurs simples si chauffage électrique

Extracteur possible plutôt que VMC complète

Pas d’attente clim automatique

Pas de chaudière gaz automatique

12.2 Standard

Règle :

Radiateurs adaptés au programme

VMC simple flux possible en pièces humides

Robinet thermostatique si radiateurs eau chaude remplacés

12.3 Premium

Règle :

Équipements plus qualitatifs

VMC privilégiée aux extracteurs isolés

Options clim/PAC uniquement si demandées

Robinet thermostatique recommandé sur radiateurs eau chaude

Le niveau premium ne doit pas créer automatiquement :

  • climatisation ;
  • PAC ;
  • chaudière ;
  • déplacement radiateur ;
  • changement complet chauffage.

Format de sortie attendu

Chaque ligne du lot 5 doit respecter ce format :

{
"lot": "Chauffage / Ventilation / Climatisation",
"code": "CVC-003",
"label": "Pose radiateur eau chaude",
"room_id": "room_2",
"room_name": "Chambre",
"unit": "u",
"quantity": 1,
"quantity_formula": "count(water_radiators)",
"pricing_mode": "unit_price",
"source": "heating_type_and_room_type",
"confidence": 0.75,
"is_assumption": true,
"assumption_reason": "Radiateur eau chaude généré selon type de chauffage et pièce principale",
"user_validation_required": false,
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Pour chaudière :

{
"lot": "Chauffage / Ventilation / Climatisation",
"code": "CVC-009",
"label": "Pose chaudière gaz condensation",
"unit": "u",
"quantity": 1,
"pricing_mode": "unit_price",
"source": "client_personalization_or_project_description",
"confidence": 0.60,
"is_assumption": true,
"assumption_reason": "Faisabilité chaudière à confirmer selon gaz, fumées et condensats",
"user_validation_required": true
}

Règles de validation

Avant génération du lot 5, le moteur doit vérifier :

{
"has_validated_rooms": true,
"has_room_types": true,
"has_heating_type": true,
"has_quality_level": true
}

Si heating_type est absent :

do not generate automatic radiator lines

mais générer les prestations demandées en personnalisation.

Si pièces humides détectées mais ventilation inconnue :

generate ventilation assumption according to quality level

Si chaudière gaz demandée mais faisabilité inconnue :

{
"user_validation_required": true,
"pricing_mode": "estimate_with_warning"
}

Résumé des données nécessaires

Obligatoire

DonnéeSource
pièces validéesJSON écran 2
type de pièceJSON écran 2
surface pièceJSON écran 2
type chauffageécran 0
niveau de qualitéécran 0
pièces rénovéesécran 2

Automatiquement déduit

DonnéeSource
nombre pièces chaufféesJSON validé
nombre radiateurs électriquestype chauffage + pièces principales
nombre radiateurs eau chaudetype chauffage + pièces principales
nombre pièces humidesJSON validé
nombre bouches VMCcuisine/SDB/WC
nombre extracteurspièces humides sans VMC
nombre robinets thermostatiquesnombre radiateurs eau chaude

Personnalisation uniquement

PrestationSource
déplacement radiateur eau chaudepersonnalisation
attente climatisationpersonnalisation
chaudière gaz condensationpersonnalisation ou description explicite
pompe à chaleur / clim complètelot CVC futur ou personnalisation
robinet thermostatique sur radiateurs conservéspersonnalisation

Non demandé au client en MVP

DonnéeRaison
puissance exacte radiateurbase produit / dimensionnement pro
puissance chaudièrebase produit / dimensionnement pro
type exact conduit fuméesvalidation technique
longueur réseaux chauffageestimation non nécessaire MVP
débit VMCbase technique / entreprise
dimensionnement clim/PAChors MVP ou personnalisation avancée

Règle produit finale

Le lot 5 doit rester centré sur les équipements CVC réellement attendus.

Le moteur doit appliquer cette logique :

1. Identifier le type de chauffage depuis l’écran 0.

2. Identifier les pièces principales à chauffer.

3. Générer radiateurs électriques ou eau chaude selon chauffage.

4. Ne jamais générer de dépose radiateur dans ce lot.

5. Générer ventilation selon pièces humides et niveau de qualité.

6. Générer attentes clim uniquement si demandées.

7. Générer chaudière gaz uniquement si demandée ou explicitement décrite.

8. Générer robinets thermostatiques sur radiateurs eau chaude si prévus ou non inclus.

9. Créer les dépendances vers Électricité, Plomberie, Coffrages et Démolition.

Le devis doit rester clair :

Les prestations CVC sont générées selon le type de chauffage, les pièces validées et les choix de personnalisation. Les prestations lourdes comme chaudière ou climatisation ne sont pas inventées automatiquement.

Lot 6

Sols

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
SOL-001Primaire d’accrochage sol10%Choix client
SOL-002Ragréage autolissant10%Choix client
SOL-003Ragréage fibré10%Règle définie
SOL-004Pose sol PVC / stratifié10%Règle définie + choix client
SOL-005Pose parquet contrecollé flottant10%Règle définie + choix client
SOL-006Pose parquet contrecollé collé10%Règle définie + choix client
SOL-007Pose parquet massif10%Règle définie + choix client
SOL-008Pose carrelage sol format standard10%Règle définie + choix client
SOL-009Pose carrelage petit format / mosaïque10%Choix client
SOL-010APose plinthes boisml10%Règle définie
SOL-010BPose plinthes carrelageml10%Règle définie
SOL-011Barre de seuil / profiléu10%Règle définie + choix client
SOL-012Ponçage / vitrification parquet existant10%Choix client
SOL-013Fourniture et pose d’une chape10%Règle définie + choix client
SOL-014Fourniture et pose de dalle OSB10%Choix client
SOL-015Fourniture et pose de moquette10%Choix client
SOL-016Protection à l’eau sous carrelage — SPEC10%Règle définie
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

3.1 Données issues du JSON validé du plan

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"length_m": null,
"width_m": null,
"perimeter_m": null,
"type": null,
"name": null,
"openings": [],
"adjacent_room_ids": [],
"layout_fidelity": {}
}

3.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"floor_count": null,
"project_description": null,
"quality_level": null,
"property_floor_level": null
}

3.3 Données issues de l’écran 2

Le moteur utilise :

{
"validated_rooms": [],
"rooms_to_renovate": [],
"room_type_overrides": [],
"room_area_overrides": [],
"room_finish_overrides": []
}

3.4 Données issues de la personnalisation

Le moteur peut recevoir :

{
"floor_customization": {
"target_floor_by_room": [],
"existing_floor_to_keep": [],
"requested_primer_rooms": [],
"requested_self_leveling_rooms": [],
"requested_fiber_leveling_rooms": [],
"requested_screed_rooms": [],
"requested_osb_rooms": [],
"requested_moquette_rooms": [],
"requested_thresholds": [],
"requested_floor_profiles": []
}
}
3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

Aucune donnée client supplémentaire obligatoire n’est recommandée pour le MVP.

Le moteur doit pouvoir proposer automatiquement un sol cible selon :

  • le type de pièce ;
  • la surface ;
  • le niveau de qualité ;
  • la personnalisation éventuelle ;
  • le produit choisi.

Données optionnelles utiles mais non bloquantes :

  • photo du sol existant ;
  • choix produit ;
  • volonté de conserver le parquet existant ;
  • besoin de chape ;
  • besoin d’OSB ;
  • demande spécifique moquette.

Variables calculées

Avant de générer le lot 6, le moteur doit calculer :

{
"floor_scope": null,
"floor_change_required": null,
"renovated_floor_area_m2": null,
"target_floor_type_by_room": [],
"support_preparation_type_by_room": [],
"wood_plinth_length_m": null,
"tile_plinth_length_m": null,
"threshold_count": null,
"standard_tile_area_m2": null,
"mosaic_tile_area_m2": null,
"floating_parquet_area_m2": null,
"glued_parquet_area_m2": null,
"solid_parquet_area_m2": null,
"pvc_or_laminate_area_m2": null,
"moquette_area_m2": null,
"screed_area_m2": null,
"osb_area_m2": null,
"spec_area_m2": null,
"existing_parquet_to_restore_area_m2": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

SOL-001 Primaire d’accrochage sol
Définition

Application d’un primaire d’accrochage sur sol existant.

Unité

Déclencheur

Créer uniquement si demandé par le client.

requested_primer_rooms[] exists

Ne pas créer automatiquement avec un ragréage, une chape ou une pose de sol.

Règle de quantité
quantity = sum(area_m2 of requested_primer_rooms)
Exclusions

Ne comprend pas :

  • ragréage ;
  • chape ;
  • pose revêtement ;
  • dépose sol ;
  • nettoyage technique du support.
SOL-002 Ragréage autolissant
Définition

Ragréage autolissant simple du support.

Unité

Déclencheur

Créer uniquement si demandé par le client en remplacement du ragréage fibré.

requested_self_leveling_rooms[] exists

ou si :

client_replaces_SOL003_with_SOL002 == true
Règle de quantité
quantity = sum(area_m2 of requested_self_leveling_rooms)

Si le remplacement concerne toutes les zones de changement de sol :

quantity = sum(area_m2 of rooms with floor_change_required)

Anti-double comptage

Si SOL-002 est généré pour une pièce :

do not generate SOL-003 for same room

Exclusions

Ne comprend pas :

  • primaire si chiffré séparément ;
  • ragréage fibré ;
  • chape ;
  • OSB ;
  • pose revêtement ;
  • dépose sol.
SOL-003 Ragréage fibré
Définition

Ragréage fibré de préparation du support.

Unité

Déclencheur

Proposé automatiquement dès qu’un changement de sol est prévu.

if floor_change_required == true:

create SOL-003

Règle de quantité
quantity = sum(area_m2 of rooms with floor_change_required)

Exceptions

Ne pas créer SOL-003 si, pour la même pièce :

requested_self_leveling_rooms[] includes room

ou :

requested_screed_rooms[] includes room

ou :

requested_osb_rooms[] includes room

ou si le niveau premium déclenche SOL-013 chape.

Cas premium

Si :

quality_level == "premium"

et :

floor_change_required == true

alors :

SOL-013 chape overrides SOL-003

sauf si le client demande explicitement un ragréage fibré en plus.

Exclusions

Ne comprend pas :

  • dépose sol ;
  • chape ;
  • dalle OSB ;
  • pose revêtement ;
  • primaire séparé ;
  • traitement structurel du plancher.
SOL-004 Pose sol PVC / stratifié
Définition

Pose de sol PVC, vinyle, stratifié ou équivalent économique.

Unité

Déclencheurs

Créer si :

quality_level == "eco"

pour les pièces sèches.

Créer aussi si demandé par le client :

target_floor_type == "pvc_laminate"

ou si le produit choisi appartient à la catégorie :

["pvc", "vinyl", "laminate", "stratifié"]

Règle de quantité
quantity = sum(area_m2 of rooms with target_floor_type == "pvc_laminate")
Exclusions

Ne comprend pas :

  • fourniture du revêtement si traitée en base produit ;
  • dépose ancien sol ;
  • ragréage ;
  • plinthes ;
  • seuils.
SOL-005 Pose parquet contrecollé flottant
Définition

Pose de parquet contrecollé en pose flottante.

Unité

Déclencheurs

Créer si :

quality_level == "standard"

pour les pièces sèches.

Créer aussi si demandé par le client :

target_floor_type == "floating_engineered_parquet"

ou si le produit choisi impose une pose flottante.

Règle de quantité
quantity = sum(area_m2 of rooms with target_floor_type == "floating_engineered_parquet")
Exclusions

Ne comprend pas :

  • fourniture parquet si traitée en base produit ;
  • sous-couche si chiffrée séparément ;
  • dépose ancien sol ;
  • ragréage ;
  • plinthes ;
  • seuils.
SOL-006 Pose parquet contrecollé collé
Définition

Pose de parquet contrecollé en pose collée.

Unité

Déclencheurs

Créer si :

quality_level == "premium"

et si le produit choisi est compatible ou impose une pose collée.

Créer aussi si demandé par le client :

target_floor_type == "glued_engineered_parquet"
Règle de quantité
quantity = sum(area_m2 of rooms with target_floor_type == "glued_engineered_parquet")
Condition produit

Si aucun produit n’est choisi en premium :

default premium dry room floor = glued_engineered_parquet

sauf si parquet massif sélectionné.

Exclusions

Ne comprend pas :

  • fourniture parquet si traitée en base produit ;
  • colle si séparée ;
  • dépose ancien sol ;
  • chape ;
  • ragréage ;
  • plinthes ;
  • seuils.
SOL-007 Pose parquet massif
Définition

Pose de parquet massif.

Unité

Déclencheurs

Créer si :

target_floor_type == "solid_parquet"

ou si le produit choisi appartient à la catégorie parquet massif.

Créer aussi si explicitement demandé par le client.

Règle de quantité
quantity = sum(area_m2 of rooms with target_floor_type == "solid_parquet")

Niveau de qualité

Le parquet massif est uniquement proposé automatiquement en premium si le produit choisi l’indique.

Ne pas proposer automatiquement du parquet massif en premium sans produit ou demande client.

Exclusions

Ne comprend pas :

  • fourniture parquet si traitée en base produit ;
  • lambourdes ;
  • OSB ;
  • chape ;
  • ragréage ;
  • plinthes ;
  • seuils ;
  • vitrification si produit brut non fini.
SOL-008 Pose carrelage sol format standard
Définition

Pose de carrelage de sol format standard.

Unité

Déclencheurs

Créer si :

target_floor_type == "standard_tile"

ou si le produit choisi est un carrelage standard.

Proposé automatiquement pour :

  • salle de bain ;
  • salle d’eau ;
  • WC ;
  • cuisine si aucun autre choix produit n’est fait.
Règle de quantité
quantity = sum(area_m2 of rooms with target_floor_type == "standard_tile")
Exclusions

Ne comprend pas :

  • fourniture carrelage si traitée en base produit ;
  • SPEC ;
  • ragréage ;
  • chape ;
  • plinthes carrelage ;
  • dépose ancien carrelage.
SOL-009 Pose carrelage petit format / mosaïque
Définition

Pose de carrelage petit format ou mosaïque au sol.

Unité

Déclencheurs

Créer si :

target_floor_type == "mosaic_tile"

ou si le produit choisi est :

  • mosaïque ;
  • zellige petit format ;
  • carreaux petit format ;
  • carrelage complexe ;
  • pose décorative.

Créer aussi si explicitement demandé par le client.

Règle de quantité
quantity = sum(area_m2 of rooms with target_floor_type == "mosaic_tile")

Niveau de qualité

Cette prestation peut être proposée en premium uniquement si le produit choisi ou le scénario esthétique le justifie.

Ne pas remplacer automatiquement tous les carrelages premium par mosaïque.

Exclusions

Ne comprend pas :

  • fourniture carrelage si traitée en base produit ;
  • SPEC ;
  • ragréage ;
  • chape ;
  • plinthes carrelage ;
  • dépose ancien carrelage.
SOL-010A Pose plinthes bois
Définition

Pose de plinthes bois, MDF, stratifiées ou assorties aux sols type parquet / stratifié / PVC / moquette.

Unité

ml

Déclencheurs

Créer si une pièce reçoit :

[

"pvc_laminate",

"floating_engineered_parquet",

"glued_engineered_parquet",

"solid_parquet",

"moquette"

]

Règle de quantité

Priorité 1 :

quantity = room.perimeter_m - door_opening_widths_m

Priorité 2 :

quantity = 2 × (room.length_m + room.width_m) - door_opening_widths_m

Priorité 3 :

quantity = room.perimeter_m

si les largeurs d’ouvertures sont inconnues.

Anti-double comptage

Ne pas créer SOL-010A dans une pièce avec carrelage sol si SOL-010B est généré.

Exclusions

Ne comprend pas :

  • peinture plinthes ;
  • fourniture plinthes si traitée en base produit ;
  • dépose anciennes plinthes ;
  • joints acryliques si séparés.
SOL-010B Pose plinthes carrelage
Définition

Pose de plinthes carrelage dans les zones carrelées.

Unité

ml

Déclencheurs

Créer si une pièce reçoit :

[

"standard_tile",

"mosaic_tile"

]

Règle de quantité

Priorité 1 :

quantity = room.perimeter_m - door_opening_widths_m

Priorité 2 :

quantity = 2 × (room.length_m + room.width_m) - door_opening_widths_m

Priorité 3 :

quantity = room.perimeter_m

si les largeurs d’ouvertures sont inconnues.

Cas salle de bain

Si les murs sont faïencés jusqu’au sol :

do not create SOL-010B unless explicitly required

Exclusions

Ne comprend pas :

  • faïence murale ;
  • joints muraux ;
  • fourniture plinthes si traitée en base produit ;
  • dépose anciennes plinthes.
SOL-011 Barre de seuil / profilé
Définition

Pose d’une barre de seuil ou profilé de jonction entre deux revêtements ou deux pièces.

Unité

u

Déclencheurs

Créer si :

two_adjacent_rooms_have_different_floor_types == true

ou si un seuil de porte est visible entre deux pièces rénovées.

Créer aussi si demandé par le client :

requested_thresholds[] exists

Règle de quantité

Priorité 1 :

quantity = count(requested_thresholds)

Priorité 2 :

quantity = count(room_transitions_with_different_floor_types)

Priorité 3 :

quantity = count(door_openings_between_renovated_rooms)

si les types de sol sont inconnus.

Exclusions

Ne comprend pas :

  • reprise de niveau importante ;
  • rattrapage de sol ;
  • rabotage porte ;
  • fourniture profilé premium si traitée en base produit.
SOL-012 Ponçage / vitrification parquet existant
Définition

Ponçage et vitrification d’un parquet existant conservé.

Unité

Déclencheurs

Créer si :

existing_floor_to_keep[] contains room

ou si le client demande :

  • conserver parquet ;
  • poncer parquet ;
  • vitrifier parquet ;
  • rénover parquet existant.
Règle de quantité
quantity = sum(area_m2 of rooms with existing parquet to restore)

Anti-double comptage

Si SOL-012 est généré pour une pièce :

do not generate SOL-003, SOL-004, SOL-005, SOL-006, SOL-007, SOL-013, SOL-014 or SOL-015 for same room

sauf demande explicite client.

Exclusions

Ne comprend pas :

  • remplacement parquet ;
  • réparation structurelle ;
  • lambourdes ;
  • rebouchage important ;
  • teinte spéciale ;
  • dépose parquet.
SOL-013 Fourniture et pose d’une chape
Définition

Fourniture et pose d’une chape de préparation ou de reprise de niveau.

Unité

Déclencheurs

Créer automatiquement si :

quality_level == "premium"

et :

floor_change_required == true

Créer aussi si demandé par le client :

requested_screed_rooms[] exists

Règle de quantité

Cas premium automatique :

quantity = sum(area_m2 of rooms with floor_change_required)

Cas demande client :

quantity = sum(area_m2 of requested_screed_rooms)

Priorité sur ragréage

Si SOL-013 est généré pour une pièce :

do not generate SOL-003 for same room

sauf si ragréage de finition demandé explicitement.

Exclusions

Ne comprend pas :

  • dépose sol ;
  • évacuation gravats ;
  • renforcement structurel ;
  • OSB ;
  • revêtement de sol final ;
  • séchage accéléré ;
  • étude structure.

Warning automatique

Si chape en appartement ancien :

{
"warning": "Chape à valider selon charge admissible et support existant",
"user_validation_required": true
}
SOL-014 Fourniture et pose de dalle OSB
Définition

Fourniture et pose de panneaux OSB en support de sol.

Unité

Déclencheur

Créer uniquement si demandé par le client.

requested_osb_rooms[] exists

ou si un scénario technique validé prévoit un support OSB.

Règle de quantité
quantity = sum(area_m2 of requested_osb_rooms)
Priorité

Si SOL-014 est généré pour une pièce :

do not generate SOL-013 or SOL-003 for same room

sauf si une couche complémentaire est explicitement demandée.

Exclusions

Ne comprend pas :

  • solives ;
  • lambourdes ;
  • structure bois ;
  • isolation entre solives ;
  • revêtement final ;
  • plinthes ;
  • traitement acoustique ;
  • étude structure.
SOL-015 Fourniture et pose de moquette
Définition

Fourniture et pose d’une moquette au sol.

Unité

Déclencheurs

Créer si demandé par le client :

requested_moquette_rooms[] exists

ou si le produit choisi appartient à la catégorie :

["moquette", "carpet"]

Règle de quantité
quantity = sum(area_m2 of rooms with target_floor_type == "moquette")

Niveau de qualité

La moquette ne doit pas être proposée automatiquement par défaut, sauf si le client la demande ou choisit un produit moquette.

Exclusions

Ne comprend pas :

  • dépose ancien sol ;
  • ragréage ;
  • chape ;
  • plinthes ;
  • barre de seuil spécifique ;
  • traitement acoustique complémentaire.
SOL-016 Protection à l’eau sous carrelage — SPEC
Définition

Protection à l’eau sous carrelage dans les pièces exposées à l’eau.

Unité

Déclencheurs

Créer systématiquement si une pièce d’eau ou cuisine reçoit du carrelage au sol.

Pièces concernées :

[

"bathroom",

"shower_room",

"sdb",

"sde",

"wc",

"kitchen",

"cuisine"

]

Types de sol concernés :

[

"standard_tile",

"mosaic_tile"

]

Règle :

if room.type in wet_or_kitchen_room_types and target_floor_type in tile_types:

create SOL-016

Règle de quantité
quantity = sum(area_m2 of tiled wet rooms and kitchens)

Anti-double comptage

SOL-016 ne remplace pas :

  • SOL-008 ;
  • SOL-009 ;
  • SOL-013 ;
  • SOL-003.

Il s’ajoute sous le carrelage.

Exclusions

Ne comprend pas :

  • étanchéité murale de douche ;
  • SPEC mural ;
  • SEL complet ;
  • receveur ;
  • douche à l’italienne ;
  • carrelage ;
  • joints ;
  • siphon ;
  • plomberie.
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version mise à jour avec chape, OSB, moquette et SPEC

Objectif du lot

Le lot 6 couvre les prestations liées aux sols intérieurs :

  • préparation du support ;
  • chape ;
  • ragréage ;
  • dalle OSB ;
  • pose de revêtements de sol ;
  • pose de plinthes ;
  • seuils et profilés ;
  • ponçage / vitrification de parquet existant ;
  • protection à l’eau sous carrelage.

Ce lot ne doit pas chiffrer :

  • dépose des sols existants ;
  • évacuation gravats ;
  • peinture ;
  • carrelage mural ;
  • faïence ;
  • étanchéité murale de douche ;
  • démolition ;
  • menuiserie ;
  • isolation lourde de plancher si traitée ailleurs.

Prestations du lot 6

CodePrestation
SOL-001Primaire d’accrochage sol
SOL-002Ragréage autolissant
SOL-003Ragréage fibré
SOL-004Pose sol PVC / stratifié
SOL-005Pose parquet contrecollé flottant
SOL-006Pose parquet contrecollé collé
SOL-007Pose parquet massif
SOL-008Pose carrelage sol format standard
SOL-009Pose carrelage petit format / mosaïque
SOL-010APose plinthes bois
SOL-010BPose plinthes carrelage
SOL-011Barre de seuil / profilé
SOL-012Ponçage / vitrification parquet existant
SOL-013Fourniture et pose d’une chape
SOL-014Fourniture et pose de dalle OSB
SOL-015Fourniture et pose de moquette
SOL-016Protection à l’eau sous carrelage — SPEC

Détermination du revêtement cible

Le moteur doit définir un revêtement cible par pièce.

"target_floor_type": "pvc_laminate | floating_engineered_parquet | glued_engineered_parquet | solid_parquet | standard_tile | mosaic_tile | moquette | existing_parquet_to_restore"

6.1 Priorité de décision

Priorité 1 :

target_floor_type = client_selected_floor_product

Priorité 2 :

target_floor_type = room_finish_override from screen 2

Priorité 3 :

target_floor_type = automatic_rule_by_room_type_and_quality_level

Règles automatiques par niveau de qualité

7.1 Pièces sèches

Pièces concernées :

[

"living_room",

"salon",

"sejour",

"bedroom",

"chambre",

"office",

"bureau",

"entry",

"entree",

"corridor",

"hall"

]

Règle automatique :

quality_levelRevêtement proposé
ecoPVC / stratifié
standardparquet contrecollé flottant
premiumparquet contrecollé collé ou parquet massif selon produit choisi

7.2 Pièces d’eau

Pièces concernées :

[

"bathroom",

"shower_room",

"sdb",

"sde",

"wc"

]

Règle automatique :

quality_levelRevêtement proposé
ecocarrelage format standard
standardcarrelage format standard
premiumcarrelage format standard ou mosaïque selon produit choisi

7.3 Cuisine

Pour une pièce de type :

["kitchen", "cuisine"]

Règle automatique :

quality_levelRevêtement proposé
ecoPVC / stratifié ou carrelage standard
standardcarrelage standard ou parquet flottant selon scénario
premiumcarrelage standard, mosaïque ou parquet collé selon produit choisi

Si aucun produit n’est choisi :

target_floor_type = standard_tile

pour la cuisine.

Règles générales de préparation du support

8.1 Changement de sol

Le moteur doit calculer :

floor_change_required = true

si :

  • le client choisit un nouveau revêtement ;
  • le niveau de qualité génère automatiquement un nouveau sol ;
  • le sol existant n’est pas explicitement conservé ;
  • le lot démolition prévoit une dépose de sol ;
  • le projet cible implique remplacement du sol.

8.2 Aucun changement de sol

Si le parquet existant est conservé :

floor_change_required = false

et le moteur doit proposer éventuellement :

SOL-012 Ponçage / vitrification parquet existant

8.3 Anti-double comptage des supports

Une même zone ne doit pas recevoir automatiquement plusieurs couches de préparation lourde.

Priorité de support :

SOL-014 OSB > SOL-013 chape > SOL-003 ragréage fibré > SOL-002 ragréage autolissant > SOL-001 primaire seul

Règle :

For each room, generate only one main support preparation line unless explicitly requested.

Exception :

SOL-001 primaire may be added only if explicitly requested by client.

Règles anti-double comptage

10.1 Sol conservé

Si SOL-012 est généré :

do not generate any new floor covering for same room

10.2 Ragréage / chape / OSB

Une même pièce ne doit pas recevoir automatiquement :

SOL-003 + SOL-013 + SOL-014

Priorité

OSB > chape > ragréage fibré > ragréage autolissant

10.3 Carrelage

Si SOL-009 est généré :

do not generate SOL-008 for same room

10.4 Plinthes

Si pièce parquet / PVC / moquette :

use SOL-010A

Si pièce carrelage :

use SOL-010B

Ne jamais générer SOL-010A et SOL-010B dans une même pièce, sauf zone mixte explicitement prévue.

10.5 SPEC

SOL-016 s’ajoute uniquement sous carrelage dans pièces d’eau et cuisine.

Ne pas créer SOL-016 sous parquet, PVC, stratifié ou moquette.

Interactions avec les autres lots

11.1 Avec lot 1 — Démolition

Si changement de sol :

Lot 1 may generate floor removal

Lot 6 generates support preparation and new floor

11.2 Avec lot Salle de bain

Si salle de bain carrelée :

SOL-016 under floor tile

Salle de bain lot handles shower, bathtub, vanity and wall finishes

11.3 Avec lot Cuisine

Si cuisine carrelée :

SOL-016 under kitchen floor tile

11.4 Avec lot Menuiserie

Si seuils ou profils liés à portes :

SOL-011 handles threshold/profile

Menuiserie handles door adjustments if required

11.5 Avec lot Peinture

Plinthes bois peuvent créer :

  • joints acryliques ;
  • retouches peinture ;
  • peinture plinthes si plinthes à peindre.

Ces éléments ne sont pas inclus dans le lot sol sauf paramétrage spécifique.

Gestion du niveau Éco / Standard / Premium

12.1 Éco

Règle :

PVC / stratifié proposé dans les pièces sèches

Carrelage standard proposé dans les pièces d’eau et cuisine

Ragréage fibré proposé si changement de sol

12.2 Standard

Règle :

Parquet contrecollé flottant proposé dans les pièces sèches

Carrelage standard proposé dans les pièces d’eau et cuisine

Ragréage fibré proposé si changement de sol

12.3 Premium

Règle :

Parquet contrecollé collé proposé dans les pièces sèches

Parquet massif si produit choisi

Carrelage standard ou mosaïque selon produit choisi

Chape proposée systématiquement si changement de sol

En premium :

SOL-013 overrides SOL-003 by default

sauf demande explicite de ragréage complémentaire.

Format de sortie attendu

Chaque ligne du lot 6 doit respecter ce format :

{
"lot": "Sols",
"code": "SOL-005",
"label": "Pose parquet contrecollé flottant",
"room_id": "room_2",
"room_name": "Chambre",
"unit": "m2",
"quantity": 12.4,
"quantity_formula": "room.area_m2",
"pricing_mode": "unit_price",
"source": "quality_level_and_room_type",
"confidence": 0.85,
"is_assumption": true,
"assumption_reason": "Parquet contrecollé flottant proposé en niveau standard",
"user_validation_required": false,
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Pour SPEC :

{
"lot": "Sols",
"code": "SOL-016",
"label": "Protection à l’eau sous carrelage — SPEC",
"room_id": "room_4",
"room_name": "Salle de bain",
"unit": "m2",
"quantity": 4.6,
"quantity_formula": "room.area_m2",
"source": "wet_room_with_tile_floor",
"confidence": 0.95,
"is_assumption": false,
"user_validation_required": false
}

Règles de validation

Avant génération du lot 6, le moteur doit vérifier :

{
"has_validated_rooms": true,
"has_room_surfaces": true,
"has_room_types": true,
"has_quality_level": true
}

Si le type de pièce est absent :

use room name and visual evidence to infer room type

Si la surface est absente :

block floor pricing for that room

Message :

Impossible de chiffrer le sol d’une pièce sans surface validée.

Résumé des données nécessaires

Obligatoire

DonnéeSource
pièces validéesJSON écran 2
surface des piècesJSON écran 2
type de pièceJSON écran 2
niveau de qualitéécran 0
pièces rénovéesécran 2

Automatiquement déduit

DonnéeSource
type de sol proposétype pièce + qualité
ragréage fibréchangement de sol
chapepremium + changement de sol
plinthes boissols parquet/PVC/moquette
plinthes carrelagesols carrelage
SPECcarrelage dans cuisine/SDB/WC
seuilsjonction entre sols différents

Personnalisation uniquement

PrestationSource
primaire d’accrochagedemande client
ragréage autolissantdemande client
OSBdemande client
moquettedemande client / produit choisi
parquet massifproduit choisi / demande client
mosaïqueproduit choisi / demande client
ponçage parquetconservation parquet existant

Non demandé au client en MVP

DonnéeRaison
planéité exacte du supporthypothèse technique / validation chantier
humidité du supportvalidation chantier
charge admissible planchervalidation technique si chape
type exact ancien supportpas nécessaire au chiffrage instantané
épaisseur chapebase technique / entreprise
type colle / jointbase prix / produit

Règle produit finale

Le lot 6 doit appliquer la logique suivante :

1. Identifier les pièces rénovées.

2. Définir un revêtement cible par pièce selon qualité, type de pièce et personnalisation.

3. Déterminer si un changement de sol est prévu.

4. Générer automatiquement un ragréage fibré si changement de sol.

5. En premium, remplacer le ragréage fibré par une chape si changement de sol.

6. Générer le revêtement cible.

7. Générer les plinthes selon le type de revêtement.

8. Générer les seuils entre sols différents.

9. Générer le SPEC sous carrelage en cuisine et pièces d’eau.

10. Éviter tout double comptage entre chape, ragréage, OSB et conservation parquet.

Le devis doit rester clair :

Les sols sont générés automatiquement selon le niveau de qualité, le type de pièce et les produits sélectionnés. Les supports techniques comme chape, OSB ou ragréage sont ajustables dans la personnalisation.

Lot 7

Murs / Plafonds / Peinture

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
PEI-001Préparation légère des murs10%Règle définie
PEI-003Ratissage partiel10%Choix client
PEI-004Ratissage complet10%Règle définie
PEI-005Impression murs10%Règle définie
PEI-006Peinture murs 2 couches10%Règle définie
PEI-007Impression plafonds10%Règle définie
PEI-008Peinture plafonds 2 couches10%Règle définie
PEI-009Peinture boiseries / portesu10%Règle définie
PEI-010Pose papier peint10%Choix client
PEI-011Enduit décoratif / peinture premium10%Choix client
PEI-012Mise en peinture – Préparation + Finition BA13 neuf10%Règle définie
PEI-013Provision dépose / repose radiateur à eau pour peintureu/forfait10%Règle définie
PEI-014Plus-value polychromie supérieure à 3 couleursforfait10%Choix client
PEI-015Provision mise en place d’entoilage type Fissnetforfait10%Choix client
PEI-016Entoilage de support10%Règle définie
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

4.1 Données issues du JSON validé

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"length_m": null,
"width_m": null,
"perimeter_m": null,
"ceiling_height_m": null,
"type": null,
"name": null,
"openings": [],
"doors": [],
"windows": [],
"layout_fidelity": {}
}

4.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"floor_count": null,
"heating_type": null,
"project_description": null,
"quality_level": null,
"property_floor_level": null
}

4.3 Données issues de l’écran 2

Le moteur utilise :

{
"validated_rooms": [],
"rooms_to_renovate": [],
"room_type_overrides": [],
"room_area_overrides": [],
"door_replacement_status": [],
"color_selection": []
}

4.4 Données issues des autres lots

Le lot 7 utilise notamment les sorties du lot 2 :

{
"new_wall_surface_to_finish_m2": null,
"new_ceiling_surface_to_finish_m2": null,
"new_ba13_wall_surface_m2": null,
"new_ba13_ceiling_surface_m2": null,
"new_paint_ready_surface_m2": null
}

Et les sorties du lot CVC :

{
"water_radiators_kept_count": null,
"water_radiators_replaced_count": null,
"heating_type": null
}

4.5 Données issues de la personnalisation

Le moteur peut recevoir :

{
"paint_customization": {
"paint_scope_by_room": [],
"wallpaper_surfaces": [],
"decorative_finish_surfaces": [],
"partial_skimming_surfaces": [],
"requested_fissnet_provision": false,
"selected_color_count": null,
"doors_to_paint": [],
"doors_replaced": [],
"radiators_to_keep": [],
"water_radiators_to_remove_for_paint": []
}
}
3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

Aucune donnée client supplémentaire obligatoire n’est recommandée pour le MVP.

Les données suivantes peuvent être définies en personnalisation, mais ne doivent pas bloquer le chiffrage initial :

  • nombre de couleurs ;
  • choix papier peint ;
  • choix peinture décorative ;
  • choix entoilage spécifique ;
  • portes remplacées ou conservées ;
  • surfaces exactes décoratives.

Si ces données sont absentes, le moteur applique les règles automatiques par niveau de qualité.

Variables calculées

Avant de générer le lot 7, le moteur doit calculer :

{
"room_wall_surface_m2": null,
"room_ceiling_surface_m2": null,
"existing_wall_surface_to_paint_m2": null,
"existing_ceiling_surface_to_paint_m2": null,
"new_ba13_surface_to_finish_m2": null,
"wallpaper_surface_m2": null,
"decorative_finish_surface_m2": null,
"light_wall_prep_surface_m2": null,
"partial_skimming_surface_m2": null,
"full_skimming_surface_m2": null,
"primer_wall_surface_m2": null,
"paint_wall_surface_m2": null,
"primer_ceiling_surface_m2": null,
"paint_ceiling_surface_m2": null,
"woodwork_or_door_count": null,
"water_radiator_paint_provision_count": null,
"color_count": null,
"polychromy_extra_count": null,
"fissnet_provision_count": null,
"entoilage_surface_m2": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

PEI-001 Préparation légère des murs
Définition

Préparation légère des murs existants avant impression et peinture.

Unité

Déclencheur

Créer en niveau Éco pour les pièces à rénover.

quality_level == "eco"

et :

room_to_renovate == true
Règle de quantité
quantity = existing_wall_surface_to_paint_m2
Exclusions

Ne comprend pas :

  • ratissage ;
  • entoilage ;
  • reprise lourde ;
  • rebouchage ponctuel spécifique ;
  • peinture ;
  • impression.
PEI-003 Ratissage partiel
Définition

Ratissage partiel des murs existants sur zones localisées.

Unité

Déclencheur

Créer uniquement si demandé par le client.

partial_skimming_surfaces[] exists

ou si le client demande :

  • ratissage partiel ;
  • reprise partielle des murs ;
  • murs partiellement abîmés.
Règle de quantité

Priorité 1 :

quantity = sum(partial_skimming_surfaces_m2)

Priorité 2 :

quantity = room_wall_surface_m2 × default_partial_skimming_ratio

si la surface exacte n’est pas définie.

Ratio paramétrable :

"default_partial_skimming_ratio": 0.30

Anti-double comptage

Si PEI-004 ratissage complet est généré pour la même pièce :

do not generate PEI-003

sauf si le client demande explicitement une zone spécifique complémentaire.

Exclusions

Ne comprend pas :

  • ratissage complet ;
  • entoilage ;
  • impression ;
  • peinture.
PEI-004 Ratissage complet
Définition

Ratissage complet des murs existants.

Unité

Déclencheurs

Créer automatiquement si :

quality_level in ["standard", "premium"]

et :

room_to_renovate == true
Règle de quantité
quantity = existing_wall_surface_to_paint_m2

Exceptions

Ne pas générer sur :

  • surfaces BA13 neuves traitées par PEI-012 ;
  • surfaces papier peint traitées par PEI-010 si le support est chiffré dans cette prestation ;
  • surfaces décoratives traitées par PEI-011 si le support est inclus.

Anti-double comptage

PEI-004 remplace :

PEI-001

PEI-003

sur les mêmes surfaces.

Exclusions

Ne comprend pas :

  • impression ;
  • peinture ;
  • entoilage ;
  • reprise structurelle ;
  • traitement humidité ;
  • fissures structurelles.
PEI-005 Impression murs
Définition

Application d’une couche d’impression sur murs existants à peindre.

Unité

Déclencheur

Créer systématiquement si la pièce est à rénover.

room_to_renovate == true
Règle de quantité
quantity = existing_wall_surface_to_paint_m2

Exceptions

Ne pas générer sur :

  • surfaces BA13 neuves traitées par PEI-012 ;
  • surfaces papier peint si l’impression est incluse dans PEI-010 ;
  • surfaces décoratives si l’impression est incluse dans PEI-011.
Exclusions

Ne comprend pas :

  • peinture 2 couches ;
  • ratissage ;
  • entoilage ;
  • impression BA13 neuf si incluse PEI-012.
PEI-006 Peinture murs 2 couches
Définition

Application de deux couches de peinture sur murs existants.

Unité

Déclencheur

Créer systématiquement si la pièce est à rénover.

room_to_renovate == true
Règle de quantité
quantity = existing_wall_surface_to_paint_m2

Exceptions

Ne pas générer sur :

  • surfaces BA13 neuves traitées par PEI-012 ;
  • surfaces papier peint ;
  • surfaces enduit décoratif ;
  • surfaces peinture premium si PEI-011 remplace la finition classique.
Exclusions

Ne comprend pas :

  • impression ;
  • préparation support ;
  • ratissage ;
  • entoilage ;
  • peinture boiseries ;
  • peinture portes.
PEI-007 Impression plafonds
Définition

Application d’une couche d’impression sur plafonds existants.

Unité

Déclencheur

Créer systématiquement si la pièce est à rénover.

room_to_renovate == true
Règle de quantité
quantity = existing_ceiling_surface_to_paint_m2

Exceptions

Ne pas générer sur :

  • faux plafonds neufs traités par PEI-012 ;
  • plafonds décoratifs spécifiques traités par une prestation dédiée.
Exclusions

Ne comprend pas :

  • peinture plafond 2 couches ;
  • préparation support ;
  • faux plafond ;
  • ratissage plafond si chiffré séparément.
PEI-008 Peinture plafonds 2 couches
Définition

Application de deux couches de peinture sur plafonds existants.

Unité

Déclencheur

Créer systématiquement si la pièce est à rénover.

room_to_renovate == true
Règle de quantité
quantity = existing_ceiling_surface_to_paint_m2

Exceptions

Ne pas générer sur :

  • faux plafonds neufs traités par PEI-012 ;
  • plafonds avec finition décorative spécifique.
Exclusions

Ne comprend pas :

  • impression ;
  • préparation support ;
  • faux plafond ;
  • spots ;
  • reprises lourdes.
PEI-009 Peinture boiseries / portes
Définition

Mise en peinture des portes, huisseries, boiseries ou éléments bois existants conservés.

Unité

u

ou :

ml

selon base de prix.

Déclencheur

Créer systématiquement si les portes ne sont pas changées.

doors_replaced == false

ou si aucune ligne de remplacement de portes n’est générée dans le lot menuiserie.

Règle de quantité

Priorité 1 :

quantity = count(doors_to_paint)

Priorité 2 :

quantity = count(existing_internal_doors in renovated rooms)

Exceptions

Ne pas générer si :

doors_replaced == true

sauf si les portes neuves sont brutes à peindre.

Exclusions

Ne comprend pas :

  • remplacement porte ;
  • ponçage lourd ;
  • décapage complet ;
  • réparation menuiserie ;
  • quincaillerie.
PEI-010 Pose papier peint
Définition

Pose de papier peint sur murs ou zones décoratives.

Unité

Déclencheur

Créer uniquement à la demande du client.

wallpaper_surfaces[] exists

Règle de quantité
quantity = sum(wallpaper_surfaces_m2)

Anti-double comptage

Si PEI-010 est généré sur une surface :

do not generate PEI-006 on same surface

PEI-005 peut être conservé uniquement si l’impression support est requise et non incluse dans PEI-010.

Exclusions

Ne comprend pas :

  • fourniture papier peint si traitée en base produit ;
  • dépose ancien papier peint ;
  • ratissage complet ;
  • enduit décoratif ;
  • peinture de finition sur même surface.
PEI-011 Enduit décoratif / peinture premium
Définition

Application d’un enduit décoratif ou d’une finition premium spécifique.

Unité

Déclencheur

Créer uniquement à la demande du client.

decorative_finish_surfaces[] exists

ou si le client choisit une finition décorative spécifique.

Règle de quantité
quantity = sum(decorative_finish_surface_m2)

Anti-double comptage

Si PEI-011 est généré sur une surface :

do not generate PEI-006 on same surface

PEI-005 peut être conservé uniquement si l’impression support est requise et non incluse dans PEI-011.

Exclusions

Ne comprend pas :

  • préparation lourde ;
  • entoilage ;
  • fourniture produit premium si traitée en base produit ;
  • éclairage décoratif ;
  • supports spéciaux non prévus.
PEI-012 Mise en peinture – Préparation + Finition BA13 neuf
Définition

Préparation et mise en peinture complète des surfaces neuves en BA13.

Cette prestation concerne uniquement :

  • cloisons neuves ;
  • doublages neufs ;
  • faux plafonds neufs ;
  • coffrages BA13 neufs si finition peinture.
Unité

Déclencheurs

Créer si le lot 2 génère :

new_ba13_wall_surface_m2 > 0

ou :

new_ba13_ceiling_surface_m2 > 0

Règle de quantité
quantity = new_ba13_wall_surface_m2 + new_ba13_ceiling_surface_m2

Anti-double comptage

Si PEI-012 est généré sur une surface :

do not generate PEI-004, PEI-005, PEI-006, PEI-007 or PEI-008 on the same surface

Exclusions

Ne comprend pas :

  • création BA13 ;
  • bandes placo si incluses dans lot 2 ;
  • traitement acoustique ;
  • carrelage ;
  • papier peint ;
  • enduit décoratif.
PEI-013 Provision dépose / repose radiateur à eau pour peinture
Définition

Provision pour dépose temporaire et repose d’un radiateur à eau afin de peindre correctement derrière.

Unité

u

ou :

forfait

Déclencheur

Créer si :

heating_type in ["gas", "chauffage_gaz", "collective_hot_water", "chauffage_collectif", "water_heating"]

et si :

water_radiators_replaced_count == 0

ou si les radiateurs à eau sont conservés.

Règle de quantité

Priorité 1 :

quantity = count(water_radiators_to_remove_for_paint)

Priorité 2 :

quantity = count(heated_main_rooms)

avec hypothèse.

Anti-double comptage

Ne pas créer PEI-013 si :

CVC-003 water_radiators are replaced

ou si :

CVC-004 water_radiators are moved

Exclusions

Ne comprend pas :

  • remplacement radiateur ;
  • purge complète installation ;
  • modification réseau chauffage ;
  • équilibrage réseau ;
  • dépose définitive radiateur ;
  • peinture radiateur.
PEI-014 Plus-value polychromie supérieure à 3 couleurs
Définition

Plus-value liée à la gestion de plusieurs couleurs dans le projet.

Unité

forfait

ou :

couleur supplémentaire

selon base de prix.

Déclencheur

Créer si :

selected_color_count >= 3
Règle de quantité MVP
quantity = 1

Règle avancée possible

Si la base de prix fonctionne par couleur supplémentaire :

quantity = selected_color_count - 2
Exclusions

Ne comprend pas :

  • fourniture peinture premium ;
  • teinte sur mesure hors standard ;
  • échantillons ;
  • essais couleur ;
  • décor mural spécifique.
PEI-015 Provision mise en place d’entoilage type Fissnet
Définition

Provision pour mise en place d’un entoilage localisé de type Fissnet ou équivalent, lorsque le besoin est identifié mais que la surface exacte n’est pas déterminée.

Unité

forfait

Déclencheurs

Créer si :

requested_fissnet_provision == true

ou si les photos / observations indiquent fissures ou supports sensibles sans surface mesurable.

Règle de quantité
quantity = 1

Anti-double comptage

Si PEI-016 est généré sur toute la surface concernée :

do not generate PEI-015 for the same room

Exclusions

Ne comprend pas :

  • ratissage complet ;
  • peinture ;
  • traitement structurel fissures ;
  • reprise gros œuvre ;
  • diagnostic fissuration.
PEI-016 Entoilage de support
Définition

Mise en place d’un entoilage de support sur murs existants avant finition.

Unité

Déclencheur

Créer systématiquement en standard et premium.

quality_level in ["standard", "premium"]

et :

room_to_renovate == true
Règle de quantité
quantity = existing_wall_surface_to_paint_m2

Exceptions

Ne pas générer sur :

  • surfaces BA13 neuves traitées par PEI-012 ;
  • surfaces carrelées ;
  • surfaces papier peint si le support spécifique est traité ailleurs ;
  • surfaces décoratives si le support spécifique est inclus ailleurs.

Anti-double comptage

Si PEI-015 provision entoilage est générée pour une pièce sans surface précise :

do not generate PEI-016 unless surface is known

Exclusions

Ne comprend pas :

  • ratissage ;
  • impression ;
  • peinture ;
  • traitement structurel fissures ;
  • toile décorative finale.
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version mise à jour avec BA13 neuf, entoilage, polychromie et radiateurs

Objectif du lot

Le lot 7 couvre les prestations de préparation, impression, peinture, finition et décoration des murs, plafonds, boiseries et portes.

Ce lot comprend :

  • préparation légère des murs ;
  • ratissage partiel ;
  • ratissage complet ;
  • impression murs ;
  • peinture murs 2 couches ;
  • impression plafonds ;
  • peinture plafonds 2 couches ;
  • peinture boiseries / portes ;
  • pose papier peint ;
  • enduit décoratif / peinture premium ;
  • mise en peinture des surfaces BA13 neuves ;
  • provision dépose / repose radiateur à eau pour peinture ;
  • plus-value polychromie ;
  • provision entoilage type Fissnet ;
  • entoilage de support.

Ce lot ne doit pas chiffrer :

  • création de cloisons ;
  • création de doublages ;
  • création de faux plafonds ;
  • dépose de radiateurs définitive ;
  • remplacement de portes ;
  • fourniture de portes ;
  • carrelage mural ;
  • faïence ;
  • sols ;
  • travaux structurels.

Prestations du lot 7

CodePrestation
PEI-001Préparation légère des murs
PEI-003Ratissage partiel
PEI-004Ratissage complet
PEI-005Impression murs
PEI-006Peinture murs 2 couches
PEI-007Impression plafonds
PEI-008Peinture plafonds 2 couches
PEI-009Peinture boiseries / portes
PEI-010Pose papier peint
PEI-011Enduit décoratif / peinture premium
PEI-012Mise en peinture – Préparation + Finition BA13 neuf
PEI-013Provision dépose / repose radiateur à eau pour peinture
PEI-014Plus-value polychromie supérieure à 3 couleurs
PEI-015Provision mise en place d’entoilage type Fissnet
PEI-016Entoilage de support

Prestation retirée

La prestation suivante est retirée :

Ancien codePrestationStatut
PEI-002Rebouchage / reprise ponctuelleRetirée du lot 7

Les reprises ponctuelles liées à des démolitions, réseaux ou supports techniques doivent être traitées dans les lots concernés, notamment :

PLA-010 Reprise localisée de support

Calcul des surfaces

7.1 Surface plafond

Priorité 1 :

room_ceiling_surface_m2 = room.area_m2

Priorité 2 :

room_ceiling_surface_m2 = room.length_m × room.width_m

7.2 Surface murs

Priorité 1 :

room_wall_surface_m2 = room.perimeter_m × ceiling_height_m - openings_area_m2

Priorité 2 :

room_wall_surface_m2 = 2 × (room.length_m + room.width_m) × ceiling_height_m - openings_area_m2

Priorité 3 :

room_wall_surface_m2 = 2 × (room.length_m + room.width_m) × default_ceiling_height_m

avec hypothèse.

Valeur par défaut :

"default_ceiling_height_m": 2.50

7.3 Surfaces existantes vs BA13 neuf

Le moteur doit distinguer :

{
"existing_wall_surface_to_paint_m2": "murs existants",
"existing_ceiling_surface_to_paint_m2": "plafonds existants",
"new_ba13_surface_to_finish_m2": "cloisons, doublages ou faux plafonds neufs"
}

Les surfaces BA13 neuves doivent être traitées par :

PEI-012

et ne doivent pas être doublées avec PEI-005 à PEI-008.

Règles générales par niveau de qualité

8.1 Éco

Le moteur propose :

PEI-001 préparation légère des murs

PEI-005 impression murs

PEI-006 peinture murs 2 couches

PEI-007 impression plafonds

PEI-008 peinture plafonds 2 couches

PEI-009 peinture boiseries / portes si portes non changées

Ne pas proposer automatiquement :

  • ratissage complet ;
  • entoilage ;
  • papier peint ;
  • peinture décorative.

8.2 Standard

Le moteur propose par défaut :

PEI-004 ratissage complet

PEI-016 entoilage de support

PEI-005 impression murs

PEI-006 peinture murs 2 couches

PEI-007 impression plafonds

PEI-008 peinture plafonds 2 couches

PEI-009 peinture boiseries / portes si portes non changées

PEI-003 ratissage partiel est proposé uniquement si le client le demande en remplacement ou complément.

8.3 Premium

Le moteur propose par défaut :

PEI-004 ratissage complet

PEI-016 entoilage de support

PEI-005 impression murs

PEI-006 peinture murs 2 couches

PEI-007 impression plafonds

PEI-008 peinture plafonds 2 couches

PEI-009 peinture boiseries / portes si portes non changées

PEI-011 enduit décoratif / peinture premium reste uniquement à la demande du client.

Règles anti-double comptage

10.1 Surfaces BA13 neuves

Les surfaces BA13 neuves sont traitées par :

PEI-012

Elles ne doivent pas être reprises dans :

PEI-004

PEI-005

PEI-006

PEI-007

PEI-008

PEI-016

sauf paramétrage contraire.

10.2 Ratissage

Priorité

PEI-004 ratissage complet > PEI-003 ratissage partiel > PEI-001 préparation légère

Ne jamais générer PEI-001, PEI-003 et PEI-004 sur la même surface.

10.3 Papier peint

Si PEI-010 est généré sur une surface :

do not generate PEI-006 on that same surface

10.4 Enduit décoratif

Si PEI-011 est généré sur une surface :

do not generate PEI-006 on that same surface

10.5 Portes

Si les portes sont changées :

do not generate PEI-009

sauf si portes neuves à peindre.

10.6 Radiateurs

Si les radiateurs à eau sont remplacés ou déplacés :

do not generate PEI-013

Si radiateurs à eau conservés :

generate PEI-013 as provision

10.7 Entoilage

Si PEI-016 est généré avec surface connue :

do not generate PEI-015 for same surface

Si PEI-015 est généré en provision sans surface connue :

do not generate PEI-016 unless surface becomes available

Interactions avec les autres lots

11.1 Avec lot 2 — Cloisons / Doublages / Faux plafonds

Les surfaces neuves issues du lot 2 doivent alimenter :

PEI-012

11.2 Avec lot CVC

Si chauffage à eau et radiateurs conservés :

PEI-013 provision dépose / repose radiateur à eau pour peinture

11.3 Avec lot Menuiserie

Si les portes sont remplacées :

do not generate PEI-009

Si les portes sont conservées :

generate PEI-009

11.4 Avec lot Salle de bain / Cuisine

Les surfaces carrelées ou faïencées ne doivent pas être peintes.

Le moteur doit exclure des surfaces PEI :

tile_wall_surface_m2

faience_surface_m2

decorative_wall_covering_surface_m2

11.5 Avec lot Électricité / Plomberie

Les reprises localisées liées aux saignées ou modifications techniques ne sont pas PEI-002.

Elles doivent être traitées par :

PLA-010

Puis les surfaces réparées peuvent ensuite intégrer le lot peinture si elles sont dans une pièce à rénover.

Gestion du niveau Éco / Standard / Premium

12.1 Éco

Créer par défaut :

PEI-001

PEI-005

PEI-006

PEI-007

PEI-008

PEI-009 si portes non changées

12.2 Standard

Créer par défaut :

PEI-004

PEI-016

PEI-005

PEI-006

PEI-007

PEI-008

PEI-009 si portes non changées

PEI-003 uniquement si client demande ratissage partiel.

12.3 Premium

Créer par défaut :

PEI-004

PEI-016

PEI-005

PEI-006

PEI-007

PEI-008

PEI-009 si portes non changées

PEI-011 uniquement si client demande une finition décorative ou premium spécifique.

Format de sortie attendu

Chaque ligne du lot 7 doit respecter ce format :

{
"lot": "Murs / Plafonds / Peinture",
"code": "PEI-006",
"label": "Peinture murs 2 couches",
"room_id": "room_2",
"room_name": "Chambre",
"unit": "m2",
"quantity": 34.5,
"quantity_formula": "existing_wall_surface_to_paint_m2",
"pricing_mode": "unit_price",
"source": "room_to_renovate",
"confidence": 0.85,
"is_assumption": true,
"assumption_reason": "Surface murale calculée depuis périmètre et hauteur sous plafond",
"user_validation_required": false,
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Pour BA13 neuf :

{
"lot": "Murs / Plafonds / Peinture",
"code": "PEI-012",
"label": "Mise en peinture – Préparation + Finition BA13 neuf",
"unit": "m2",
"quantity": 18.2,
"quantity_formula": "new_ba13_wall_surface_m2 + new_ba13_ceiling_surface_m2",
"source": "lot_2_created_surfaces",
"confidence": 0.90,
"is_assumption": false
}

Règles de validation

Avant génération du lot 7, le moteur doit vérifier :

{
"has_validated_rooms": true,
"has_room_surfaces": true,
"has_room_types": true,
"has_quality_level": true,
"has_ceiling_height_or_default": true
}

Si hauteur sous plafond absente :

use default_ceiling_height_m = 2.50

Si surface pièce absente :

block painting pricing for that room

Message :

Impossible de chiffrer la peinture d’une pièce sans surface validée.

Résumé des données nécessaires

Obligatoire

DonnéeSource
pièces validéesJSON écran 2
surface des piècesJSON écran 2
type de pièceJSON écran 2
niveau de qualitéécran 0
pièces à rénoverécran 2
hauteur sous plafond ou valeur par défautJSON / défaut

Automatiquement déduit

DonnéeSource
surface murspérimètre × hauteur
surface plafondssurface sol
ratissage completstandard / premium
entoilagestandard / premium
impression murs/plafondspièce à rénover
peinture murs/plafondspièce à rénover
peinture portesportes non changées
provision radiateurchauffage à eau + radiateurs conservés

Personnalisation uniquement

PrestationSource
ratissage partieldemande client
papier peintdemande client
enduit décoratif / peinture premiumdemande client
polychromienombre de couleurs client
provision Fissnetdemande client ou observation
peinture portes neuvesdemande client / menuiserie

Non demandé au client en MVP

DonnéeRaison
état détaillé de chaque murdifficile sans visite
nombre exact de fissurestraité en provision
plan précis des couleurspersonnalisation ultérieure
marque peinturebase produit / gamme
support exact de chaque murhypothèse selon pièce
surface exacte derrière radiateursprovision

Règle produit finale

Le lot 7 doit appliquer la logique suivante :

1. Identifier les pièces à rénover.

2. Calculer surfaces murs et plafonds.

3. Séparer surfaces existantes et surfaces BA13 neuves.

4. Appliquer les règles de préparation selon niveau de qualité.

5. Appliquer impression et peinture systématiquement si pièce rénovée.

6. Ajouter peinture portes si portes non changées.

7. Ajouter entoilage en standard et premium.

8. Ajouter BA13 neuf uniquement sur surfaces créées par le lot 2.

9. Ajouter papier peint, finition décorative ou polychromie uniquement si demandé.

10. Ajouter provision radiateur à eau si radiateurs conservés.

11. Éviter tout double comptage entre préparation, ratissage, entoilage, BA13 neuf et finitions décoratives.

Le devis doit rester clair :

Les prestations de peinture sont générées selon les pièces à rénover et le niveau de qualité. Les finitions spécifiques comme papier peint, enduit décoratif ou polychromie sont ajoutées uniquement si le client les sélectionne.

Lot 8

Salle de bain

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
SDB-004Étanchéité sous carrelage SPEC10%Règle définie
SDB-005Pose faïence murale standard10%Règle définie + choix client
SDB-006Pose faïence petit format / calepinage10%Choix client
SDB-007Pose receveur extra-platu10%Règle définie
SDB-008Pose paroi de douche / pare-baignoireu10%Règle définie + choix client
SDB-009Pose meuble vasqueu10%Règle définie
SDB-010Pose colonne de doucheu10%Règle définie + choix client
SDB-011Pose mitigeur vasqueu10%Règle définie
SDB-013Fourniture et pose baignoire avec tablier à carreler et trappe 20x20u10%Règle définie + choix client
SDB-014Fourniture et pose baignoireu10%Règle définie + choix client
SDB-015Fourniture et pose meuble colonne salle de bainu10%Choix client
SDB-016Pose miroir salle de bainu10%Règle définie
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

4.1 Données issues du JSON validé du plan

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"length_m": null,
"width_m": null,
"perimeter_m": null,
"ceiling_height_m": null,
"type": null,
"name": null,
"visual_evidence": {
"sanitary_elements": [],
"fixed_features": []
},
"layout_fidelity": {}
}

4.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"hot_water_type": null,
"heating_type": null,
"project_description": null,
"quality_level": null
}

4.3 Données issues de l’écran 2

Le moteur utilise :

{
"validated_rooms": [],
"rooms_to_renovate": [],
"room_type_overrides": [],
"room_area_overrides": [],
"validated_sanitary_elements": []
}

4.4 Données issues de la personnalisation

Le moteur peut recevoir :

{
"bathroom_customization": {
"bathroom_type_by_room": [],
"target_wall_tile_type": null,
"target_wall_tile_surface_m2": null,
"tile_height_m": null,
"shower_receiver_selected": false,
"bathtub_selected": false,
"bathtub_type": null,
"shower_screen_selected": false,
"bath_screen_selected": false,
"vanity_type": null,
"mirror_count": null,
"bathroom_column_furniture_selected": false,
"shower_column_selected": false
}
}
3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

Aucune donnée client supplémentaire obligatoire n’est recommandée pour le MVP.

Le moteur peut générer automatiquement la salle de bain à partir :

  • du type de pièce : SDB / SDE / WC ;
  • de la surface ;
  • du niveau de qualité ;
  • des équipements détectés ;
  • des choix de personnalisation éventuels.

Données optionnelles utiles mais non bloquantes :

  • choix baignoire ou douche ;
  • choix simple vasque ou double vasque ;
  • choix faïence standard ou petit format ;
  • choix meuble colonne ;
  • choix miroir spécifique ;
  • choix hauteur de faïence.

Variables calculées

Avant de générer le lot 8, le moteur doit calculer :

{
"bathroom_count": null,
"shower_room_count": null,
"renovated_bathroom_count": null,
"renovated_shower_room_count": null,
"bathroom_wall_surface_m2": null,
"wall_tile_surface_m2": null,
"spec_wall_surface_m2": null,
"standard_wall_tile_area_m2": null,
"small_format_wall_tile_area_m2": null,
"shower_receiver_count": null,
"shower_screen_count": null,
"bath_screen_count": null,
"single_vanity_count": null,
"double_vanity_count": null,
"vanity_mixer_count": null,
"shower_column_count": null,
"standard_bathtub_count": null,
"tiled_apron_bathtub_count": null,
"bathroom_column_furniture_count": null,
"bathroom_mirror_count": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

SDB-004 Étanchéité sous carrelage SPEC
Définition

Protection à l’eau sous carrelage mural ou zones exposées à l’eau dans une salle de bain ou salle d’eau.

Unité

Déclencheur

Créer systématiquement si la salle de bain ou salle d’eau est à rénover.

room_to_renovate == true

et :

room.type in ["bathroom", "sdb", "salle_de_bain", "shower_room", "sde", "salle_d_eau"]

Règle de quantité

Priorité 1 :

quantity = wall_tile_surface_m2

Priorité 2 :

quantity = spec_wall_surface_m2

Priorité 3 :

quantity = room.perimeter_m × default_spec_height_m

avec hypothèse.

Distinction avec le lot Sols

SDB-004 concerne les protections sous carrelage mural ou zones verticales de salle de bain.

Le SPEC sol sous carrelage reste traité par :

SOL-016 Protection à l’eau sous carrelage
Exclusions

Ne comprend pas :

  • carrelage ;
  • faïence ;
  • SPEC sol si traité par SOL-016 ;
  • SEL complet ;
  • receveur ;
  • douche italienne ;
  • plomberie.
SDB-005 Pose faïence murale standard
Définition

Pose de faïence murale standard dans salle de bain ou salle d’eau.

Unité

Déclencheurs

Créer si :

target_wall_tile_type == "standard"

ou si aucun carrelage mural spécifique n’est choisi.

Par défaut, pour une pièce d’eau rénovée :

target_wall_tile_type = "standard"

sauf si le client choisit petit format, mosaïque ou calepinage spécifique.

Règle de quantité
quantity = wall_tile_surface_m2

Anti-double comptage

Si SDB-006 est généré sur la même surface :

do not generate SDB-005

Exclusions

Ne comprend pas :

  • fourniture faïence si traitée en base produit ;
  • SPEC ;
  • préparation lourde du support ;
  • plomberie ;
  • joints spéciaux premium si chiffrés séparément.
SDB-006 Pose faïence petit format / calepinage
Définition

Pose de faïence petit format, mosaïque ou pose avec calepinage spécifique.

Unité

Déclencheurs

Créer si le client choisit :

  • faïence petit format ;
  • mosaïque ;
  • zellige ;
  • pose décorative ;
  • calepinage spécifique ;
  • motif ;
  • pose complexe.

Créer aussi si :

target_wall_tile_type == "small_format_or_layout"
Règle de quantité
quantity = small_format_wall_tile_area_m2

Si toute la faïence est en petit format :

quantity = wall_tile_surface_m2

Niveau premium

Le niveau premium ne doit pas créer automatiquement SDB-006 sans produit ou choix esthétique spécifique.

Anti-double comptage

Si SDB-006 est généré :

do not generate SDB-005 on same surface

Exclusions

Ne comprend pas :

  • fourniture faïence si traitée en base produit ;
  • SPEC ;
  • préparation lourde ;
  • joints époxy si séparés ;
  • niches ;
  • plomberie.
SDB-007 Pose receveur extra-plat
Définition

Pose d’un receveur de douche extra-plat.

Unité

u

Déclencheur

Créer si la pièce est une salle d’eau.

room_bathroom_type == "shower_room"

Créer aussi si le client transforme une salle de bain en douche.

Règle de quantité
quantity = count(shower_rooms_to_renovate)

Par défaut :

1 receveur par salle d’eau

Exclusions

Ne comprend pas :

  • douche à l’italienne ;
  • évacuation ;
  • alimentation eau ;
  • colonne de douche ;
  • paroi ;
  • carrelage ;
  • SPEC ;
  • receveur si fourni en base produit séparée.
SDB-008 Pose paroi de douche / pare-baignoire
Définition

Pose d’une paroi de douche ou d’un pare-baignoire.

Unité

u

Déclencheurs

Créer si :

room_bathroom_type == "shower_room"

ou si la salle de bain contient une baignoire avec pare-baignoire prévu.

Créer aussi si demandé par le client.

Règle de quantité

Salle d’eau :

quantity = shower_receiver_count

Salle de bain avec baignoire :

quantity = bath_screen_count

Si aucun détail :

quantity = count(shower_or_bath_screen_required)
Exclusions

Ne comprend pas :

  • receveur ;
  • baignoire ;
  • faïence ;
  • plomberie ;
  • percement complexe ;
  • renfort support.
SDB-009 Pose meuble vasque
Définition

Pose d’un meuble vasque simple ou double.

Unité

u

Déclencheurs

Créer systématiquement si salle de bain ou salle d’eau à rénover.

room_to_renovate == true

et :

room_bathroom_type in ["bathroom", "shower_room"]

Règle simple / double vasque

Si :

bathroom.area_m2 < 3

alors :

vanity_type = "single"

Sinon :

vanity_type = "double"

Override client :

client selected vanity type overrides automatic rule

Règle de quantité
quantity = 1 meuble vasque par salle de bain ou salle d’eau

Attribut à ajouter :

{
"vanity_type": "single | double"
}
Exclusions

Ne comprend pas :

  • alimentation EF/EC ;
  • évacuation ;
  • vannes d’arrêt ;
  • robinetterie si SDB-011 séparé ;
  • miroir ;
  • meuble colonne ;
  • électricité miroir.
SDB-010 Pose colonne de douche
Définition

Pose d’une colonne de douche.

Unité

u

Déclencheurs

Créer si :

room_bathroom_type == "shower_room"

Créer aussi si la salle de bain avec baignoire prévoit une fonction douche ou un pare-baignoire.

Règle de quantité
quantity = count(shower_columns_required)

Par défaut :

1 colonne de douche par salle d’eau

Exclusions

Ne comprend pas :

  • alimentation EF/EC ;
  • receveur ;
  • paroi ;
  • baignoire ;
  • robinetterie vasque ;
  • faïence.
SDB-011 Pose mitigeur vasque
Définition

Pose d’un mitigeur de vasque ou lavabo.

Unité

u

Déclencheur

Créer systématiquement avec SDB-009.

Règle de quantité

Si meuble vasque simple :

quantity = 1

Si meuble double vasque :

quantity = 2
Formule
quantity = 1 if vanity_type == "single"
quantity = 2 if vanity_type == "double"
Exclusions

Ne comprend pas :

  • meuble vasque ;
  • alimentation EF/EC ;
  • vannes d’arrêt ;
  • siphon ;
  • robinetterie douche ;
  • robinetterie baignoire.
SDB-013 Fourniture et pose d’une baignoire avec tablier à carreler et trappe 20x20
Définition

Fourniture et pose d’une baignoire avec tablier à carreler et trappe de visite 20x20.

Unité

u

Déclencheurs

Créer si la pièce est une salle de bain à rénover et non une salle d’eau.

room_bathroom_type == "bathroom"

et si le client choisit ou si le scénario prévoit :

bathtub_type == "tiled_apron"
Règle de quantité
quantity = count(bathrooms_with_tiled_apron_bathtub)

Par défaut :

quantity = 1 per bathroom concerned
Priorité

Si SDB-013 est généré :

do not generate SDB-014 for same room

Exclusions

Ne comprend pas :

  • alimentation EF/EC ;
  • évacuation ;
  • faïence sur tablier si chiffrée ailleurs ;
  • SPEC ;
  • pare-baignoire ;
  • robinetterie baignoire si traitée séparément.

Interaction faïence

Le tablier à carreler peut augmenter la surface de faïence.

Le moteur doit transmettre :

{
"additional_tile_surface_from_bathtub_apron_m2": null
}

vers SDB-005 ou SDB-006.

SDB-014 Fourniture et pose d’une baignoire
Définition

Fourniture et pose d’une baignoire standard.

Unité

u

Déclencheurs

Créer si la pièce est une salle de bain à rénover et non une salle d’eau.

room_bathroom_type == "bathroom"

et si aucun tablier à carreler n’est demandé.

Règle de quantité
quantity = count(bathrooms_with_standard_bathtub)

Par défaut :

quantity = 1 per bathroom concerned
Priorité

Si SDB-013 est généré :

do not generate SDB-014 for same room

Exclusions

Ne comprend pas :

  • alimentation EF/EC ;
  • évacuation ;
  • pare-baignoire ;
  • robinetterie baignoire si séparée ;
  • faïence ;
  • SPEC ;
  • habillage spécifique.
SDB-015 Fourniture et pose d’un meuble colonne de salle de bain
Définition

Fourniture et pose d’un meuble colonne de salle de bain.

Unité

u

Déclencheur

Créer uniquement si choix du client.

bathroom_column_furniture_selected == true

ou si un produit meuble colonne est sélectionné.

Règle de quantité
quantity = count(selected_bathroom_column_furniture)

Par défaut si choix global :

quantity = 1
Exclusions

Ne comprend pas :

  • meuble vasque ;
  • miroir ;
  • éclairage ;
  • fixation renforcée si support spécifique ;
  • raccordement électrique.
SDB-016 Pose d’un miroir de salle de bain
Définition

Pose d’un miroir de salle de bain.

Unité

u

Déclencheur

Créer systématiquement si salle de bain ou salle d’eau à rénover.

room_to_renovate == true

et :

room_bathroom_type in ["bathroom", "shower_room"]

Règle de quantité
quantity = 1 per bathroom or shower_room

Si le client sélectionne plusieurs miroirs :

quantity = client_selected_mirror_count
Exclusions

Ne comprend pas :

  • alimentation électrique miroir ;
  • miroir lumineux si produit spécifique ;
  • meuble miroir ;
  • applique ;
  • percement complexe.

L’alimentation électrique est traitée dans le lot Électricité :

ELEC-019 Alimentation électrique miroir
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version prestations unitaires, sans forfait global

Objectif du lot

Le lot 8 couvre les prestations visibles et spécifiques à la salle de bain ou salle d’eau :

  • étanchéité sous carrelage mural / zones humides ;
  • faïence murale ;
  • receveur extra-plat ;
  • paroi de douche ou pare-baignoire ;
  • meuble vasque ;
  • colonne de douche ;
  • mitigeur vasque ;
  • baignoire ;
  • meuble colonne ;
  • miroir.

Ce lot ne doit pas chiffrer :

  • alimentation eau froide / eau chaude ;
  • évacuation PVC ;
  • déplacement réseaux ;
  • vannes d’arrêt ;
  • raccordement électroménager ;
  • pose ballon d’eau chaude ;
  • peinture générale ;
  • sols ;
  • SPEC sol sous carrelage ;
  • faux plafonds ;
  • électricité.

Ces éléments sont traités dans les autres lots.

Prestations retirées

Les prestations suivantes sont supprimées du lot 8 :

Ancien codePrestationStatut
SDB-001Création salle de bain simpleRetirée
SDB-002Rénovation salle de bain standardRetirée
SDB-003Salle de bain premium complèteRetirée
SDB-012Accessoires salle de bainRetirée

Le moteur ne doit plus générer de forfait global de salle de bain.

Prestations du lot 8

CodePrestation
SDB-004Étanchéité sous carrelage SPEC
SDB-005Pose faïence murale standard
SDB-006Pose faïence petit format / calepinage
SDB-007Pose receveur extra-plat
SDB-008Pose paroi de douche / pare-baignoire
SDB-009Pose meuble vasque
SDB-010Pose colonne de douche
SDB-011Pose mitigeur vasque
SDB-013Fourniture et pose d’une baignoire avec tablier à carreler et trappe 20x20
SDB-014Fourniture et pose d’une baignoire
SDB-015Fourniture et pose d’un meuble colonne de salle de bain
SDB-016Pose d’un miroir de salle de bain

Définitions métier

6.1 Salle de bain

Une pièce est considérée comme salle de bain si :

room.type in ["bathroom", "sdb", "salle_de_bain"]

ou si le plan / la personnalisation indique une baignoire.

6.2 Salle d’eau

Une pièce est considérée comme salle d’eau si :

room.type in ["shower_room", "sde", "salle_d_eau"]

ou si le plan / la personnalisation indique une douche sans baignoire.

6.3 Pièce d’eau à rénover

Une pièce est une pièce d’eau à rénover si :

room.type in ["bathroom", "sdb", "salle_de_bain", "shower_room", "sde", "salle_d_eau"]

et :

room_to_renovate == true

Détermination automatique douche / baignoire

8.1 Salle d’eau

Si la pièce est une salle d’eau :

room_bathroom_type = "shower_room"

Créer par défaut :

  • receveur extra-plat ;
  • paroi de douche ;
  • colonne de douche ;
  • meuble vasque ;
  • mitigeur vasque ;
  • miroir.

Ne pas créer de baignoire.

8.2 Salle de bain

Si la pièce est une salle de bain :

room_bathroom_type = "bathroom"

Créer par défaut :

  • baignoire ;
  • pare-baignoire si demandé ou selon scénario ;
  • meuble vasque ;
  • mitigeur vasque ;
  • miroir.

Ne pas créer de receveur extra-plat sauf si la personnalisation transforme la pièce en salle d’eau.

8.3 Override client

Si le client choisit explicitement douche ou baignoire :

client choice overrides automatic room type

Calcul des surfaces de faïence murale

9.1 Surface prioritaire

Priorité 1 :

wall_tile_surface_m2 = client_selected_wall_tile_surface_m2

Priorité 2 :

wall_tile_surface_m2 = wall_tile_height_m × room_perimeter_m - openings_area_m2

Priorité 3 :

wall_tile_surface_m2 = default_wall_tile_surface_by_room_type

avec hypothèse.

9.2 Hauteur de faïence par défaut

Le moteur doit utiliser une table paramétrable.

Exemple de structure :

{
"default_wall_tile_height_by_quality": {
"eco": "configured_value",
"standard": "configured_value",
"premium": "configured_value"
}
}

Ne pas coder ces hauteurs en dur dans le moteur.

Règles anti-double comptage

11.1 Forfaits supprimés

Le moteur ne doit jamais générer :

SDB-001

SDB-002

SDB-003

11.2 Baignoire

Si SDB-013 est généré :

do not generate SDB-014

Si SDB-014 est généré :

do not generate SDB-013

11.3 Salle d’eau

Si salle d’eau :

generate SDB-007

do not generate SDB-013 or SDB-014

11.4 Salle de bain

Si salle de bain :

generate SDB-013 or SDB-014

do not generate SDB-007 unless client converts to shower room

11.5 Faïence

Si SDB-006 est généré :

do not generate SDB-005 for same surface

11.6 Meuble vasque / mitigeur

SDB-011 dépend de SDB-009.

SDB-011 quantity must follow vanity_type from SDB-009

11.7 Miroir

SDB-016 est systématique.

Ne pas le confondre avec :

ELEC-019 alimentation miroir

Interactions avec les autres lots

12.1 Avec lot 4 — Plomberie

Le lot 4 gère :

  • alimentation EF/EC ;
  • évacuation PVC ;
  • vannes d’arrêt ;
  • raccordement WC ;
  • déplacement réseaux.

Le lot 8 gère les équipements visibles.

Exemples :

ÉquipementLot 8Lot 4
meuble vasqueSDB-009PLO-001 + PLO-002 + PLO-013
baignoireSDB-013 ou SDB-014PLO-001 + PLO-002
doucheSDB-007 + SDB-010PLO-001 + PLO-002
miroirSDB-016ELEC-019 si lumineux

12.2 Avec lot 6 — Sols

Le SPEC sol sous carrelage est traité par :

SOL-016

Le lot 8 gère le SPEC mural ou sous faïence via :

SDB-004

12.3 Avec lot 7 — Peinture

Les surfaces faïencées ne doivent pas être peintes.

Le moteur doit transmettre :

{
"wall_tile_surface_m2": null,
"paint_exclusion_surface_m2": null
}

au lot Peinture.

12.4 Avec lot Électricité

Le miroir peut générer :

ELEC-019 alimentation miroir

La colonne de douche ou baignoire ne génère pas d’électricité sauf équipement spécifique.

12.5 Avec lot Menuiserie

Le meuble colonne ou meuble vasque n’est pas considéré comme menuiserie sur mesure sauf produit spécifique.

Gestion du niveau Éco / Standard / Premium

13.1 Éco

Règle :

Faïence standard

Meuble vasque selon surface

Baignoire standard si salle de bain

Receveur extra-plat si salle d’eau

Miroir systématique

13.2 Standard

Règle :

Faïence standard

Meuble simple ou double selon surface

Receveur extra-plat en salle d’eau

Baignoire standard en salle de bain

Miroir systématique

13.3 Premium

Règle :

Faïence standard ou petit format selon produit choisi

Double vasque si surface >= 3 m²

Baignoire avec tablier à carreler si sélectionnée

Miroir systématique

Meuble colonne uniquement si client choisit

Le premium ne doit pas créer automatiquement :

  • meuble colonne ;
  • faïence petit format ;
  • baignoire à tablier à carreler ;
  • pare-baignoire spécifique ;

sans produit ou choix client.

Format de sortie attendu

Chaque ligne du lot 8 doit respecter ce format :

{
"lot": "Salle de bain",
"code": "SDB-009",
"label": "Pose meuble vasque",
"room_id": "room_4",
"room_name": "Salle de bain",
"unit": "u",
"quantity": 1,
"quantity_formula": "1 per renovated bathroom or shower room",
"pricing_mode": "unit_price",
"source": "room_type_and_surface",
"confidence": 0.85,
"is_assumption": true,
"assumption_reason": "Meuble vasque généré automatiquement selon surface de salle de bain",
"user_validation_required": false,
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Pour meuble vasque :

{
"vanity_type": "single | double",
"vanity_rule": "single if area < 3m2, double otherwise"
}

Pour baignoire :

{
"code": "SDB-014",
"condition": "bathroom renovated and not shower_room"
}

Règles de validation

Avant génération du lot 8, le moteur doit vérifier :

{
"has_validated_rooms": true,
"has_room_types": true,
"has_room_surfaces": true,
"has_bathroom_or_shower_room": true,
"has_quality_level": true
}

Si aucune salle de bain ou salle d’eau n’est détectée :

do not generate Lot 8

Si type SDB/SDE incertain :

{
"is_assumption": true,
"user_validation_required": true,
"assumption_reason": "Type salle de bain / salle d’eau à confirmer"
}

Si surface absente :

block vanity type rule and use client validation

Résumé des données nécessaires

Obligatoire

DonnéeSource
pièce SDB ou SDE validéeJSON écran 2
surface de la pièceJSON écran 2
pièce à rénoverécran 2
niveau de qualitéécran 0

Automatiquement déduit

DonnéeSource
salle d’eau ou salle de baintype pièce / fixture
receveur extra-platsalle d’eau
baignoiresalle de bain
meuble simple/double vasquesurface < ou >= 3 m²
mitigeur vasquetype de vasque
miroirsystématique
SPECSDB/SDE rénovée
faïence standarddéfaut

Personnalisation uniquement

PrestationSource
faïence petit format / calepinagechoix client / produit
baignoire avec tablier à carrelerchoix client / produit
meuble colonnechoix client
plusieurs miroirschoix client
pare-baignoire spécifiquechoix client

Non demandé au client en MVP

DonnéeRaison
hauteur exacte de faïencevaleur paramétrable / personnalisable
modèle exact baignoirebase produit
modèle exact meuble vasquebase produit
surface exacte tablier baignoireestimée ou générée depuis produit
nombre exact accessoiresprestation supprimée
détail robinetterie doucheproduit / personnalisation future

Règle produit finale

Le lot 8 doit appliquer la logique suivante :

1. Identifier les salles de bain et salles d’eau à rénover.

2. Supprimer toute logique de forfait global.

3. Générer SPEC systématiquement si SDB/SDE rénovée.

4. Générer faïence murale standard par défaut.

5. Générer faïence petit format uniquement si produit ou choix client.

6. Si salle d’eau : générer receveur, paroi douche, colonne douche.

7. Si salle de bain : générer baignoire standard ou baignoire avec tablier selon choix.

8. Générer meuble vasque simple si surface < 3 m², double sinon.

9. Générer mitigeur selon simple ou double vasque.

10. Générer miroir systématiquement.

11. Générer meuble colonne uniquement si choix client.

12. Créer les dépendances vers plomberie, électricité, sols et peinture.

Le devis doit rester clair :

La salle de bain est chiffrée par prestations unitaires selon le type de pièce, la surface et les choix de personnalisation. Aucun forfait global salle de bain n’est généré automatiquement.

Lot 9

Cuisine

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
CUI-001Provision pour fourniture cuisine équipéeml10%Règle définie
CUI-003Pose cuisine standardml10%Règle définie
CUI-004Pose cuisine premium / ajustements complexesml/forfait10%Règle définie + choix client
CUI-006Pose plan de travail stratifiéml10%Règle définie + choix client
CUI-007Pose plan de travail pierre / compact / quartzml/m²10%Choix client
CUI-008Pose crédence carrelage10%Règle définie + choix client
CUI-009Pose crédence premium10%Choix client
CUI-010Pose évier + robinetterieu10%Règle définie
CUI-011Pose électroménageru10%Règle définie + choix client
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

4.1 Données issues du JSON validé du plan

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"length_m": null,
"width_m": null,
"perimeter_m": null,
"type": null,
"name": null,
"visual_evidence": {
"kitchen_elements": [],
"fixed_features": []
},
"layout_fidelity": {}
}

4.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"hot_water_type": null,
"heating_type": null,
"project_description": null,
"quality_level": null
}

4.3 Données issues de l’écran 2

Le moteur utilise :

{
"validated_rooms": [],
"rooms_to_renovate": [],
"room_type_overrides": [],
"room_area_overrides": [],
"validated_kitchen_elements": []
}

4.4 Données issues de la personnalisation

Le moteur peut recevoir :

{
"kitchen_customization": {
"kitchen_linear_m": null,
"kitchen_layout_type": null,
"kitchen_supply_range": null,
"countertop_type": null,
"countertop_linear_m": null,
"backsplash_type": null,
"backsplash_height_m": null,
"backsplash_linear_m": null,
"sink_and_faucet_selected": true,
"appliances": [],
"premium_adjustments_required": false
}
}
3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

Aucune donnée client supplémentaire obligatoire n’est recommandée pour le MVP.

La donnée la plus utile pour ce lot est :

kitchen_linear_m

Mais elle ne doit pas bloquer le chiffrage.

Si le client ne donne pas le linéaire de cuisine, le moteur doit l’estimer à partir :

  • du plan validé ;
  • des éléments de cuisine visibles ;
  • de la surface de la cuisine ;
  • d’une table de ratios paramétrables.

Variables calculées

Avant de générer le lot Cuisine, le moteur doit calculer :

{
"kitchen_count": null,
"renovated_kitchen_count": null,
"kitchen_area_m2": null,
"kitchen_linear_m": null,
"kitchen_linear_m_source": null,
"countertop_linear_m": null,
"backsplash_linear_m": null,
"backsplash_area_m2": null,
"sink_count": null,
"faucet_count": null,
"appliance_count": null,
"standard_kitchen_installation_linear_m": null,
"premium_kitchen_installation_linear_m": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

CUI-001 Provision pour fourniture cuisine équipée
Définition

Provision pour fourniture d’une cuisine équipée calculée au mètre linéaire.

Unité

ml

Déclencheur

Créer si une cuisine est à rénover.

room.type in ["kitchen", "cuisine"]

et :

room_to_renovate == true
Règle de quantité
quantity = kitchen_linear_m

Source du linéaire

Le moteur doit indiquer :

{
"kitchen_linear_m_source": "client_input | plan_detection | area_estimate"
}

Niveau de gamme

Le prix au mL doit dépendre de :

{
"quality_level": "eco | standard | premium",
"kitchen_supply_range": "eco | standard | premium"
}

Si kitchen_supply_range n’est pas renseigné :

kitchen_supply_range = quality_level
Inclus

La provision couvre les éléments de cuisine équipée selon base prix :

  • meubles bas ;
  • meubles hauts ;
  • colonnes ;
  • façades ;
  • caissons ;
  • quincaillerie standard ;
  • éléments de rangement standards.
Exclusions

Ne comprend pas :

  • pose cuisine ;
  • plan de travail si chiffré séparément ;
  • crédence ;
  • évier ;
  • robinetterie ;
  • électroménager ;
  • plomberie ;
  • électricité ;
  • ajustements complexes premium si chiffrés par CUI-004.

Statut

Cette ligne doit être marquée comme provision.

"pricing_mode": "provision"
CUI-003 Pose cuisine standard
Définition

Pose d’une cuisine équipée standard, incluant meubles bas, meubles hauts et colonnes standards.

Unité

ml

Déclencheurs

Créer si :

quality_level in ["eco", "standard"]

et si une cuisine est à rénover.

Créer aussi si le client demande explicitement une pose standard.

Règle de quantité
quantity = kitchen_linear_m
Inclus

CUI-003 inclut :

  • pose meubles bas ;
  • pose meubles hauts ;
  • pose colonnes ;
  • réglages standards ;
  • assemblage standard ;
  • fixation standard.
Exclusions

Ne comprend pas :

  • fourniture cuisine ;
  • plan de travail ;
  • crédence ;
  • évier ;
  • robinetterie ;
  • électroménager ;
  • plomberie ;
  • électricité ;
  • ajustements complexes ;
  • habillages sur mesure.

Anti-double comptage

Si CUI-004 est généré :

do not generate CUI-003

CUI-004 Pose cuisine premium / ajustements complexes
Définition

Pose d’une cuisine premium ou pose avec ajustements complexes.

Unité

ml

ou :

forfait

selon base de prix.

Déclencheurs

Créer si :

quality_level == "premium"

et si une cuisine est à rénover.

Créer aussi si :

premium_adjustments_required == true

ou si le projet prévoit :

  • cuisine haut de gamme ;
  • meubles complexes ;
  • murs irréguliers ;
  • nombreux fileurs ;
  • ajustements sur mesure ;
  • plans particuliers ;
  • intégration complexe ;
  • cuisine avec colonnes nombreuses ;
  • cuisine encastrée ;
  • alignements précis.
Règle de quantité

Priorité 1 :

quantity = kitchen_linear_m

Priorité 2 :

quantity = 1 forfait

si l’ajustement complexe est global.

Inclus

CUI-004 inclut :

  • pose meubles bas ;
  • pose meubles hauts ;
  • pose colonnes ;
  • ajustements complexes ;
  • alignements ;
  • fileurs ;
  • découpes ou adaptations mineures ;
  • finitions de pose premium.
Exclusions

Ne comprend pas :

  • fourniture cuisine ;
  • plan de travail pierre si séparé ;
  • crédence ;
  • électroménager ;
  • plomberie ;
  • électricité ;
  • fabrication sur mesure complète si lot menuiserie.

Anti-double comptage

Si CUI-004 est généré :

do not generate CUI-003

CUI-006 Pose plan de travail stratifié
Définition

Pose d’un plan de travail stratifié.

Unité

ml

Déclencheurs

Créer si :

countertop_type == "laminate"

ou si le produit choisi est stratifié.

Créer par défaut en éco.

En standard, créer si aucun plan de travail pierre / compact / quartz n’est choisi.

Règle de quantité

Priorité 1 :

quantity = countertop_linear_m

Priorité 2 :

quantity = kitchen_linear_m × default_countertop_ratio

Le ratio doit être paramétrable.

Exclusions

Ne comprend pas :

  • fourniture plan de travail si traitée en base produit ;
  • évier ;
  • robinetterie ;
  • électroménager ;
  • crédence ;
  • plomberie ;
  • découpe complexe si chiffrée séparément.

Anti-double comptage

Si CUI-007 est généré :

do not generate CUI-006

CUI-007 Pose plan de travail pierre / compact / quartz
Définition

Pose d’un plan de travail en pierre, compact, quartz ou matériau premium.

Unité

ml

ou :

selon base de prix.

Déclencheurs

Créer si :

countertop_type in ["stone", "compact", "quartz", "ceramic", "premium"]

ou si le produit choisi appartient à une gamme premium.

Créer aussi en premium si le client a choisi ce type de plan de travail.

Ne pas créer automatiquement en premium sans produit ou choix client si le devis reste en provision.

Règle de quantité

Priorité 1 :

quantity = countertop_linear_m

Priorité 2 :

quantity = kitchen_linear_m × default_countertop_ratio
Exclusions

Ne comprend pas :

  • fourniture plan de travail si traitée en base produit ;
  • prise de gabarit si séparée ;
  • découpe évier / plaque si séparée ;
  • crédence ;
  • évier ;
  • robinetterie ;
  • plomberie ;
  • électroménager.

Anti-double comptage

Si CUI-007 est généré :

do not generate CUI-006

CUI-008 Pose crédence carrelage
Définition

Pose d’une crédence en carrelage standard.

Unité

Déclencheurs

Créer si :

backsplash_type == "tile"

ou si le produit choisi est une crédence carrelage standard.

Créer par défaut en éco ou standard si crédence prévue et qu’aucune crédence premium n’est choisie.

Règle de quantité

Priorité 1 :

quantity = backsplash_area_m2

Priorité 2 :

quantity = backsplash_linear_m × backsplash_height_m

Priorité 3 :

quantity = kitchen_linear_m × default_backsplash_height_m

default_backsplash_height_m doit être paramétrable.

Exclusions

Ne comprend pas :

  • fourniture carrelage si traitée en base produit ;
  • crédence premium ;
  • SPEC ;
  • préparation lourde ;
  • peinture ;
  • plan de travail.

Anti-double comptage

Si CUI-009 est généré :

do not generate CUI-008

CUI-009 Pose crédence premium
Définition

Pose d’une crédence premium : pierre, compact, quartz, verre, inox, zellige, mosaïque ou matériau décoratif complexe.

Unité

Déclencheurs

Créer si :

backsplash_type in ["premium", "stone", "compact", "quartz", "glass", "inox", "zellige", "mosaic"]

ou si le produit choisi impose une pose premium.

Créer uniquement si le client choisit une crédence premium ou si le produit le justifie.

Règle de quantité

Priorité 1 :

quantity = backsplash_area_m2

Priorité 2 :

quantity = backsplash_linear_m × backsplash_height_m

Priorité 3 :

quantity = kitchen_linear_m × default_backsplash_height_m
Exclusions

Ne comprend pas :

  • fourniture crédence si traitée en base produit ;
  • préparation lourde support ;
  • plan de travail ;
  • électricité ;
  • plomberie.

Anti-double comptage

Si CUI-009 est généré :

do not generate CUI-008

CUI-010 Pose évier + robinetterie
Définition

Pose d’un évier et de sa robinetterie de cuisine.

Unité

u

Déclencheur

Créer systématiquement si cuisine à rénover.

room.type in ["kitchen", "cuisine"]

et :

room_to_renovate == true

Créer aussi si le client sélectionne un évier ou une robinetterie cuisine.

Règle de quantité
quantity = 1 per renovated kitchen

Si plusieurs éviers sont explicitement prévus :

quantity = count(kitchen_sinks)
Exclusions

Ne comprend pas :

  • alimentation EF/EC ;
  • évacuation PVC ;
  • vannes d’arrêt ;
  • raccordement électroménager ;
  • plan de travail ;
  • découpe plan de travail si séparée ;
  • fourniture évier / robinetterie si traitée en base produit.

Les réseaux plomberie doivent être traités par :

PLO-001

PLO-002

PLO-013

CUI-011 Pose électroménager
Définition

Pose ou intégration d’équipements électroménagers de cuisine.

Unité

u

Équipements concernés

[

"hob",

"oven",

"dishwasher",

"fridge",

"hood",

"microwave",

"wine_cellar",

"washing_machine",

"dryer"

]

Déclencheurs

Créer si :

appliances[] exists

ou si cuisine à rénover avec hypothèse électroménager.

Règle de quantité

Priorité 1 :

quantity = count(appliances selected by client)

Priorité 2 :

quantity = default_appliance_count_by_quality

La table doit être paramétrable.

Exemple de structure :

{
"default_appliance_count_by_quality": {
"eco": "configured_value",
"standard": "configured_value",
"premium": "configured_value"
}
}
Exclusions

Ne comprend pas :

  • fourniture électroménager si traitée en base produit ;
  • alimentation électrique ;
  • circuit spécialisé ;
  • raccordement plomberie ;
  • adaptation meuble complexe ;
  • évacuation ;
  • ventilation hotte complexe.

Les alimentations électriques sont traitées dans le lot Électricité.

Les raccordements plomberie électroménager sont traités dans :

PLO-012 Raccordement électroménager
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version mise à jour avec provision cuisine équipée en mL

Objectif du lot

Le lot Cuisine couvre les prestations visibles et spécifiques à la cuisine :

  • provision de fourniture de cuisine équipée ;
  • pose cuisine standard ;
  • pose cuisine premium / ajustements complexes ;
  • pose plan de travail ;
  • pose crédence ;
  • pose évier + robinetterie ;
  • pose électroménager.

Ce lot ne doit pas chiffrer :

  • alimentations électriques ;
  • circuits spécialisés ;
  • arrivées eau froide / eau chaude ;
  • évacuations PVC ;
  • vannes d’arrêt ;
  • raccordements plomberie finaux ;
  • raccordements électriques finaux ;
  • carrelage de sol ;
  • peinture générale ;
  • démolition cuisine existante.

Ces éléments sont traités dans les autres lots.

Prestations conservées ou modifiées

CodePrestation
CUI-001Provision pour fourniture cuisine équipée
CUI-003Pose cuisine standard
CUI-004Pose cuisine premium / ajustements complexes
CUI-006Pose plan de travail stratifié
CUI-007Pose plan de travail pierre / compact / quartz
CUI-008Pose crédence carrelage
CUI-009Pose crédence premium
CUI-010Pose évier + robinetterie
CUI-011Pose électroménager

Prestations retirées

Les prestations suivantes sont retirées :

Ancien codePrestationStatut
CUI-002Pose cuisine linéaire simpleAbsorbée par CUI-003
CUI-005Pose meubles hautsRetirée
CUI-012Raccordements finaux cuisineRetirée

3.1 Règle pour CUI-005

La pose des meubles hauts ne doit plus être une ligne séparée.

Elle est incluse dans :

CUI-003 Pose cuisine standard

ou :

CUI-004 Pose cuisine premium / ajustements complexes

3.2 Règle pour CUI-012

Les raccordements finaux cuisine sont retirés du lot Cuisine.

Ils doivent être traités dans :

PLO-012 Raccordement électroménager

pour les raccordements plomberie électroménager.

Et dans le lot Électricité pour les circuits et alimentations :

ELEC-007 Circuit plaque cuisson
ELEC-008 Circuit four / LL / LV / SL

Détermination du linéaire cuisine

7.1 Priorité de calcul

Priorité 1 :

kitchen_linear_m = client_provided_kitchen_linear_m

Priorité 2 :

kitchen_linear_m = detected_kitchen_linear_m_from_plan

Priorité 3 :

kitchen_linear_m = estimated_kitchen_linear_m_from_area

7.2 Estimation par surface

Si aucun linéaire n’est disponible, utiliser une table paramétrable.

Exemple de structure :

{
"kitchen_linear_m_estimation_by_area": {
"area_less_than_5m2": "configured_value",
"area_5_to_8m2": "configured_value",
"area_8_to_12m2": "configured_value",
"area_more_than_12m2": "configured_value"
}
}

Ne pas coder les valeurs en dur dans le moteur.

7.3 Statut de confiance

Si le linéaire est estimé :

{
"is_assumption": true,
"assumption_reason": "Linéaire cuisine estimé depuis la surface de la cuisine",
"user_validation_required": true
}

Si le linéaire est fourni par le client :

{
"is_assumption": false,
"confidence": 0.95
}

Règles par niveau de qualité

8.1 Éco

Le moteur propose :

CUI-001 provision fourniture cuisine équipée gamme éco

CUI-003 pose cuisine standard

CUI-006 plan de travail stratifié

CUI-008 crédence carrelage si crédence prévue

CUI-010 évier + robinetterie

CUI-011 électroménager selon sélection ou hypothèse minimale

8.2 Standard

Le moteur propose :

CUI-001 provision fourniture cuisine équipée gamme standard

CUI-003 pose cuisine standard

CUI-006 ou CUI-007 selon plan de travail choisi

CUI-008 crédence carrelage

CUI-010 évier + robinetterie

CUI-011 électroménager

8.3 Premium

Le moteur propose :

CUI-001 provision fourniture cuisine équipée gamme premium

CUI-004 pose cuisine premium / ajustements complexes

CUI-007 plan de travail pierre / compact / quartz si produit choisi ou gamme premium

CUI-009 crédence premium si produit choisi

CUI-010 évier + robinetterie

CUI-011 électroménager

Le niveau premium ne doit pas créer automatiquement une crédence premium sans produit choisi ou scénario esthétique.

Règles anti-double comptage

10.1 Pose cuisine

Si CUI-004 est généré :

do not generate CUI-003

Si CUI-003 est généré :

do not generate CUI-004

10.2 Meubles hauts

CUI-005 est supprimé.

Les meubles hauts sont inclus dans :

CUI-003 or CUI-004

10.3 Raccordements finaux

CUI-012 est supprimé.

Les raccordements sont traités dans :

PLO-012

ELEC-007

ELEC-008

10.4 Plan de travail

Si CUI-007 est généré :

do not generate CUI-006

Si CUI-006 est généré :

do not generate CUI-007

10.5 Crédence

Si CUI-009 est généré :

do not generate CUI-008

Si CUI-008 est généré :

do not generate CUI-009

10.6 Évier

CUI-010 ne doit pas inclure les réseaux plomberie.

Les réseaux sont dans :

PLO-001

PLO-002

PLO-013

10.7 Électroménager

CUI-011 ne doit pas inclure :

ELEC specialized circuits

PLO appliance connections

Interactions avec les autres lots

11.1 Avec lot Électricité

Cuisine rénovée peut générer :

ELEC-007 circuit plaque cuisson

ELEC-008 circuits four / lave-vaisselle / autres appareils

ELEC-009 RJ45 si prévu

ELEC-010 TV si prévu

ELEC-026 alimentation cave à vin si prévue

11.2 Avec lot Plomberie

Cuisine rénovée peut générer :

PLO-001 alimentation EF/EC évier

PLO-002 évacuation évier

PLO-013 vannes d’arrêt évier

PLO-012 raccordement lave-vaisselle

11.3 Avec lot Sols

Le sol de cuisine est traité par le lot Sols.

Si cuisine carrelée :

SOL-016 SPEC sous carrelage cuisine

11.4 Avec lot Peinture

La crédence doit être exclue des surfaces de peinture.

Le lot Cuisine transmet :

{
"backsplash_area_m2": null,
"paint_exclusion_surface_m2": null
}

11.5 Avec lot Menuiserie

Si la cuisine est sur mesure complète ou assimilable à de la menuiserie haut de gamme :

route to custom joinery lot instead of standard kitchen lot

Gestion du niveau Éco / Standard / Premium

12.1 Éco

Créer par défaut :

CUI-001 provision cuisine équipée gamme éco

CUI-003 pose cuisine standard

CUI-006 plan de travail stratifié

CUI-008 crédence carrelage si crédence prévue

CUI-010 évier + robinetterie

CUI-011 électroménager selon hypothèse minimale

12.2 Standard

Créer par défaut :

CUI-001 provision cuisine équipée gamme standard

CUI-003 pose cuisine standard

CUI-006 ou CUI-007 selon produit

CUI-008 crédence carrelage

CUI-010 évier + robinetterie

CUI-011 électroménager

12.3 Premium

Créer par défaut :

CUI-001 provision cuisine équipée gamme premium

CUI-004 pose cuisine premium / ajustements complexes

CUI-007 plan de travail premium si produit choisi

CUI-009 crédence premium si produit choisi

CUI-010 évier + robinetterie

CUI-011 électroménager

Le niveau premium ne doit pas créer automatiquement :

  • crédence premium sans produit ;
  • plan de travail pierre sans produit ;
  • électroménager haut de gamme non sélectionné.

Ces lignes doivent rester des provisions ou dépendre de la personnalisation.

Format de sortie attendu

Chaque ligne du lot Cuisine doit respecter ce format :

{
"lot": "Cuisine",
"code": "CUI-001",
"label": "Provision pour fourniture cuisine équipée",
"room_id": "room_3",
"room_name": "Cuisine",
"unit": "ml",
"quantity": 4.2,
"quantity_formula": "kitchen_linear_m",
"pricing_mode": "provision",
"source": "plan_detection_or_area_estimate",
"confidence": 0.70,
"is_assumption": true,
"assumption_reason": "Linéaire cuisine estimé depuis la surface de la cuisine",
"user_validation_required": true,
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Pour pose cuisine premium :

{
"lot": "Cuisine",
"code": "CUI-004",
"label": "Pose cuisine premium / ajustements complexes",
"unit": "ml",
"quantity": 4.2,
"source": "quality_level_premium",
"confidence": 0.80,
"is_assumption": true
}

Règles de validation

Avant génération du lot Cuisine, le moteur doit vérifier :

{
"has_validated_rooms": true,
"has_kitchen_room": true,
"has_kitchen_area": true,
"has_quality_level": true,
"has_kitchen_linear_m_or_estimation": true
}

Si aucune cuisine n’est détectée :

do not generate kitchen lot

Si la cuisine est détectée mais le linéaire est estimé :

{
"is_assumption": true,
"user_validation_required": true,
"warning": "Linéaire cuisine estimé à confirmer"
}

Si la cuisine est ouverte sur séjour :

generate kitchen lot once only

Résumé des données nécessaires

Obligatoire

DonnéeSource
cuisine détectéeJSON écran 2
surface cuisineJSON écran 2
pièce à rénoverécran 2
niveau de qualitéécran 0

Automatiquement déduit

DonnéeSource
linéaire cuisineplan ou surface
provision fourniture cuisinelinéaire + gamme
pose standard ou premiumniveau qualité
plan de travailgamme ou produit
crédencegamme ou produit
évier + robinetteriecuisine rénovée
électroménagerpersonnalisation ou hypothèse

Personnalisation uniquement

PrestationSource
linéaire cuisine exactclient
plan de travail pierre / quartzproduit choisi
crédence premiumproduit choisi
électroménager exactclient
cuisine sur mesure complexepersonnalisation
cave à vinpersonnalisation

Non demandé au client en MVP

DonnéeRaison
détail meuble par meubletrop lourd
nombre exact de caissonsremplacé par linéaire
marque cuisinebase produit / gamme
profondeur exacte meublesbase standard
détail quincailleriebase produit
calepinage crédence détaillépersonnalisation ultérieure

Règle produit finale

Le lot Cuisine doit appliquer la logique suivante :

1. Identifier la cuisine à rénover.

2. Calculer ou estimer le linéaire cuisine.

3. Générer une provision de fourniture cuisine équipée en mL.

4. Générer pose standard ou premium selon niveau de qualité.

5. Générer plan de travail selon gamme ou produit choisi.

6. Générer crédence carrelage ou premium selon gamme ou produit choisi.

7. Générer évier + robinetterie systématiquement si cuisine rénovée.

8. Générer pose électroménager selon personnalisation ou hypothèse.

9. Ne pas générer meubles hauts séparément.

10. Ne pas générer raccordements finaux cuisine.

11. Créer les dépendances vers plomberie, électricité, sols et peinture.

Le devis doit rester clair :

La cuisine est chiffrée au mètre linéaire pour la provision de fourniture et la pose. Les équipements, plans de travail, crédences et électroménagers sont ajustables dans la personnalisation.

Lot 10

Menuiserie intérieure / extérieure

1

Prestations du lot

source : base_prestations_bernadette_studio_lots_0_10.xlsx
CodePrestationUnitéPrix Éco HTPrix Std HTPrix Premium HTTVADéclenchement
MEN-001Pose porte intérieureu10%Règle définie + choix client
MEN-003Remplacement poignées / quincaillerieu10%Choix client
MEN-004Pose placardml/u10%Règle définie + choix client
MEN-006Dressing sur mesureml/forfait10%Choix client
MEN-007Bibliothèque sur mesureml/forfait10%Choix client
MEN-008Meuble TV sur mesureml/forfait10%Choix client
MEN-009Tête de lit sur mesureml/forfait10%Choix client
MEN-011Pose d’une porte atelieru10%Choix client
MEN-012Pose d’une verrière sur mesurem²/forfait10%Choix client
MEN-013Création placard MDF toute hauteurml/forfait10%Choix client
MEN-014Pose caissons dressing standard type PAX IKEAu/ml10%Choix client
MEN-015Création étagères fixes, invisibles ou arrondiesml/u10%Choix client
MEN-016Création bureau et rangements associés sur mesureml/forfait10%Choix client
MEN-017Création banquette sur mesureml/forfait10%Choix client
MEN-018Création buanderie sur mesure avec étagèresml/forfait10%Choix client
MEN-019Provision coffrage MDF BECforfait10%Choix client
MEN-020Provision placard tableau électriqueforfait10%Choix client
MEN-021Forfait reprise des portes intérieures existantesforfait/u10%Choix client
MEN-022Détalonnage porte d’entréeu10%Choix client
MEN-023Remplacement fenêtres / portes-fenêtresu/m²5,5%Règle définie + choix client
MEN-024Remplacement porte d’entréeu10%Choix client
MEN-025Installation volet roulantu5,5%Choix client
2

Données en entrée nécessaires

source : Spécification chiffrage.docx

Données d’entrée utilisées

5.1 Données issues du JSON validé du plan

Le moteur utilise :

{
"rooms": [],
"subspaces": [],
"area_m2": null,
"length_m": null,
"width_m": null,
"perimeter_m": null,
"type": null,
"name": null,
"openings": [],
"doors": [],
"visual_evidence": {
"fixed_features": [],
"built_in_closets": [],
"technical_elements": []
},
"layout_fidelity": {}
}

5.2 Données issues de l’écran 0

Le moteur utilise :

{
"project_type": null,
"declared_total_surface_m2": null,
"declared_room_count": null,
"project_description": null,
"quality_level": null
}

5.3 Données issues de l’écran 2

Le moteur utilise :

{
"validated_rooms": [],
"rooms_to_renovate": [],
"room_type_overrides": [],
"door_replacement_status": [],
"validated_openings": [],
"validated_fixed_features": []
}

5.4 Données issues de la personnalisation

Le moteur peut recevoir :

{
"joinery_customization": {
"interior_doors_to_install": [],
"door_range": null,
"hardware_to_replace": [],
"closets_to_install": [],
"closet_range": null,
"custom_dressing_requested": false,
"custom_library_requested": false,
"custom_tv_unit_requested": false,
"custom_headboard_requested": false,
"atelier_door_requested": false,
"custom_glass_partition_requested": false,
"full_height_mdf_closet_requested": false,
"standard_dressing_boxes_requested": false,
"custom_shelves_requested": false,
"custom_desk_storage_requested": false,
"custom_bench_requested": false,
"custom_laundry_unit_requested": false,
"mdf_water_heater_boxing_requested": false,
"electrical_panel_closet_requested": false,
"existing_doors_repair_requested": false,
"entry_door_undercut_requested": false
}
}
3

Nouveaux champs à créer

source : Spécification chiffrage.docx

Données supplémentaires client

Aucune donnée client supplémentaire obligatoire n’est recommandée pour le MVP.

Les prestations courantes peuvent être générées depuis :

  • les portes détectées ;
  • les portes remplacées ;
  • les placards détectés ;
  • le niveau de qualité.

Les prestations sur mesure doivent être générées uniquement depuis :

  • la personnalisation ;
  • une demande explicite du client ;
  • un scénario d’aménagement validé.

Si les dimensions exactes ne sont pas disponibles, les prestations sur mesure doivent être générées en provision.

Variables calculées

Avant de générer le lot Menuiserie, le moteur doit calculer :

{
"internal_door_count": null,
"interior_doors_to_install_count": null,
"doors_to_keep_count": null,
"hardware_replacement_count": null,
"closet_linear_m": null,
"closet_count": null,
"custom_dressing_linear_m": null,
"custom_library_linear_m": null,
"custom_tv_unit_linear_m": null,
"custom_headboard_linear_m": null,
"atelier_door_count": null,
"glass_partition_area_m2": null,
"mdf_closet_linear_m": null,
"standard_dressing_box_count": null,
"shelf_linear_m": null,
"custom_desk_linear_m": null,
"custom_bench_linear_m": null,
"custom_laundry_linear_m": null,
"mdf_boxing_provision_count": null,
"electrical_panel_closet_count": null,
"existing_door_repair_count": null,
"entry_door_undercut_count": null
}
4

Règles détaillées par prestation

source : Spécification chiffrage.docx

Règles par prestation

MEN-001 Pose porte intérieure
Définition

Pose d’une porte intérieure, déclinée en Eco, Standard ou Premium.

Unité

u

Déclencheurs

Créer si :

interior_doors_to_install[] exists

ou si le plan cible prévoit de nouvelles portes intérieures.

Créer aussi si le client demande le remplacement de portes intérieures.

Ne pas créer automatiquement si les portes existantes sont conservées.

Règle de quantité
quantity = count(interior_doors_to_install)

Déclinaison gamme

{
"door_range": "eco | standard | premium"
}

Règle :

if door_range is null:

door_range = quality_level

Effet de la gamme

GammeRègle
Ecoporte intérieure simple
Standardporte intérieure standard qualitative
Premiumporte intérieure haut de gamme ou finition supérieure
Exclusions

Ne comprend pas :

  • dépose ancienne porte ;
  • peinture porte ;
  • modification cloison ;
  • création ouverture ;
  • serrure spéciale ;
  • porte atelier ;
  • porte coulissante complexe si chiffrée ailleurs.

Anti-double comptage

Si MEN-011 porte atelier est générée :

do not generate MEN-001 for same opening

MEN-003 Remplacement poignées / quincaillerie
Définition

Remplacement des poignées ou de la quincaillerie de portes existantes.

Unité

u

Déclencheurs

Créer si :

hardware_to_replace[] exists

ou si le client demande de remplacer les poignées.

Créer aussi si les portes existantes sont conservées et qu’une option de rafraîchissement quincaillerie est sélectionnée.

Règle de quantité
quantity = count(hardware_to_replace)

Si le client demande un remplacement global :

quantity = count(doors_to_keep)
Exclusions

Ne comprend pas :

  • remplacement porte ;
  • peinture porte ;
  • réparation huisserie ;
  • serrure technique ;
  • contrôle d’accès.
MEN-004 Pose placard
Définition

Pose d’un placard standard ou semi-standard, décliné en Eco, Standard ou Premium.

Unité

ml

ou :

u

selon base de prix.

Déclencheurs

Créer si :

closets_to_install[] exists

ou si le client demande la pose d’un placard.

Ne pas créer automatiquement uniquement parce qu’un placard existant est visible sur le plan.

Règle de quantité

Priorité 1 :

quantity = sum(closet_linear_m)

Priorité 2 :

quantity = count(closets_to_install)

Déclinaison gamme

{
"closet_range": "eco | standard | premium"
}

Règle :

if closet_range is null:

closet_range = quality_level
Exclusions

Ne comprend pas :

  • dressing sur mesure ;
  • placard MDF toute hauteur ;
  • peinture ;
  • éclairage intégré ;
  • déplacement cloison ;
  • travaux électriques.

Anti-double comptage

Si MEN-013 est généré :

do not generate MEN-004 for same closet zone

MEN-006 Dressing sur mesure
Définition

Création ou pose d’un dressing sur mesure.

Unité

ml

ou :

forfait

selon niveau de détail.

Déclencheur

Créer uniquement si :

quality_level == "premium"

et si le client demande un dressing sur mesure.

custom_dressing_requested == true
Règle de quantité

Priorité 1 :

quantity = custom_dressing_linear_m

Priorité 2 :

quantity = 1 forfait

si dimensions non renseignées.

Interdiction

Ne jamais proposer MEN-006 en Eco ou Standard.

Exclusions

Ne comprend pas :

  • éclairage intégré ;
  • électricité ;
  • miroir ;
  • assise ;
  • peinture murale ;
  • modification cloison ;
  • portes premium spécifiques si chiffrées séparément.
MEN-007 Bibliothèque sur mesure
Définition

Création d’une bibliothèque sur mesure.

Unité

ml

ou :

forfait

Déclencheur

Créer uniquement si demandé par le client.

custom_library_requested == true
Règle de quantité

Priorité 1 :

quantity = custom_library_linear_m

Priorité 2 :

quantity = 1 forfait
Exclusions

Ne comprend pas :

  • éclairage intégré ;
  • prises ;
  • peinture murale ;
  • traitement acoustique ;
  • fixation spéciale non prévue.
MEN-008 Meuble TV sur mesure
Définition

Création d’un meuble TV sur mesure.

Unité

ml

ou :

forfait

Déclencheur

Créer uniquement si demandé par le client.

custom_tv_unit_requested == true
Règle de quantité

Priorité 1 :

quantity = custom_tv_unit_linear_m

Priorité 2 :

quantity = 1 forfait
Exclusions

Ne comprend pas :

  • télévision ;
  • support TV mural ;
  • prises ;
  • éclairage LED ;
  • raccordements électriques ;
  • peinture.
MEN-009 Tête de lit sur mesure
Définition

Création d’une tête de lit sur mesure.

Unité

ml

ou :

forfait

Déclencheur

Créer uniquement si demandé par le client.

custom_headboard_requested == true
Règle de quantité

Priorité 1 :

quantity = custom_headboard_linear_m

Priorité 2 :

quantity = 1 forfait
Exclusions

Ne comprend pas :

  • éclairage intégré ;
  • prises ;
  • chevets ;
  • textile ;
  • peinture murale ;
  • revêtement décoratif.
MEN-011 Pose d’une porte atelier
Définition

Pose d’une porte atelier intérieure.

Unité

u

Déclencheur

Créer uniquement si demandé par le client.

atelier_door_requested == true

ou si le plan cible prévoit une porte atelier.

Règle de quantité
quantity = count(atelier_doors)

Par défaut :

quantity = 1

si une demande globale est faite.

Anti-double comptage

Si MEN-011 est générée :

do not generate MEN-001 for same opening

Exclusions

Ne comprend pas :

  • création ouverture ;
  • modification cloison ;
  • peinture ;
  • verrière fixe ;
  • serrurerie spécifique ;
  • reprise sol.
MEN-012 Pose d’une verrière sur mesure
Définition

Pose d’une verrière intérieure sur mesure.

Unité

ou :

forfait

Déclencheur

Créer uniquement si demandé par le client.

custom_glass_partition_requested == true

ou si le plan cible prévoit une verrière.

Règle de quantité

Priorité 1 :

quantity = glass_partition_area_m2

Priorité 2 :

quantity = 1 forfait
Exclusions

Ne comprend pas :

  • création cloison ;
  • ouverture dans mur ;
  • renfort structurel ;
  • peinture ;
  • électricité ;
  • dépose ancienne cloison.
MEN-013 Création de placard sur mesure en MDF toute hauteur
Définition

Création d’un placard sur mesure en MDF toute hauteur.

Unité

ml

ou :

forfait

Déclencheur

Créer uniquement si demandé par le client.

full_height_mdf_closet_requested == true
Règle de quantité

Priorité 1 :

quantity = mdf_closet_linear_m

Priorité 2 :

quantity = 1 forfait

Anti-double comptage

Si MEN-013 est généré :

do not generate MEN-004 for same zone

Exclusions

Ne comprend pas :

  • peinture laque si séparée ;
  • éclairage intégré ;
  • poignées premium si séparées ;
  • électricité ;
  • modification cloison.
MEN-014 Pose de caissons dressing standard type PAX IKEA
Définition

Pose de caissons dressing standards de type PAX IKEA ou équivalent modulaire.

Unité

u

ou :

ml

Déclencheur

Créer uniquement si demandé par le client.

standard_dressing_boxes_requested == true
Règle de quantité

Priorité 1 :

quantity = count(standard_dressing_boxes)

Priorité 2 :

quantity = standard_dressing_linear_m

Anti-double comptage

Si MEN-014 est généré :

do not generate MEN-006 for same dressing zone

Exclusions

Ne comprend pas :

  • fourniture caissons si fournie par client ;
  • dressing sur mesure ;
  • portes coulissantes premium ;
  • éclairage intégré ;
  • fixation spécifique complexe.
MEN-015 Création d’étagères fixes, invisibles ou arrondies
Définition

Création d’étagères fixes, invisibles, arrondies ou décoratives.

Unité

ml

ou :

u

Déclencheur

Créer uniquement si demandé par le client.

custom_shelves_requested == true
Règle de quantité

Priorité 1 :

quantity = shelf_linear_m

Priorité 2 :

quantity = count(custom_shelves)
Exclusions

Ne comprend pas :

  • peinture / finition spéciale si séparée ;
  • LED ;
  • prises ;
  • renfort structurel ;
  • décoration.
MEN-016 Création d’un bureau et rangements associés sur mesure
Définition

Création d’un bureau sur mesure avec rangements intégrés.

Unité

ml

ou :

forfait

Déclencheur

Créer uniquement si demandé par le client.

custom_desk_storage_requested == true
Règle de quantité

Priorité 1 :

quantity = custom_desk_linear_m

Priorité 2 :

quantity = 1 forfait
Exclusions

Ne comprend pas :

  • chaise ;
  • éclairage ;
  • prises ;
  • réseau RJ45 ;
  • peinture ;
  • décoration.
MEN-017 Création d’une banquette sur mesure
Définition

Création d’une banquette sur mesure.

Unité

ml

ou :

forfait

Déclencheur

Créer uniquement si demandé par le client.

custom_bench_requested == true
Règle de quantité

Priorité 1 :

quantity = custom_bench_linear_m

Priorité 2 :

quantity = 1 forfait
Exclusions

Ne comprend pas :

  • coussins ;
  • tissu ;
  • éclairage ;
  • rangements intérieurs si non prévus ;
  • peinture murale.
MEN-018 Création d’une buanderie sur mesure avec étagères
Définition

Création d’un agencement de buanderie sur mesure avec étagères.

Unité

ml

ou :

forfait

Déclencheur

Créer uniquement si demandé par le client.

custom_laundry_unit_requested == true
Règle de quantité

Priorité 1 :

quantity = custom_laundry_linear_m

Priorité 2 :

quantity = 1 forfait
Exclusions

Ne comprend pas :

  • plomberie ;
  • électroménager ;
  • alimentation électrique ;
  • plan de travail si séparé ;
  • peinture.
MEN-019 Provision coffrage MDF BEC
Définition

Provision pour coffrage MDF d’un ballon d’eau chaude électrique ou équipement équivalent.

Unité

forfait

Déclencheur

Créer uniquement si demandé par le client.

mdf_water_heater_boxing_requested == true

ou si la personnalisation indique un ballon à habiller en MDF.

Règle de quantité
quantity = 1

Type de prix

Cette prestation doit être marquée comme provision.

"pricing_mode": "provision"
Exclusions

Ne comprend pas :

  • ballon d’eau chaude ;
  • plomberie ;
  • électricité ;
  • ventilation technique ;
  • trappe si séparée ;
  • peinture / laque si séparée.
MEN-020 Provision placard tableau électrique
Définition

Provision pour création d’un placard ou habillage de tableau électrique.

Unité

forfait

Déclencheur

Créer uniquement si demandé par le client.

electrical_panel_closet_requested == true
Règle de quantité
quantity = 1

Type de prix

Cette prestation doit être marquée comme provision.

"pricing_mode": "provision"
Exclusions

Ne comprend pas :

  • tableau électrique ;
  • déplacement tableau ;
  • électricité ;
  • ventilation technique ;
  • peinture / laque si séparée.
MEN-021 Forfait reprise des portes intérieures existantes
Définition

Reprise légère des portes intérieures existantes conservées.

Unité

forfait

ou :

u

Déclencheur

Créer uniquement si demandé par le client.

existing_doors_repair_requested == true

ou si le client choisit de conserver et reprendre les portes existantes.

Règle de quantité

Priorité 1 :

quantity = count(existing_doors_to_repair)

Priorité 2 :

quantity = 1 forfait
Exclusions

Ne comprend pas :

  • peinture porte ;
  • remplacement quincaillerie si MEN-003 séparé ;
  • remplacement porte ;
  • réparation lourde ;
  • rabotage complexe ;
  • serrure.

La peinture des portes reste traitée par :

PEI-009 Peinture boiseries / portes
MEN-022 Détalonnage de la porte d’entrée
Définition

Détalonnage de la porte d’entrée.

Unité

u

Déclencheur

Créer uniquement si demandé par le client.

entry_door_undercut_requested == true

ou si la personnalisation ventilation le prévoit.

Règle de quantité
quantity = 1
Exclusions

Ne comprend pas :

  • remplacement porte d’entrée ;
  • serrure ;
  • peinture ;
  • seuil ;
  • rabotage de toutes les portes ;
  • modification bloc-porte ;
  • certification acoustique ou coupe-feu.
5

Autres règles du lot

Règles métier de chiffrage pour moteur de devis

Version mise à jour avec déclinaisons Eco / Standard / Premium et prestations sur demande

Objectif du lot

Le lot Menuiserie couvre les prestations liées :

  • aux portes intérieures ;
  • aux poignées et quincailleries ;
  • aux placards ;
  • aux dressings ;
  • aux agencements sur mesure ;
  • aux meubles intégrés ;
  • aux reprises de portes existantes ;
  • aux détalonnages ;
  • aux coffrages MDF spécifiques.

Ce lot ne doit pas chiffrer :

  • peinture des portes ;
  • peinture des boiseries ;
  • cloisons BA13 ;
  • coffrages techniques en placo ;
  • dépose des portes existantes ;
  • électricité ;
  • plomberie ;
  • pose cuisine standard ;
  • meubles de salle de bain standards.

Prestations conservées ou modifiées

CodePrestation
MEN-001Pose porte intérieure — déclinaison Eco / Standard / Premium
MEN-003Remplacement poignées / quincaillerie
MEN-004Pose placard — déclinaison Eco / Standard / Premium
MEN-006Dressing sur mesure — uniquement en Premium
MEN-007Bibliothèque sur mesure
MEN-008Meuble TV sur mesure
MEN-009Tête de lit sur mesure

Prestations retirées

Ancien codePrestationStatut
MEN-002Pose porte intérieure premiumRetirée
MEN-005Dressing standardRetirée
MEN-010Habillage technique / cache gaineRetirée

3.1 Règle pour MEN-002

MEN-002 est supprimée car la gamme premium est désormais portée par MEN-001 via l’attribut :

{
"door_range": "eco | standard | premium"
}

3.2 Règle pour MEN-005

MEN-005 est supprimée.

Les dressings standards type caissons modulaires sont traités par :

MEN-014 Pose de caissons dressing standard

Les dressings sur mesure sont traités par :

MEN-006 Dressing sur mesure

3.3 Règle pour MEN-010

MEN-010 est supprimée.

Les coffrages techniques en placo restent traités par :

PLA-008 Coffrage technique

Les coffrages MDF spécifiques demandés par le client sont traités par :

MEN-019 Provision coffrage MDF BEC

Prestations ajoutées

Toutes les prestations ajoutées sont à la demande du client.

CodePrestation
MEN-011Pose d’une porte atelier
MEN-012Pose d’une verrière sur mesure
MEN-013Création de placard sur mesure en MDF toute hauteur
MEN-014Pose de caissons dressing standard type PAX IKEA
MEN-015Création d’étagères fixes, invisibles ou arrondies
MEN-016Création d’un bureau et rangements associés sur mesure
MEN-017Création d’une banquette sur mesure
MEN-018Création d’une buanderie sur mesure avec étagères
MEN-019Provision coffrage MDF BEC
MEN-020Provision placard tableau électrique
MEN-021Forfait reprise des portes intérieures existantes
MEN-022Détalonnage de la porte d’entrée

Règles générales

8.1 Ne pas inventer de menuiserie sur mesure

Le moteur ne doit jamais générer automatiquement :

  • bibliothèque sur mesure ;
  • meuble TV sur mesure ;
  • tête de lit sur mesure ;
  • bureau sur mesure ;
  • banquette ;
  • buanderie sur mesure ;
  • verrière ;
  • porte atelier ;
  • placard MDF toute hauteur.

Ces prestations doivent venir d’une demande client ou d’une personnalisation.

8.2 Les prestations sur mesure sont des provisions si dimensions incertaines

Si les dimensions ne sont pas disponibles :

{
"pricing_mode": "provision",
"is_assumption": true,
"user_validation_required": true
}

8.3 Les portes et placards peuvent être déclinés en gamme

Les prestations MEN-001 et MEN-004 doivent porter un attribut de gamme :

{
"range": "eco | standard | premium"
}

Si aucune gamme n’est sélectionnée :

range = quality_level

Règles anti-double comptage

10.1 Portes

Si MEN-011 porte atelier est générée :

do not generate MEN-001 for same opening

Si portes conservées :

do not generate MEN-001

Créer éventuellement :

MEN-021 reprise portes existantes

PEI-009 peinture portes

MEN-003 remplacement quincaillerie

10.2 Placards

Si MEN-013 placard MDF toute hauteur est généré :

do not generate MEN-004 for same zone

Si MEN-014 caissons dressing standard est généré :

do not generate MEN-006 for same zone

10.3 Coffrages

Les coffrages techniques placo sont en lot 2 :

PLA-008

Les coffrages MDF spécifiques demandés sont en lot Menuiserie :

MEN-019

10.4 Peinture

La peinture ou finition des menuiseries n’est pas incluse par défaut.

Elle doit être traitée dans le lot Peinture ou dans une finition produit spécifique.

10.5 Électricité

Les éclairages intégrés, LED, prises ou alimentations électriques intégrées aux meubles ne sont pas incluses par défaut.

Elles doivent créer des dépendances vers le lot Électricité.

Interactions avec les autres lots

11.1 Avec lot 1 — Démolition

Dépose de portes existantes :

DEM-011 Dépose porte intérieure

11.2 Avec lot 2 — Cloisons

Création ou modification d’ouvertures :

Lot 2 or structural lot handles opening/wall modification

11.3 Avec lot 3 — Électricité

Agencements avec LED, prises ou éclairage intégré peuvent déclencher :

ELEC-012 ruban LED

ELEC-003 prise 16A

ELEC-009 RJ45

11.4 Avec lot 7 — Peinture

Portes ou boiseries conservées :

PEI-009

Surfaces MDF à peindre :

PEI lot to handle paint finish unless included in joinery product

11.5 Avec lot CVC / Plomberie

Coffrage MDF BEC :

must preserve technical access and ventilation if required

Le lot Menuiserie ne remplace pas les contraintes techniques des lots plomberie, électricité ou CVC.

Gestion du niveau Éco / Standard / Premium

12.1 Éco

Peut proposer :

MEN-001 porte intérieure gamme éco si remplacement portes demandé

MEN-004 placard gamme éco si placard demandé

MEN-014 caissons dressing standard si demandé

Ne pas proposer automatiquement de sur mesure.

12.2 Standard

Peut proposer :

MEN-001 porte intérieure gamme standard si remplacement portes demandé

MEN-004 placard gamme standard si placard demandé

MEN-014 caissons dressing standard si demandé

Sur mesure uniquement si client le demande, sauf MEN-006 qui reste Premium.

12.3 Premium

Peut proposer :

MEN-001 porte intérieure gamme premium si remplacement portes demandé

MEN-004 placard gamme premium si placard demandé

MEN-006 dressing sur mesure si demandé

MEN-007 à MEN-020 si demandé

Le niveau Premium ne doit pas créer automatiquement tous les agencements sur mesure.

Format de sortie attendu

Chaque ligne du lot Menuiserie doit respecter ce format :

{
"lot": "Menuiserie intérieure / Agencement",
"code": "MEN-001",
"label": "Pose porte intérieure",
"room_id": "room_2",
"room_name": "Chambre",
"unit": "u",
"quantity": 1,
"quantity_formula": "count(interior_doors_to_install)",
"pricing_mode": "unit_price",
"source": "client_personalization_or_target_layout",
"confidence": 0.85,
"is_assumption": false,
"assumption_reason": null,
"user_validation_required": false,
"range": "standard",
"included": [],
"excluded": [],
"dependencies": [],
"warnings": []
}

Pour sur mesure sans dimensions :

{
"lot": "Menuiserie intérieure / Agencement",
"code": "MEN-007",
"label": "Bibliothèque sur mesure",
"unit": "forfait",
"quantity": 1,
"pricing_mode": "provision",
"source": "client_personalization",
"confidence": 0.50,
"is_assumption": true,
"assumption_reason": "Dimensions non renseignées, provision à confirmer",
"user_validation_required": true
}

Règles de validation

Avant génération du lot Menuiserie, le moteur doit vérifier :

{
"has_validated_rooms": true,
"has_openings_or_doors": true,
"has_quality_level": true
}

Si aucune porte, placard ou demande de menuiserie n’est détectée :

do not generate joinery lot

Si prestation sur mesure demandée mais dimensions absentes :

{
"pricing_mode": "provision",
"user_validation_required": true
}

Résumé des données nécessaires

Obligatoire

DonnéeSource
pièces validéesJSON écran 2
portes / ouvertures détectéesJSON validé
niveau de qualitéécran 0
demandes menuiseriepersonnalisation

Automatiquement déduit

DonnéeSource
gamme porteniveau de qualité
gamme placardniveau de qualité
nombre portes existantesJSON plan
portes conservées ou remplacéeslot menuiserie / écran 2
quincaillerieportes conservées + demande client

Personnalisation uniquement

PrestationSource
porte atelierdemande client
verrière sur mesuredemande client
placard MDF toute hauteurdemande client
dressing PAXdemande client
étagèresdemande client
bureau sur mesuredemande client
banquettedemande client
buanderie sur mesuredemande client
coffrage MDF BECdemande client
placard tableau électriquedemande client
reprise portes existantesdemande client
détalonnage porte entréedemande client

Non demandé au client en MVP

DonnéeRaison
détail caisson par caissontrop lourd
plans atelier completsphase conception
épaisseur exacte MDFbase technique
quincaillerie détailléebase produit
teinte / finition finalepersonnalisation ou lot peinture
calepinage completphase conception
charge admissible étagèresvalidation technique

Règle produit finale

Le lot Menuiserie doit appliquer la logique suivante :

1. Identifier les portes et ouvertures existantes.

2. Générer MEN-001 uniquement si portes à remplacer ou nouvelles portes prévues.

3. Décliner MEN-001 en Eco, Standard ou Premium.

4. Générer MEN-003 si remplacement poignées / quincaillerie demandé.

5. Générer MEN-004 si placard demandé, décliné en gamme.

6. Générer MEN-006 uniquement en Premium et uniquement si dressing sur mesure demandé.

7. Générer les agencements sur mesure uniquement à la demande du client.

8. Générer les prestations ajoutées uniquement si personnalisation explicite.

9. Passer en provision toutes les prestations sur mesure sans dimensions fiables.

10. Créer les dépendances vers peinture, électricité, plomberie, CVC ou cloisons si nécessaire.

Le devis doit rester clair :

Les prestations de menuiserie courante sont générées selon les portes, placards et choix de gamme. Les agencements sur mesure ne sont ajoutés que sur demande du client ou via personnalisation.

CodePrestationUnitéRègle de métréGammeType
PRD-001Fourniture parquetsurface parquet + taux perteÉco / Standard / PremiumFourniture
PRD-002Fourniture carrelage solsurface carrelage + taux perteÉco / Standard / PremiumFourniture
PRD-003Fourniture faïence muralesurface faïence + taux perteÉco / Standard / PremiumFourniture
PRD-004Fourniture peintureL / m²surface murs/plafondsÉco / Standard / PremiumFourniture
PRD-005Fourniture robinetterieunombre équipementsÉco / Standard / PremiumFourniture
PRD-006Fourniture meuble vasqueunombre meublesÉco / Standard / PremiumFourniture
PRD-007Fourniture receveur doucheunombre receveursÉco / Standard / PremiumFourniture
PRD-008Fourniture WCunombre WCÉco / Standard / PremiumFourniture
PRD-009Fourniture cuisineforfait / mlselon configurationÉco / Standard / PremiumFourniture
PRD-010Fourniture électroménagerunombre appareilsÉco / Standard / PremiumFourniture
PRD-011Fourniture luminairesunombre luminairesÉco / Standard / PremiumFourniture
PRD-012Fourniture appareillage électriquepointnombre pointsÉco / Standard / PremiumFourniture
CodePrestationUnitéRègle de métréGammeType
ALE-001Coefficient étage sans ascenseur%selon étageTousAléa
ALE-002Coefficient accès difficile%selon largeur accès / stationnementTousAléa
ALE-003Coefficient copropriété sensible%selon contraintes immeubleTousAléa
ALE-004Coefficient logement occupé%si chantier en site occupéTousAléa
ALE-005Coefficient urgence planning%délai compresséTousAléa
ALE-006Provision imprévus rénovation ancien%selon fiabilité plan + visiteTousAléa
ALE-007Majoration premium finition%selon niveau de détail attenduPremiumAléa
ALE-008Minoration chiffrage économique%selon niveau écoÉcoAléa

Structure minimale à donner aux développeurs

Pour chaque prestation, je recommande ce modèle de données :

Champ techniqueExemple
codeSOL-005
lotSols
label_frPose parquet contrecollé flottant
unit
quantity_sourcesurface_sol_piece
pricing_typepose
eligible_rangeseco, standard, premium
default_rangestandard
requires_producttrue
linked_product_categoryparquet
waste_rate_default7 %
complexity_factor_availabletrue
regional_factor_availabletrue
company_custom_price_allowedtrue
client_visibletrue
internal_notehors dépose et ragréage

Règle fondamentale à intégrer

Une ligne de devis doit toujours distinguer :

ÉlémentExemple
Déposedépose ancien parquet
Préparation supportragréage
Fourniture produitparquet choisi
Posepose parquet
Finitionsplinthes, seuils
Aléaétage, accès, ancien