# Architecture des profils de locaux — checkpoint B ## Décision `RoomType` reste le type structurel d'un local (classe, couloir, sanitaire, etc.) et conserve ses usages existants, notamment l'identification des salles d'enseignement. Il ne devient pas un catalogue d'équipements. Un `RoomProfile` séparé porte une proposition réutilisable : - `RoomProfileItem` : libellé, quantité, catégorie facultative, lot suggéré, mode groupe/individuel et sélection par défaut ; - `RoomSurface` : composition facultative mur/sol/plafond, matériau, finition et repère. L'association `Room.room_profile_id` mémorise le profil utilisé comme point de départ. Elle ne crée aucun équipement. L'application d'un profil passe par une prévisualisation et le service commun `create_equipment`. ## Progressivité Un local peut être créé sans `RoomType`, sans profil et sans équipement. Les ouvrages sont facultatifs. Les lignes d'un profil sont des suggestions et les quantités peuvent être modifiées avant validation. ## Migration `k6f7a8b9c0d1_room_profiles.py` crée les tables de profils, propositions et surfaces. `l7a8b9c0d1e2_assign_room_profiles.py` ajoute l'association nullable du profil à `rooms`. Les deux migrations sont non destructives.