# CHANGELOG - Lot 1 - Base de donnees CRM

## Objectif du lot

Mettre en place le socle de donnees du CRM SYNOLUVIA : tables metier, champs utilisateur, modeles Eloquent, relations principales, configuration des statuts/modes et tests minimaux.

## Hypotheses retenues

- La base cible reste MySQL ou MariaDB compatible OVH.
- Le test local peut continuer en SQLite dans la VM Linux pour eviter d'installer MySQL tout de suite.
- Les statuts, modes de contact et canaux sont stockes dans `config/crm.php` et recopies dans la table `settings` par seeder afin de garder un point de parametrage simple.
- Les suppressions de prospects sont logiques via `softDeletes`.
- Le champ `role` est une chaine simple (`admin` ou `user`) pour eviter une dependance de permissions trop lourde a ce stade.

## Fichiers ajoutes

- `app/Models/ActivityLog.php`
- `app/Models/CrmFile.php`
- `app/Models/EmailTemplate.php`
- `app/Models/Interaction.php`
- `app/Models/Prospect.php`
- `app/Models/ProspectNote.php`
- `app/Models/Setting.php`
- `config/crm.php`
- `database/migrations/2026_06_07_210000_add_crm_fields_to_users_table.php`
- `database/migrations/2026_06_07_210100_create_prospects_table.php`
- `database/migrations/2026_06_07_210200_create_interactions_table.php`
- `database/migrations/2026_06_07_210300_create_prospect_notes_table.php`
- `database/migrations/2026_06_07_210400_create_email_templates_table.php`
- `database/migrations/2026_06_07_210500_create_crm_files_table.php`
- `database/migrations/2026_06_07_210600_create_settings_table.php`
- `database/migrations/2026_06_07_210700_create_activity_logs_table.php`
- `database/seeders/CrmSettingsSeeder.php`
- `tests/Feature/CrmSchemaTest.php`

## Fichiers modifies

- `.env.example`
- `README.md`
- `app/Http/Controllers/DashboardController.php`
- `resources/js/Pages/Dashboard.vue`
- `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- `app/Http/Controllers/Auth/RegisteredUserController.php`
- `app/Models/User.php`
- `database/factories/UserFactory.php`
- `database/seeders/DatabaseSeeder.php`
- `tests/Feature/Auth/LoginTest.php`

## Migrations a executer

```bash
php artisan migrate
```

Les migrations ajoutees creent ou modifient les tables suivantes :

- `users` : ajout de `role` et `is_active`
- `prospects`
- `interactions`
- `prospect_notes`
- `email_templates`
- `crm_files`
- `settings`
- `activity_logs`

## Commandes a lancer - Linux VM

Depuis le dossier du projet :

```bash
cd ~/programme/crm
php artisan config:clear
php artisan migrate
php artisan db:seed
php artisan test
```

Si vous utilisez SQLite en local et que le fichier n'existe pas encore :

```bash
touch database/database.sqlite
php artisan config:clear
php artisan migrate --seed
```

Si le front n'est pas deja lance :

```bash
npm run dev
```

Dans un deuxieme terminal :

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

## Equivalent PowerShell

Depuis le dossier du projet :

```powershell
cd ~/programme/crm
php artisan config:clear
php artisan migrate
php artisan db:seed
php artisan test
```

Si vous utilisez SQLite en local :

```powershell
New-Item -ItemType File -Path database/database.sqlite -Force
php artisan config:clear
php artisan migrate --seed
```

## Tests manuels a realiser

1. Verifier que `php artisan migrate` se termine sans erreur.
2. Verifier que `php artisan db:seed` conserve ou cree le compte admin : `admin@synoluvia.local`.
3. Se connecter avec le compte admin et verifier que le tableau de bord affiche bien le badge `Lot 1` et le module `Tables prospects / interactions` en `Operationnel`.
4. Verifier que `php artisan test` passe.
5. Dans Tinker, verifier rapidement les tables :

```bash
php artisan tinker
```

Puis :

```php
Schema::hasTable('prospects');
App\Models\User::first()?->role;
App\Models\Setting::getValue('crm.default_country');
```

## Points de vigilance

- En local, si `.env` pointe vers MySQL mais que MySQL n'est pas installe ou demarre, `php artisan migrate` retournera une erreur de connexion. Pour continuer simplement en VM, utilisez SQLite comme indique dans le README.
- Le ZIP du lot 1 est incremental : il contient uniquement les fichiers ajoutes ou modifies par rapport au lot 0. Il faut l'extraire par-dessus le projet existant.
- Correctif packaging : le ZIP ne doit pas contenir `vendor/`, `node_modules/`, `database/database.sqlite`, ni de dossier imbrique `crm-synoluvia/`.
- Les ecrans CRM metier ne sont pas encore crees dans ce lot. Les tables et modeles sont prets pour l'import Excel du lot 2.
- Les regles automatiques de mise a jour du prospect apres creation d'interaction seront implementees au lot 7 avec `ProspectInteractionService`.
- L'import Excel n'est pas encore disponible. Il arrive au lot 2.


## Correctif visible ajoute

Le tableau de bord affiche maintenant `Lot 1` et indique l'etat des tables CRM afin de confirmer visuellement que les migrations du lot 1 sont deployees.
