# CHANGELOG - Lots 6 et 7 - CRUD prospects et interactions

## Objectif

Ce lot regroupe volontairement les lots 6 et 7 :

- creation et modification des prospects ;
- validation serveur Laravel ;
- formulaire Vue 3 / Inertia ;
- gestion du deuxieme e-mail et du contact par formulaire ;
- ajout d'interactions depuis la fiche prospect ;
- mise a jour automatique du prospect apres interaction.

## Fichiers ajoutes

- `app/Http/Requests/StoreProspectRequest.php`
- `app/Http/Requests/UpdateProspectRequest.php`
- `app/Http/Requests/StoreInteractionRequest.php`
- `app/Http/Requests/UpdateProspectStatusRequest.php`
- `resources/js/Pages/Prospects/Form.vue`
- `tests/Feature/ProspectCrudAndInteractionTest.php`

## Fichiers modifies

- `app/Http/Controllers/ProspectController.php`
- `app/Http/Controllers/DashboardController.php`
- `app/Services/Crm/ProspectInteractionService.php`
- `routes/web.php`
- `resources/js/Pages/Dashboard.vue`
- `resources/js/Pages/Prospects/Index.vue`
- `resources/js/Pages/Prospects/Show.vue`
- `README.md`

## Migrations a executer

Aucune nouvelle migration pour ces lots.

Les tables creees au lot 1 sont reutilisees :

- `prospects`
- `interactions`
- `activity_logs`

## Commandes a lancer

Depuis la VM Linux :

```bash
cd ~/programme/crm
unzip -o ~/Telechargements/crm_synoluvia_lot_6_7.zip -d .
php artisan optimize:clear
php artisan test --filter=ProspectCrudAndInteractionTest
npm run build
```

Si le dossier s'appelle `Téléchargements` avec accent :

```bash
unzip -o ~/Téléchargements/crm_synoluvia_lot_6_7.zip -d .
```

Relancer ensuite les serveurs si besoin :

```bash
npm run dev
```

Dans un second terminal :

```bash
cd ~/programme/crm
php artisan serve
```

## Equivalent PowerShell

```powershell
Expand-Archive -Force .\crm_synoluvia_lot_6_7.zip -DestinationPath .\crm
cd .\crm
php artisan optimize:clear
php artisan test --filter=ProspectCrudAndInteractionTest
npm run build
```

## Tests manuels a realiser

### Creation prospect

1. Aller sur `/prospects`.
2. Cliquer sur `Nouveau prospect`.
3. Creer un prospect avec designation, pays, statut, mode de contact et e-mail secondaire optionnel.
4. Verifier la redirection vers la fiche prospect.
5. Verifier que le prospect est visible dans la liste.

### Modification prospect

1. Ouvrir une fiche prospect.
2. Cliquer sur `Modifier`.
3. Modifier le statut, la discipline, le telephone, le site web ou le commentaire.
4. Enregistrer.
5. Verifier le retour sur la fiche prospect.

### Interaction

1. Ouvrir une fiche prospect.
2. Cliquer sur `Ajouter interaction`.
3. Saisir une date, un canal, un objet, un resultat, un statut apres contact et une date de relance.
4. Enregistrer.
5. Verifier que l'interaction apparait dans l'historique.
6. Verifier que le prospect est mis a jour :
   - derniere date de contact ;
   - compteur de contacts ;
   - statut ;
   - prochaine relance ;
   - dernier retour.

### Actions rapides

1. Tester `Marquer interesse`.
2. Tester `Marquer refus`.
3. Saisir une date puis tester `Enregistrer la relance`.

## Points de vigilance

- Les validations importantes sont faites cote serveur, pas uniquement dans Vue.
- Si `requires_contact_form` est coche, le mode de contact est force a `formulaire` cote serveur.
- Un prospect sans e-mail et sans site web est conserve en statut `a_qualifier`, sauf s'il est refuse ou archive.
- Les actions rapides changent le statut directement et sont tracees dans `activity_logs`.
- Les interactions sont creees avec `created_from = manual`.
- Les suppressions de prospects ne sont pas encore exposees dans l'interface ; elles pourront etre gerees plus tard avec confirmation et soft delete.

## Prochain lot recommande

Lot 8 : notes internes, notes epinglees, modification et suppression de notes.
