# 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.
