mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 12:41:54 +00:00
R4 avait délibérément fermé le mobile au Technicien. Le référent demande l'ouverture à tous les rôles avec les mêmes droits qu'au web — nouvelle release R6 (R4 est close, R4.1/4.2/4.3 déjà pris par le socle mobile technicien d'origine, pas de réouverture ni de collision de numérotation). Maquette (docs/02-design/maquettes/maquette-mobile-tous-roles.html, 7 écrans) validée par le référent : D1 barre d'onglets adaptative par rôle (Technicien/Technicien limité inchangés + onglet Menu ajouté) ; D2 le Menu reprend à l'identique les 4 groupes du web, même matrice de permissions ; D3 groupe sans lien visible masqué en entier ; D4 le mobile porte les actions courantes par famille, pas les flux de gestion les plus denses ; D5 aucune logique de permission propre au mobile. R6.1 — socle : usePermissions() mobile calqué sur le web ; barre d'onglets adaptative (ongletsVisibles par rôle, href:null masque sans retirer du navigateur) ; Accueil (dashboard réel pour Administrateur/Gestionnaire/ Dispatcher/Vue seule, aucun chiffre inventé) ; OT (liste complète, viewOther déjà géré serveur, réutilise la fiche OT R4 telle quelle) ; Menu (groupes filtrés, vide masqué) ; Demandes (PanneauDemandes — un seul composant pour tous les rôles : création/suivi Demandeur, approbation/ rejet Gestionnaire/Dispatcher/Administrateur, lecture Vue seule). Familles pas encore portées : écran « à venir » plutôt qu'un lien mort. Typecheck propre, 17 tests Jest, lint 5/5 paquets. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@siop/mobile — l'app du technicien (R4)
Expo (SDK 57), offline-first, périmètre fermé : Ma journée, scan, préventif, synchro —
la gestion reste web, le demandeur reste sur le portail QR public. Maquettes validées :
docs/02-design/maquettes/maquette-r4.html (+ décisions D1-D5 au journal du 17/07/2026).
Lancer
# API locale d'abord (apps/api : pnpm dev), puis :
pnpm --filter @siop/mobile start # QR Expo Go (téléphone sur le MÊME réseau)
EXPO_PUBLIC_API_URL=http://192.168.x.y:3000 pnpm --filter @siop/mobile start
EXPO_PUBLIC_API_URL: URL de l'API vue depuis le téléphone (IP LAN, pas localhost). Défaut :http://localhost:3000(suffisant pourexpo start --web).- Vérification navigateur :
expo start --web+CORS_ORIGINS=http://localhost:8081côté API (les apps natives n'envoient pas d'Origin — CORS ne concerne que le web).
Ce que porte R4.1 (socle)
- Connexion e-mail/mot de passe + sélecteur démo (ADR-002 : n'existe que si l'API l'expose).
- Coquille tabbar (onglets à venir marqués R4.2/R4.3) + Ma journée : OT triés
priorité puis échéance (
src/lib/journee.ts, testé), urgence en tête, pastille de synchro. - Lecture hors-ligne (D1) : cache TanStack persisté dans AsyncStorage (7 jours),
NetInfo pilote
onlineManager+ bandeau. L'écriture en file arrive en R4.3. - Client typé généré depuis
docs/openapi.json(pnpm generate:client) — règle d'or ADR-001. - Jeton dans SecureStore (trousseau) ; AsyncStorage en repli web de dev.
Tests
pnpm --filter @siop/mobile test (jest-expo — logique pure : tri, tokens) ;
typecheck et le lint racine s'appliquent (job CI mobile).