Files
siop2/apps/mobile
pr-daaif be5dfb6bc7 fix(r6): recette Gestionnaire — Menu non scrollable, BC sans confirmation
Deux bugs réels trouvés sur iPhone physique par le référent :

1. app/(tabs)/menu.tsx n'était pas scrollable (View, pas ScrollView) —
   avec les 4 groupes désormais pleinement câblés (12 liens + 4 en-têtes),
   le contenu dépasse la hauteur de l'écran et le dernier groupe
   (Pilotage, dont Personnes & équipes) était strictement inaccessible.
   Présent depuis R6.1, seulement révélé maintenant. Fix : ScrollView
   autour de la liste des groupes, en-tête fixe au-dessus.

2. app/stock/[id]/commander.tsx naviguait silencieusement en arrière
   après succès — le référent a créé deux BC (vérifiés corrects côté
   serveur) sans aucun retour dans l'app. Fix : écran de confirmation
   explicite (référence, fournisseur, total, statut) avant de revenir.

Amélioration sur retour direct : Tiers gagne une fiche détail
(app/tiers/[id].tsx — identité, contact, BC en cours, sites rattachés,
aucune nouvelle requête) — le lecture seule sans réaction au tap se
lisait comme un écran cassé plutôt que délibérément simple.

Typecheck propre, 17 tests Jest, lint 5/5 paquets.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-02 12:59:40 +01:00
..

@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 pour expo start --web).
  • Vérification navigateur : expo start --web + CORS_ORIGINS=http://localhost:8081 cô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).