mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 12:41:54 +00:00
Maquette dédiée validée (docs/02-design/maquettes/maquette-mobile-assistant.html, 3 écrans) — la seule sous-étape de R6 à avoir eu son propre tour de design-first plutôt qu'une exécution directe de la maquette R6 initiale, un chat sourcé étant un patron d'écran neuf. D1 un échange à la fois ; D2 "Voir le document" → métadonnées seules (R6.3), "Ouvrir l'OT" → fiche R4 ; D3 refus chiffré + avertissement permanents, identiques au web ; D4 Assistant rejoint Pilotage pour tout rôle avec WORK_ORDERS.view ; D5 (ajoutée en revue) — la question peut être tapée OU dictée, même pipeline que la dictée déjà livrée en clôture (ADR-004 §5, faster-whisper local, audio jamais persisté), la transcription remplit le champ, jamais d'envoi automatique. api/assistant.ts (useAskAssistant, 503 géré comme le web). Écran Assistant : chat un échange à la fois, citations numérotées, sources avec extrait exact, refus honnête chiffré + Reformuler. Micro dans la barre de saisie : réutilise telle quelle la mécanique de cloture.tsx (useAudioRecorder, setAudioModeAsync, useTranscription, purge quoi qu'il arrive) — pipeline déjà recetté sur iPhone physique (01/08), aucun nouveau bug à découvrir. Fiche document (bibliotheque/[id].tsx, nouveau) — la liste R6.3 y mène aussi désormais. Menu : Assistant route réellement — le Menu R6 n'a plus d'entrée "à venir" dans les 4 groupes (Catégories exceptée, admin, hors périmètre mobile). R6 fonctionnellement complet (Exploitation/Parc/Ressources/Pilotage, Assistant inclus, pour tous les rôles) — reste une recette complète avant de considérer R6 close au sens R0→R5. Typecheck propre, 17 tests Jest, lint 5/5 paquets. Contrat non touché. 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).