# Recette navigateur — UX/UI lots 7 à 10

Ce document complète `docs/UX_VALIDATION_LOTS_0_6.md`. Il doit être exécuté sur une copie de recette avec plusieurs comptes et projets. Tester au minimum en desktop, tablette, **390×844** et **360×800**, avec la console du navigateur ouverte.

## Préparation

- utiliser un super-admin, un profil commercial, un profil technique, un profil comptable et un profil lecture seule ;
- prévoir deux projets auxquels les comptes n'ont pas tous accès ;
- prévoir une prospection avec devis non envoyé, devis envoyé, facture partiellement payée, convention active/archivée et plusieurs états de fiche technique ;
- désactiver le cache dans les outils de développement ;
- vérifier à chaque scénario l'absence d'erreur JavaScript, de ressource bloquée par CSP et de scroll horizontal de page.

## Lot 7 — Commercial

1. Depuis une prospection autorisée, ouvrir le simulateur, modifier le tarif et revenir : le bon dossier doit rester sélectionné.
2. Tenter le même URL avec une prospection d'un projet interdit : accès refusé, aucune donnée révélée.
3. Vérifier le résultat prioritaire et les options avancées à 390×844 et 360×800.
4. Générer un devis : le jalon « Proposition envoyée » ne change pas.
5. Depuis le devis, choisir « Envoyer ce devis » : la modale d'e-mail s'ouvre et le PDF attendu est coché.
6. Fermer/réouvrir la modale, envoyer avec succès puis vérifier le jalon et `sentAt`; provoquer un échec SMTP et vérifier l'absence d'avancement.
7. Enregistrer deux paiements partiels depuis deux points d'entrée ; vérifier le même formulaire, le solde et l'absence de double soumission.
8. Sur les conventions, vérifier cartes mobiles, archives, restauration autorisée/interdite et suppression physique réservée au super-admin.

## Lot 8 — Production technique

1. Vérifier que « Documents techniques » distingue modèles remis aux lieux et configuration interne.
2. Depuis une prospection, associer une fiche standard par « Association rapide ».
3. Parcourir le wizard avancé sur desktop, tablette et téléphone ; vérifier corps et pied de modale continus.
4. Tester `Générée → Envoyée → Validée`, le refus avec motif, le renvoi et le remplacement ; vérifier historique et permissions.
5. Vérifier qu'une fiche envoyée n'est pas considérée validée et n'est plus supprimable.
6. Éditer un plan au toucher en paysage/tablette : ajout par toucher, déplacement, sélection, taille, rotation, duplication, renommage et suppression.
7. Vérifier qu'en portrait l'avertissement est visible et que seul le plateau peut défiler horizontalement, jamais la page entière.

## Lot 9 — Documents et comptabilité

1. Parcourir la bibliothèque avec deux profils : seules les cartes autorisées apparaissent ; tester Voir, Télécharger, version et archive.
2. Altérer les identifiants de document/projet dans l'URL et les formulaires : refus serveur attendu.
3. Rechercher une pièce dans Documents comptables, déplier/replier l'arborescence et ajouter une pièce externe.
4. Vérifier en cartes : factures à encaisser, mouvements, dépenses, recettes, merchandising, contrats et comptes financiers.
5. Créer une dépense avec justificatif, modifier une dépense et compléter un justificatif manquant ; vérifier conservation des valeurs après erreur serveur.
6. Créer recette et vente merchandising en laissant les options avancées fermées, puis avec compte/moyen de paiement.
7. Tester contrat avec zéro, une puis plusieurs pièces ; vérifier les modales longues sur les deux formats téléphone.
8. Avec un comptable privé d'un projet, vérifier que les lignes nominatives du projet étranger sont absentes, et pas seulement non cliquables.

## Lot 10 — Administration

1. Vérifier les cartes utilisateurs à 390×844 et 360×800.
2. Créer/modifier un utilisateur avec groupes et projets ; vérifier le blocage ou message du compte back-office sans projet.
3. Vérifier que les actions activer/désactiver et super-admin restent protégées et confirmées.
4. Modifier chaque niveau d'une permission depuis la matrice desktop puis depuis la carte mobile ; le résultat serveur doit être identique.
5. Simuler une erreur réseau lors du changement de permission : rechargement sûr, aucune fausse confirmation locale.
6. Vérifier les cartes Tarifs, Frais, Modèles de conventions, demandes entrantes et IP bloquées.

## Contrôles transversaux

- tabulation clavier, focus visible, libellés des boutons icône et fermeture Échap ;
- ouverture/fermeture répétée des modales et menus Bootstrap ;
- rotation portrait/paysage sans perte de saisie ;
- double clic rapide sur chaque validation ;
- réponse 403/404 cohérente pour chaque IDOR tenté ;
- CSRF invalide ou absent refusé ;
- textes utilisateurs affichés échappés ;
- aucune régression de la navigation mobile stable ni du PWA réseau uniquement.

## Commandes de validation serveur

```bash
docker compose exec web php bin/console lint:container
docker compose exec web php bin/console lint:twig templates
docker compose exec web php bin/console doctrine:schema:validate
docker compose exec web php bin/console doctrine:schema:update --dump-sql
docker compose exec web php bin/console cache:clear
docker compose exec web php bin/console cache:warmup
docker compose exec web php bin/phpunit
```

`doctrine:schema:update --dump-sql` doit être vide. Aucune migration n'est introduite par les lots 7 à 10.
