mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 12:41:54 +00:00
- Contrat (76 opérations) : Document expose inCorpus/indexedAt/chunkCount,
PATCH /documents/{id}/corpus (ASSETS.edit), POST /assistant/reindex
(bilan chiffré) ; ci-contract vérifie désormais aussi le client mobile.
- Web : page /assistant (chat sourcé — extraits exacts cités, Ouvrir vers
PDF authentifié ou fiche OT, avertissement permanent ; refus honnête
chiffré avec action utile) ; Bibliothèque = corpus (bandeau 09-08,
statut d'indexation par document, interrupteur d'exclusion PDF,
Réindexer tout) ; fiche OT : « Décrire pour suggérer » (Appliquer =
geste humain, liseré « suggéré » retiré au choix manuel).
- Mobile : chips de suggestion dans la clôture (un appui = un champ
pré-rempli, « réseau requis » hors-ligne — la file R4 n'en dépend pas).
- apps/ai : seuils AI_SEUIL_* configurables par env (CI + calibrage).
- CI e2e : service siop2-ai (embeddeur déterministe, seuils calibrés sur
mesures : match 0,66 vs bruit 0,11) + parcours R5 Playwright (PDF généré
xref valide → réindexation → réponse sourcée → refus → suggestion).
- Vérifié : 16/16 Playwright, 78 tests API, 23 pytest, 17 jest-expo ;
chaîne réelle au vrai modèle ONNX (web 7/7, mobile Expo web 6/6).
Co-Authored-By: Claude Fable 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).