diff --git a/CLAUDE.md b/CLAUDE.md
index 39b562e..98c6428 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -54,5 +54,6 @@ pnpm + Turborepo. `apps/api` : NestJS, Prisma, PostgreSQL (pgvector + PostGIS),
- ✅ **R3.3** : 7 écrans web fidèles à maquette-r3 (stock/alertes, fiche pièce, BC + réception, création BC préremplie depuis l'alerte, tiers, bibliothèque, statistiques) + fiche OT complète (coûts réels : consommer à prix figé / saisir temps à taux figé ; carte Documents) + fiche ascenseur (Documents) + taux horaire dans Personnes + nav Ressources/Statistiques activée par la matrice. Recette R3 automatisée (13/13 e2e Playwright).
- ✅ **R3.4 — corrections de recette + recherche globale** (17/07) : revue pixel (artefact) → 8 écarts corrigés sur arbitrage du référent (filtre fournisseur + tri sous-seuil + entrée de stock en liste, fournisseur cliquable, sélecteur de période 3/6/12 sur les stats, rattachements syndic→site via `Location.partnerId` (migration `r3_recette_fixes`), filtre « Rattaché à » + glisser-déposer en bibliothèque, aperçus/ouverture des documents) ; **recherche globale ⌘K** (`GET /search`, 73 opérations, familles filtrées par la matrice, « voir autre » respecté). 74 tests API, 14/14 Playwright.
- 🏁 **R3 CLOSE (17/07/2026, tag `release/r3`)** : recettée par le référent (revue pixel + 8 corrections + recherche globale, CI verte). Reste : redéploiement Dokploy (manuel, webhook CD absent) et vérification en ligne.
-- 🔄 **Reprise ici** : redéployer sur Dokploy et vérifier en ligne (migration `r3_recette_fixes` + seed au boot) → ouverture R4 Mobile (Expo, design d'abord — maquettes avant tout code).
+- ✅ **R4 — maquettes rédigées** (17/07) : `maquette-r4.html`, 7 écrans mobile technicien offline-first (Ma journée bi-état, fiche OT, clôture terrain avec garde, scan QR des étiquettes R1, fiche ascenseur, checklist en file, synchro & conflits à verrou optimiste) + 5 décisions à acter (offline-first en file, verrou optimiste tranché par l'humain, périmètre fermé technicien, scan local, photos en file — ni audio ni géoloc en R4).
+- 🔄 **Reprise ici** : validation des maquettes + 5 décisions par le référent → R4.1 socle mobile (Expo). En parallèle : redéployer `release/r3` sur Dokploy et vérifier en ligne.
- 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-r4.html b/docs/02-design/maquettes/maquette-r4.html
new file mode 100644
index 0000000..618229a
--- /dev/null
+++ b/docs/02-design/maquettes/maquette-r4.html
@@ -0,0 +1,641 @@
+
+
+
Intention : l'app s'ouvre sur les OT d'Ahmed, triés
+priorité puis échéance — urgence « personne bloquée » toujours en tête. Le même écran vit
+en ligne et hors-ligne : hors-ligne, rien ne disparaît, un bandeau l'assume et la tabbar
+compte les saisies en file. La pastille de synchro est permanente (vert = à jour, ambre = en attente).
+
+
+
+
+
En ligne — à jour
+
+
+ ♦SIOP
+ Technicien
+ Synchro à jourAB
+
+
Ma journée jeudi 17 juil.
+
1 personne bloquée — B2 · Tour Atlas
+
+
OT-2026-0342 · Dépannage Ouvert
+ Personne bloquée en cabine
+
Asc. B2 — Tour Atlas · Aïn Diab
+
+
+
OT-2026-0341 · Dépannage En cours
+ Bruit anormal en gaine
+
Asc. A1 — Résidence Al Manar · échéance 18 juil.
+
+
+
OT-2026-0336 · Préventif Ouvert
+ Contrôle mensuel — juillet
+
Asc. A2 — Résidence Al Manar · grille 0/12
+
+
+
OT-2026-0329 · Travaux En attente
+ Remplacement coulisseaux
+
Asc. C1 — Anfa Place · pièce commandée (BC-2026-0024)
+
+
+
+
+
+
+
Hors-ligne — sous-sol
+
+
+ ♦SIOP
+ Technicien
+ Hors-ligneAB
+
+
Ma journée jeudi 17 juil.
+
⚠ Hors-ligne — vos saisies partent en file et se synchroniseront au retour du réseau.
+
+
OT-2026-0341 · Dépannage En cours
+ Bruit anormal en gaine
+
Asc. A1 — Résidence Al Manar · échéance 18 juil.
+
+
+
OT-2026-0336 · Préventif Ouvert2 en file
+ Contrôle mensuel — juillet
+
Asc. A2 — Résidence Al Manar · grille 7/12
+
+
+
OT-2026-0329 · Travaux En attente
+ Remplacement coulisseaux
+
Asc. C1 — Anfa Place · pièce commandée (BC-2026-0024)
+
+
+
+
+
+
+
+
+
Intention : la même machine à états que le web
+(R2) — un seul bouton principal selon l'état, jamais de liste de transitions. Consommer une pièce
+et saisir du temps reprennent les règles R3 (prix et taux figés annoncés avant le geste). Les photos
+partent en file comme le reste. Aucune saisie n'exige le réseau.
+
+
+
+
+
OT en cours — actions terrain
+
+
+ ♦‹ OT-2026-0341
+ Synchro à jour
+
+
Bruit anormal en gaine En cours
+
+
Intervention
+
ÉquipementAsc. A1 — Résidence Al Manar
+
PrioritéHaute
+
Échéance18 juillet
+
Demande liéeDEM-2026-0107 · Karim D.
+
+
+
Pièces & main-d'œuvre — 505 MAD
+
Coulisseau 16 mm × 2240
+
Graisse guide × 185
+
Ahmed · 1 h 30 × 120/h180
+
+
+
+
+
+
+
Photos
+
+ 🖼
+ 🖼en file
+ +
+
+
+
+
Bilan incomplet : « État des portes », « Action réalisée », « Élément concerné » — la clôture ouvrira le bilan.
+
+
+
+
+
+
+
Intention : le bilan codé R2, plein écran et au
+pouce : 3 champs requis (*), la garde reste visible et bloquante tant qu'ils manquent —
+identique au web, mêmes référentiels administrables. Hors-ligne, « Clôturer » met la clôture en
+file : l'OT passe localement à « Terminé (en file) » et se confirme à la synchro.
+
+
+
+
+
Bilan incomplet — garde visible
+
+
♦‹ Clôturer OT-2026-0341
+
+
Bilan d'intervention — requis pour clôturer
+
+
Fonctionnelles ▾
+
Sélectionner ▾
+
Frottement guides ▾
+
Sélectionner ▾
+
Remplacement pièce ▾
+
Sélectionner ▾
+
+
⚠ « Élément concerné » manque — la clôture restera bloquée (même garde que le web).
+
+
+
Checklist liée — 12/12 ✓
+
Grille de juillet cochée sur placecomplète
+
+
+
+
+
+
+
Complet, hors-ligne — clôture en file
+
+
♦‹ Clôturer OT-2026-0341
+ Hors-ligne
+
+
Bilan d'intervention — complet
+
+
Fonctionnelles ▾
+
À niveau ▾
+
Frottement guides ▾
+
Aucune ▾
+
Remplacement pièce ▾
+
Guides ▾
+
+
+
+
La clôture est enregistrée sur le téléphone. Elle sera rejouée telle quelle au retour du réseau.
+
+
+
+
+
+
+
Intention : le scanner lit le QR des étiquettes
+A6 posées en R1 (la référence de l'appareil) et ouvre la fiche — y compris hors-ligne, sur le
+parc déjà synchronisé. En dessous de l'épaule : saisie manuelle de la référence. Aucune géolocalisation
+en R4 (backlog v2, loi 09-08 : minimisation).
+
+
+
+
+
Scanner — QR de l'étiquette A6
+
+
♦Scanner
+ Hors-ligne
+
+
+
Visez le QR de l'étiquette de cabine
+
+
+
+
+
+
+
+
+
+
Intention : après le scan, tout ce qu'Ahmed
+doit savoir devant la machine : identité, statut, organes, historique des interventions (bilans
+codés lisibles). Consultation seule : la création d'OT reste au dispatcher (web) et le signalement au
+portail QR public (R2) — le mobile n'ajoute pas de 3ᵉ canal.
+
+
+
+
+
Résultat du scan — Asc. A1
+
+
♦‹ Asc. A1
+ En service
+
Otis Gen2 — Résidence Al Manar
+
+
Identité
+
EmplacementHall principal
+
Mise en servicemars 2019
+
Sous contratOui — préventif mensuel
+
GardienM. Alami · 06 12 34 56 78
+
+
+
Interventions récentes
+
OT-0341 Bruit anormal — guides en cours
+
OT-0329 Portes — contact remplacé 2 juil.
+
OT-0318 Préventif juin — 12/12 ✓ 18 juin
+
OT-0303 Armoire cde — fusible 30 mai
+
+
+
Organes suivis
+
Treuil ZAA20—
+
Portes cabine S33002 pannes / 12 mois
+
Armoire de commande1 panne / 12 mois
+
+
+
+
+
+
+
+
+
Intention : la grille préventive R2, cochable
+au pouce et hors-ligne — chaque coche part en file individuellement (pas de « tout ou rien » :
+7 coches faites = 7 coches sauvées, même si le téléphone s'éteint). La progression et le statut du mois
+sont ceux du serveur à la dernière synchro, assumés comme tels.
+
+
+
+
+
Grille de juillet — hors-ligne, 7/12
+
+
♦‹ Préventif — juillet
+ Hors-ligne
+
Asc. A2 — grille mensuelle 7/12
+
+
Verrouillage portes palières
+
Contacts de porte cabine
+
Niveau d'huile du treuil
+
Jeu des coulisseaux en file
+
Éclairage cabine & secours en file
+
Parachute — essai statique
+
Fins de course haut/bas
+
Téléalarme — essai d'appel
+
2 coches en file — la grille se recale à la synchro.
+
+
+
+
+
+
+
Intention : la file est visible et honnête :
+chaque saisie hors-ligne y est listée, rejouée dans l'ordre au retour du réseau. Conflit (verrou
+optimiste : l'OT a changé côté serveur depuis la lecture) → la file s'arrête sur l'élément, montre
+qui a modifié quoi et quand, et l'humain tranche — rien n'est écrasé ni perdu en silence. C'est l'écran
+de la recette type « mode avion en sous-sol ».
+
+
+
+
+
Retour réseau — file en cours
+
+
♦Synchro
+ Envoi… 2/4
+
File d'attente rejouée dans l'ordre
+
✓
+ Coche « Jeu des coulisseaux »OT-2026-0336 · 14 h 21
+ envoyée
+
+
+
+
+
diff --git a/docs/journal/journal.md b/docs/journal/journal.md
index c26ecdd..1dc4023 100644
--- a/docs/journal/journal.md
+++ b/docs/journal/journal.md
@@ -4,6 +4,21 @@ Trace chronologique des sessions (la plus récente en premier). Le **playbook**
---
+## 2026-07-17 — Pr. Daaif (+ Claude) — R4 ouverte : maquettes mobile (design d'abord)
+
+**Actions**
+
+- **`maquette-r4.html`** (docs/02-design/maquettes) : 7 écrans de l'app technicien — Ma journée (en ligne ET hors-ligne côte à côte), Fiche OT, Clôture terrain (bilan codé R2, garde visible ; variante « en file » hors-ligne), Scan QR (étiquettes A6 de R1, hors-ligne inclus), Fiche ascenseur (consultation devant la machine), Checklist du mois (coches individuelles en file), **Synchro & conflits** (file visible, conflit de verrou optimiste où l'humain tranche). Tokens répliqués, bi-thème, gabarit téléphone repris de la maquette R3, données du parc seedé. Vérifiée en navigateur (7 onglets + bascule sombre, zéro erreur console).
+- Artefact de validation publié pour le référent (7 écrans + preuve bi-thème + **5 décisions à acter** : D1 offline-first lecture locale/écriture en file, D2 verrou optimiste tranché par l'humain, D3 périmètre fermé « app du technicien » sans création d'OT mobile, D4 scan local des étiquettes R1, D5 photos compressées en file — pas d'audio ni de géolocalisation en R4, loi 09-08).
+
+**Décisions**
+
+- Aucune actée — les 5 décisions ci-dessus **attendent la validation du référent avec les écrans**. Aucune ligne de code Expo avant (principe n°1).
+
+**Prochaine étape** : validation référent (maquettes + décisions) → R4.1 socle mobile (Expo, coquille + connexion démo + lecture hors-ligne) ; en parallèle, redéploiement Dokploy de `release/r3` toujours à faire.
+
+---
+
## 2026-07-17 — Pr. Daaif (+ Claude) — R3 CLOSE : tag `release/r3`
**Actions**