mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 20:51:53 +00:00
apps/mobile (Expo SDK 57, TS strict, workspace pnpm) : connexion e-mail/mdp + sélecteur démo ADR-002 (uniquement si l'API l'expose), tabbar de la maquette validée (onglets futurs marqués R4.2/R4.3), « Ma journée » triée priorité puis échéance (fonction pure testée), urgence en tête, pastille de synchro. D1 en actes (lecture) : cache TanStack persisté dans AsyncStorage (7 jours), NetInfo → onlineManager + bandeau hors-ligne horodaté ; jeton en SecureStore ; tokens light/dark répliqués et testés ; client typé régénéré depuis docs/openapi.json (règle d'or). API : CORS_ORIGINS opt-in (vide par défaut) — Expo web/debug seulement, le web de prod reste derrière le proxy, les apps natives n'ont pas d'Origin. Vérifié 10/10 en Expo web piloté (connexion démo Ahmed → Ma journée scopée → hors-ligne servie du cache → retour) ; 6 tests jest-expo ; lint racine étendu (react-hooks) ; job CI mobile, deploy en dépend. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
34 lines
1.7 KiB
Markdown
34 lines
1.7 KiB
Markdown
# @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
|
|
|
|
```bash
|
|
# 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`).
|