feat(r6): R6.5 — Assistant mobile (chat sourcé + dictée)

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>
This commit is contained in:
pr-daaif
2026-08-02 12:18:25 +01:00
parent 700bd4e7ff
commit ac8b92e9c5
8 changed files with 857 additions and 5 deletions

View File

@@ -4,6 +4,49 @@ Trace chronologique des sessions (la plus récente en premier). Le **playbook**
---
## 2026-08-02 — Pr. Daaif (+ Claude) — R6.5 : Assistant mobile (chat sourcé + dictée)
**Actions**
- Maquette dédiée (`docs/02-design/maquettes/maquette-mobile-assistant.html`, 3 écrans) rédigée et
validée par le référent : réponse sourcée, refus honnête chiffré, et — demande ajoutée en cours
de revue — **dictée de la question**. Décisions actées : D1 un échange à la fois (pas
d'historique multi-tours conservé, même limite que le web) ; D2 « Ouvrir l'OT » → fiche R4
telle quelle, « Voir le document » → métadonnées seules (bibliothèque R6.3, pas d'ouverture de
fichier tant qu'`expo-sharing` n'est pas ajouté) ; D3 refus chiffré + avertissement permanents,
identiques au web ; D4 Assistant rejoint le groupe Pilotage pour tout rôle avec
`WORK_ORDERS.view` ; **D5** 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 de saisie, éditable, jamais d'envoi automatique.
- `api/assistant.ts` (`useAskAssistant`, 503 géré comme le web — état attendu du contrat, pas une
erreur).
- Écran **Assistant** (`app/assistant/index.tsx`) : chat à un échange à la fois, citations
numérotées, cartes sources (extrait exact + « Voir le document »/« Ouvrir l'OT »), refus honnête
chiffré avec « Reformuler », avertissement permanent. Micro dans la barre de saisie : réutilise
telle quelle la mécanique de `cloture.tsx` (`useAudioRecorder`, `setAudioModeAsync`,
`useTranscription`, purge `FileSystem.deleteAsync` quoi qu'il arrive) — aucun nouveau bug à
découvrir, le pipeline est déjà recetté sur iPhone physique (01/08).
- Fiche document (`app/bibliotheque/[id].tsx`, nouveau) : métadonnées seules, destination de
« Voir le document » — la liste `bibliotheque/index.tsx` (R6.3) y mène aussi désormais (les
cartes étaient jusque-là décoratives, sans action).
- Menu : Assistant route réellement — **le Menu R6 n'a plus aucune entrée « à venir » dans les 4
groupes** (Catégories excepté, admin, toujours hors périmètre mobile).
- Vérifié : typecheck propre, 17 tests Jest, lint 5/5 paquets. Contrat non touché.
**Décisions**
- Voir D1-D5 ci-dessus (maquette dédiée, 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).
**Prochaine étape** : **R6 fonctionnellement complet** (Exploitation/Parc/Ressources/Pilotage,
Assistant inclus, pour tous les rôles). Reste la recette complète avant de considérer R6 close au
sens R0→R5 (chaque sous-étape n'a été vérifiée que par typecheck/tests/lint jusqu'ici, jamais en
usage réel au-delà de la confirmation R6.1) ; `expo-sharing`/`expo-clipboard` en réserve pour une
prochaine étape native ; restes non bloquants inchangés (Dokploy, Android physique,
`AI_SEUIL_*`/darija, `DOKPLOY_WEBHOOK_URL`).
---
## 2026-08-02 — Pr. Daaif (+ Claude) — Confirmation référent : nav adaptative + déconnexion
**Actions**