gmao/docs/ui-audit/ROOM_PROFILES_ARCHITECTURE.md

1.2 KiB

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.