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.