# CRM SYNOLUVIA - LOT 14

Date : 16/08/2026

## Objectif

Ce lot ameliore l'utilisation du CRM sur telephone et ajoute le filtrage des prospects et des relances par utilisateur affecte.

## Evolutions

### 1. Navigation mobile / responsive

- Ajout d'un bouton de navigation `☰` visible sous le breakpoint desktop.
- Ouverture d'un panneau lateral mobile donnant acces a l'ensemble des rubriques autorisees : Tableau de bord, Prospects, Interactions, Relances, Notes, Modeles d'e-mail et rubriques administrateur selon les droits.
- Mise en evidence de la rubrique active.
- Acces au compte connecte et a la deconnexion depuis le menu mobile.
- Fermeture du menu lors d'un changement de page ou d'un clic sur l'arriere-plan.
- En-tete mobile simplifie afin de conserver une zone tactile confortable.
- Cartes de synthese Prospects et Relances compactees sur deux colonnes sur petit ecran afin de reduire la hauteur de la page.

### 2. Filtre par utilisateur affecte

#### Liste Prospects

- Ajout du filtre `Utilisateur affecte`.
- Filtrage serveur sur `prospects.assigned_user_id`.
- Conservation du filtre dans l'URL, le tri et la pagination.
- Affichage de l'utilisateur affecte sous la designation du prospect.

#### Relances

- Ajout du filtre `Utilisateur affecte` a la vue Relances.
- Filtrage serveur des relances sur `prospects.assigned_user_id`.
- Conservation du filtre lors du changement de periode et dans la pagination.
- Affichage de l'utilisateur affecte dans chaque ligne de relance.

## Base de donnees

Aucune migration dans ce lot.

Aucune modification de structure ou de donnees n'est necessaire. Ne pas lancer de migration specifique pour le LOT 14.

## Build frontend

Le dossier `public/build` compile est inclus directement dans le ZIP du LOT 14.

L'hebergement OVH ne disposant pas de `npm`, aucune compilation Node/Vite n'est necessaire sur le serveur de production pour ce lot.

## Fichiers sources modifies

- `app/Http/Controllers/FollowUpController.php`
- `app/Http/Controllers/ProspectController.php`
- `app/Http/Requests/FollowUpIndexRequest.php`
- `app/Http/Requests/ProspectIndexRequest.php`
- `resources/js/Layouts/AuthenticatedLayout.vue`
- `resources/js/Pages/FollowUps/Index.vue`
- `resources/js/Pages/Prospects/Index.vue`
- `tests/Feature/AssignedUserFiltersTest.php` (nouveau)
- `public/build/*` (build Vite production)

## Validation realisee

- Syntaxe PHP validee sur les controllers, FormRequests et le test ajoutes/modifies.
- `npm run build` execute avec succes sous Vite 6.4.3.
- Test PHPUnit LOT 14 fourni. Son execution dans l'environnement de preparation est bloquee par l'absence des extensions PHP `dom`, `mbstring`, `xml` et `xmlwriter`, comme pour le LOT 13.

## Procedure de deploiement OVH

Depuis la VM Linux locale :

```bash
scp -P 22 ~/Telechargements/crm_synoluvia_lot_14.zip synolui@ssh.cluster121.hosting.ovh.net:~/
ssh synolui@ssh.cluster121.hosting.ovh.net -p 22
```

Sur OVH :

```bash
cd ~/programme/crm

# Sauvegarde rapide des fichiers concernes avant surcouche
tar -czf ~/crm_backup_before_lot14.tar.gz \
  app/Http/Controllers/FollowUpController.php \
  app/Http/Controllers/ProspectController.php \
  app/Http/Requests/FollowUpIndexRequest.php \
  app/Http/Requests/ProspectIndexRequest.php \
  resources/js/Layouts/AuthenticatedLayout.vue \
  resources/js/Pages/FollowUps/Index.vue \
  resources/js/Pages/Prospects/Index.vue \
  public/build

unzip -o ~/crm_synoluvia_lot_14.zip -d .

php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

Il n'est pas necessaire de lancer `npm run build` sur OVH : le build est inclus dans le ZIP.

Il n'est pas necessaire de lancer `php artisan migrate --force` : ce lot ne contient aucune migration.

## Controles fonctionnels apres deploiement

1. Depuis un telephone, ouvrir le CRM et verifier la presence du bouton `☰` dans l'en-tete.
2. Ouvrir le menu et verifier l'acces aux rubriques Prospects et Relances.
3. Sur Prospects, choisir un utilisateur dans `Utilisateur affecte`, cliquer sur `Filtrer` et verifier que seuls ses prospects sont listes.
4. Modifier le tri ou changer de page et verifier que le filtre utilisateur reste applique.
5. Sur Relances, choisir une periode puis un utilisateur affecte et verifier que seules ses relances sont affichees.
6. Verifier que le nom de l'utilisateur affecte est visible sur les lignes Prospects et Relances.
7. Effectuer un rechargement force du navigateur si un ancien asset JavaScript reste en cache.
