diff --git a/CLAUDE.md b/CLAUDE.md index c3837bc..e241b4c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -44,5 +44,5 @@ pnpm + Turborepo. `apps/api` : NestJS, Prisma, PostgreSQL (pgvector + PostGIS), - ✅ **R1.1 — socle backend** : migration `r1_referentiel` (Category, Location site→zone + PostGIS générée, Asset, AssetComponent, Team, invitation User), 21 nouvelles opérations au contrat (26 total), 4 modules API + invitations/activation sous `@RequirePermission`, seed parc maquette (5 sites, 8 appareils, organes, 2 équipes), 36 tests (96 %/85 %), CI sur `postgis/postgis:18-3.6`. - ✅ **R1.2 — écrans web du référentiel** : 7 écrans fidèles à maquette-r1.html (Sites + carte Leaflet/OSM, fiche site, ascenseurs, fiche appareil + QR réel, création, étiquette A6 imprimable, personnes & équipes avec lien d'activation à copier, catégories) + page /activation ; navigation et actions pilotées par la matrice (`usePermissions`) ; recette R1 rejouée en e2e Playwright (dont activation d'un invité) ; alias Vite `@siop/shared` → source TS (leçon CJS/workspace). - 🏁 **R1 CLOSE (16/07/2026, tag `release/r1`)** : recettée par le référent, déployée et vérifiée en ligne (migration + seed au boot, 5 sites / 8 appareils sur l'instance). -- 🔄 **R2 Exploitation — reprise ici, design d'abord** : maquettes R0 déjà validées pour tableau de bord / liste OT / fiche OT (bilan codé) / portail demandeur ; **à maquetter avant tout code : préventif** (gabarits à périodicité, grille du mois, checklist) et écrans secondaires (création OT/demande). Ensuite : modèle R2 (WorkOrder machine à états, Request 1-1, InterventionReport bilan codé, TaskTemplate/PreventivePlan/ChecklistItem, Meter) → API → web → mobile-ready. +- 🔄 **R2 Exploitation — ouverte, design d'abord** : `maquette-r2.html` (5 écrans : demandes/approbation, nouvel OT, préventif gabarits+génération, OT préventif checklist, compteurs) — **⛔ en attente de validation du référent avant tout code R2** (4 décisions soumises, dont la sémantique des statuts de demande). Écrans cœur déjà validés en R0. Ensuite : modèle R2 (WorkOrder machine à états, Request 1-1, InterventionReport bilan codé + ReferenceValue, TaskTemplate/ChecklistItem, Meter/MeterReading) → contrat → API (garde de clôture, génération idempotente BullMQ) → web → recette (parcours demande gardien → OT → bilan → clôture ; grille de juillet). - Détail quotidien : `docs/journal/journal.md`. Dépôt : `siop-spelev/siop2` (privé), jalons R0→R5. diff --git a/docs/02-design/maquettes/maquette-r2.html b/docs/02-design/maquettes/maquette-r2.html new file mode 100644 index 0000000..ea73173 --- /dev/null +++ b/docs/02-design/maquettes/maquette-r2.html @@ -0,0 +1,755 @@ + + +
+ + +Intention : la file d'attente de Salma. Une demande approuvée devient un OT (lien 1-1, jamais de doublon) ; un rejet exige un motif — le demandeur le lit sur son portail, sans jargon. « Personne bloquée » saute en tête, partout.
+| N° | Signalement | Équipement · Site | Par | Statut |
|---|---|---|---|---|
| DEM-2026-0112 | Personne bloquée en cabine ! | Asc. B2Tour Atlas | Karim (QR)il y a 4 min | Urgence |
| DEM-2026-0111 | Porte du 3ᵉ ne se ferme plus | Asc. A1Résidence Al Manar | Karim (QR)il y a 2 h | Reçue |
| DEM-2026-0110 | Voyant étage éteint | Asc. C1Anfa Place | H. Alami (QR)hier | Reçue |
| DEM-2026-0107 | Bruit anormal en gaine | Asc. A1Résidence Al Manar | Karim (QR)hier | OT-2026-0341 |
| DEM-2026-0104 | Odeur de brûlé (fausse alerte) | Asc. M1Tour Atlas | Karim (QR)11 juil. | Rejetée |
| DEM-2026-0093 | Voyant cabine éteint | Asc. A1Résidence Al Manar | Karim (QR)2 juil. | Résolue |
L'OT reprend titre, équipement, photo et description — la demande suit ensuite l'OT (Reçu → Intervention → Résolu côté portail).
+Intention : l'OT manuel (sans demande) en une carte : type, équipement, priorité — « personne bloquée » est un choix explicite qui déclenche l'urgence partout. Échéance par défaut selon la priorité.
+Intention : le réglementaire sans tableur — des gabarits de tâches à périodicité (l'essai parachute est marqué réglementaire), et la génération du mois : un OT « grille du mois » par appareil sous contrat, avec les tâches dues. Regénérer ne double rien ; un appareil jamais contrôlé reçoit le premier contrôle (tout).
+| Tâche du gabarit | Organe visé | Périodicité | Juillet |
|---|---|---|---|
| Contrôle fermeture / verrouillage des portes | Portes cabine / palières | Tous les mois | Due |
| Nettoyage cuvette et toit de cabine | — | Tous les mois | Due |
| Contrôle niveau d'huile réducteur | Treuil / machinerie | Tous les 3 mois | Due |
| Vérification jeu des coulisseaux | — | Tous les 6 mois | Non due |
| Essai du parachute | Parachute | 12 mois · réglementaire | Due |
| Contrôle câbles de traction (usure, tension) | Treuil / machinerie | Tous les 6 mois | Non due |
Intention : la grille du mois d'Ahmed — chaque tâche se règle en Fait / N-A (avec qui et quand) ; la clôture est bloquée tant qu'une tâche reste sans réponse. Le bilan codé reste requis (écran fiche OT validé en R0).
+⚠ La clôture reste bloquée : chaque tâche doit être Fait ou N-A.
+Requis aussi pour la grille (écran « fiche OT » validé en R0) — prérempli : Action réalisée = Visite d'entretien.
+Intention : les relevés simples du carnet (heures de marche, démarrages) — saisis en fiche appareil ou en tournée. R2 les stocke et trace ; les seuils d'alerte viendront nourrir le préventif conditionnel (backlog).
+