IMAGEin — inventaire de rénovation d'un T3 de 65 m²

Sortie réelle du moteur du dépôt. Le plan et le SVG viennent de src/plan-engine/fixtures/t3-65m2.ts et de src/plan-engine/PlanView ; les six lectures ci-dessous sont calculées par app/plans/inventory.py ; le diagnostic est celui de src/plan-engine/validate.ts::validatePlan. Rien n'est rédigé à la main dans les tableaux.

1. Le plan

Niveau « RDC », emprise 8,80 × 7,40 m, 7 pièces pavant 65.12 m², 13 murs et 16 ouvertures. Le mobilier ci-dessous est posé sur ces pièces.

SÉJOUR19,8 m²CUISINE13,7 m²ENTRÉE / COULOIR · 8,8 m²CHAMBRE 17,8 m²CHAMBRE 28,8 m²SALLE DE BAIN · 3,6 m²WC2,6 m²3,002,201,201,401,008,802,601,003,807,40T3 65 m² — RDC · surface 65,1 m²éch. 1:75
Rendu par le composant PlanView de l'application, inclus ici en SVG : la page ne dépend d'aucun fichier extérieur.
PièceSurfaceRôle
Séjour19.76 m²
Cuisine13.68 m²
Entrée / Couloir8.80 m²entrée
Chambre 17.80 m²
Chambre 28.84 m²
Salle de bain3.64 m²
WC2.60 m²

2. Décompte par statut

Les cinq clés de ItemStatus sont toujours présentes, y compris à zéro : une catégorie vide est une information, pas une ligne manquante (inventory.counts_by_status).

StatutCe que ça veut dire sur le chantierNombre
existingExistant (relevé, non touché)2
keptConservé tel quel3
movedDéplacé1
removedDéposé et évacué2
addedAjouté (à acheter)3

3. Plan de dépose

Ce qui PART du mur : les removed et les moved. Un meuble déplacé doit être déposé même s'il revient — le motif dit lequel des deux cas s'applique (inventory.demolition_plan).

ObjetCatégorieEmpriseMotif de déposeProvenance
Commode 4 tiroirsrangement1.00 × 0.45 m — centre (5.90 ; 5.20)moved — déposé puis reposé ailleurssaisi à la main · user
Canapé 3 places (usé)assise2.10 × 0.90 m — centre (2.60 ; 0.90)removed — évacuédétection automatique · confiance 88 % · vision_detect_v0.3
Baignoire 170×70sanitaire1.30 × 0.70 m — centre (7.10 ; 5.40)removed — évacuédétection automatique · confiance 93 % · vision_detect_v0.3

4. Ce qui reste dans le logement

Les kept et les moved : un meuble déplacé reste dans le logement (inventory.kept_list).

ObjetCatégorieEmpriseStatutProvenance
Table de repas 140×80table1.40 × 0.80 m — centre (2.00 ; 2.60)keptsaisi à la main · user
Bibliothèque muralerangement0.35 × 2.20 m — centre (0.40 ; 1.60)keptdétection automatique · confiance 84 % · vision_detect_v0.3
Lit 140×190 (chambre 1)literie1.40 × 1.90 m — centre (1.50 ; 6.00)keptdétection automatique · confiance 95 % · vision_detect_v0.3
Commode 4 tiroirsrangement1.00 × 0.45 m — centre (5.90 ; 5.20)movedsaisi à la main · user

5. Liste d'achats

Les added (inventory.shopping_list). Un ajout qui ne remplace rien reste un achat sec : aucun appariement n'est deviné.

ObjetCatégorieEmpriseRéf. catalogueRemplaceProvenance
Canapé d'angle convertibleassise2.40 × 1.00 m — centre (2.60 ; 0.95)CAT-ASS-4471f-canape-vieuxproposé par le designer IA · confiance 72 % · designer_ia_v1
Douche à l'italienne 120×90sanitaire1.20 × 0.90 m — centre (7.10 ; 5.40)CAT-SAN-2019f-baignoiresaisi à la main · user
Bureau 120×60 (chambre 2)bureau1.20 × 0.60 m — centre (4.60 ; 6.90)CAT-BUR-0882achat secproposé par le designer IA · confiance 64 % · designer_ia_v1

6. Remplacements

« Remplacé » n'est pas un 6e statut : c'est une PAIRE calculée à la demande, un removed et un added reliés par sourceItemId (inventory.replacements).

DéposéAchetéLien
Canapé 3 places (usé)
f-canape-vieux
Canapé d'angle convertible
f-canape-neuf · réf. CAT-ASS-4471
sourceItemId = f-canape-vieux
Baignoire 170×70
f-baignoire
Douche à l'italienne 120×90
f-douche · réf. CAT-SAN-2019
sourceItemId = f-baignoire

7. Diagnostic du plan

Les défauts ci-dessous ont été injectés volontairement. Sur le plan de référence, validatePlan rend 0 violation : il n'y aurait rien à montrer. Deux défauts ont donc été introduits dans une copie, le plan de référence n'étant jamais modifié :

Ce que le moteur trouve sur la copie, mot pour mot, avec sa règle et sa mesure chiffrée :

RègleConstat du moteur
door_too_narrowdoor "t3-door-couloir-sdb" too narrow (0.60 m, min 0.73 m)
room_unreachableroom "WC" (t3-wc) unreachable from "Entrée / Couloir" via the door graph

Seuils du moteur : largeur de passage minimale DOOR_MIN_WIDTH_M = 0,73 m, marge minimale d'une ouverture en bout de mur OPENING_MIN_MARGIN_M = 0,15 m, plus le contrôle d'accessibilité de chaque pièce depuis l'entrée par le graphe des portes.

Produit par demo_metier_imagein_plan.ts puis demo_metier_imagein.py, hors ligne, sans appel réseau ni base de données. Aucune valeur de ces tableaux n'a été saisie à la main : elles sortent des fonctions nommées en tête de chaque section.