mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 12:41:54 +00:00
docs(r0): kickoff SIOP V2 — vision, cadrage, charte graphique, maquettes HD
Refondation design-first du projet SIOP (v1 gelée) : - Playbook 00-vision (charte projet, personas, benchmark Atlas) - Playbook 01-cadrage (releases R0→R5 + DoD, user-story map, exigences, risques) - Playbook 02-design : charte graphique, tokens.css bi-thème (palettes analytics validées CVD/contraste par script), maquettes HD navigables (7 écrans dont démo-login DEMO_MODE, bilan codé, portail QR, mobile) Prochaine étape : validation des maquettes par le référent avant tout code. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
55
docs/01-cadrage/exigences.md
Normal file
55
docs/01-cadrage/exigences.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Exigences non fonctionnelles — SIOP V2
|
||||
|
||||
> **Rôle de ce document (playbook)** : les exigences fonctionnelles vivent dans la
|
||||
> user-story map et les issues ; ici on fige ce qui est **transversal** — qualité, sécurité,
|
||||
> conformité, exploitation — avec des critères **mesurables** (sinon invérifiables).
|
||||
|
||||
## Qualité & design
|
||||
|
||||
| Exigence | Critère mesurable |
|
||||
| --- | --- |
|
||||
| Fidélité au design | Revue pixel par release : écrans conformes aux maquettes validées (`../02-design/`) |
|
||||
| Réactivité | Interfaces utilisables de 360 px (mobile) à 1920 px ; tables scrollables sans casser la page |
|
||||
| Thème | Clair **et** sombre, pilotés par les tokens ; aucun style codé en dur hors tokens |
|
||||
| Accessibilité | Navigation clavier sur les parcours critiques ; libellés/aria sur tous les contrôles ; contraste AA |
|
||||
| Langue | 100 % français (produit), zéro franglais dans l'UI |
|
||||
|
||||
## Performance
|
||||
|
||||
| Exigence | Critère |
|
||||
| --- | --- |
|
||||
| Chargement des listes | < 1 s pour 10 000 OT (pagination serveur, index SQL) |
|
||||
| Tableau de bord | < 2 s (agrégations SQL, jamais de calcul en mémoire sur tout l'historique) |
|
||||
| Mobile offline | Ouverture d'un OT déjà synchronisé : instantanée (< 200 ms, lecture locale) |
|
||||
|
||||
## Sécurité
|
||||
|
||||
| Exigence | Critère |
|
||||
| --- | --- |
|
||||
| API fermée par défaut | Guard JWT global ; routes publiques explicitement `@Public()` ; test de couverture des routes |
|
||||
| Permissions | Matrice rôles × objets × droits **en base** (jamais dans le JWT), testée rôle par rôle |
|
||||
| Démo-login | `POST /auth/demo-login` **inexistant** (404) si `DEMO_MODE` n'est pas `true` ; jamais activé en production réelle ; test e2e dédié |
|
||||
| Fichiers | Accès aux objets MinIO uniquement par URL signée à durée courte ; clés opaques |
|
||||
| Secrets | Jamais en git ; `.env.example` exhaustifs ; secrets Dokploy |
|
||||
|
||||
## Conformité (loi 09-08)
|
||||
|
||||
Consentement explicite pour toute géolocalisation ; géolocalisation limitée aux heures de
|
||||
service ; purge des enregistrements audio après transcription (R5) ; droit d'accès/rectification
|
||||
des données personnelles (procédure au runbook).
|
||||
|
||||
## Fiabilité & exploitation
|
||||
|
||||
| Exigence | Critère |
|
||||
| --- | --- |
|
||||
| Sauvegardes | PostgreSQL + MinIO sauvegardés quotidiennement ; restauration testée 1×/release (runbook) |
|
||||
| Migrations | `prisma migrate deploy` rejouable ; seed idempotent (rejouer ne casse rien) |
|
||||
| Offline mobile | Aucune saisie terrain perdue : file locale + verrou optimiste + rejeu (testé) |
|
||||
| Supervision | Endpoint `/health` (base, Redis, MinIO) ; vérifié au déploiement |
|
||||
|
||||
## Testabilité
|
||||
|
||||
Pyramide : unitaires (logique pure), intégration contre infra réelle (Docker), parcours
|
||||
navigateur Playwright (1+ par release), mobile testé en Node (`node:sqlite`), contrat
|
||||
OpenAPI bloquant en CI. Couverture API ≥ 70 % **bloquante**. Chaque bug corrigé = un test
|
||||
qui l'aurait attrapé.
|
||||
Reference in New Issue
Block a user