# Guide de déploiement — App Suivi Transports sur OVH

## 1. Offre OVH recommandée

Prenez l'offre **Hébergement Web "Pro"** (gamme Business, ~9,99 €/mois hors promo) chez OVH. C'est le premier palier qui inclut :
- L'**accès SSH** (indispensable pour lancer Composer et les commandes Artisan) — absent des offres Perso/Starter/Eco.
- PHP 8.2+ et jusqu'à 10 bases de données MySQL.
- Largement suffisant pour ce volume de données (quelques centaines à quelques milliers de dossiers/an).

Si vous préférez plus de contrôle (tâches planifiées plus fines, files d'attente en arrière-plan, montée en charge), un **VPS OVH** convient aussi, mais demande d'administrer soi-même le serveur (Nginx/Apache, PHP-FPM, MySQL) — pas nécessaire pour démarrer.

## 2. Créer la base MySQL sur OVH

1. Dans le Manager OVH → Hébergements → votre offre → onglet **Bases de données** → Créer une base MySQL.
2. Notez le nom de la base, l'utilisateur, le mot de passe et le **serveur** (host, ex. `xxxxx.mysql.db`).

## 3. Déployer le code

Connectez-vous en SSH à votre hébergement (identifiants dans le Manager OVH), puis :

```bash
cd www   # ou le dossier racine de votre offre
git clone <votre-dépôt-git> app-transport   # ou envoyez le zip fourni et décompressez-le
cd app-transport

composer install --no-dev --optimize-autoloader

cp .env.example .env
php artisan key:generate
```

Éditez `.env` et renseignez :
```
APP_URL=https://votre-domaine.fr
DB_HOST=xxxxx.mysql.db
DB_DATABASE=le_nom_de_votre_base
DB_USERNAME=...
DB_PASSWORD=...
MAIL_HOST=ssl0.ovh.net       # si vous utilisez une adresse email OVH pour les notifications
MAIL_USERNAME=...
MAIL_PASSWORD=...
```

## 4. Initialiser la base de données

```bash
php artisan migrate --force
php artisan db:seed --force          # crée le compte admin initial (admin@odial-solutions.fr / ChangeMoi123!)
php artisan app:import-access-data   # importe les données de l'ancienne base Access (fichiers CSV fournis dans database/access-export/)
```

**Important** : connectez-vous immédiatement avec le compte admin et changez le mot de passe (menu Paramètres → Utilisateurs, ou directement en base).

## 5. Configurer le point d'entrée web

Sur un hébergement mutualisé OVH, le site doit pointer vers le dossier **`public/`** de Laravel, pas la racine du projet :
- Dans le Manager OVH → Multisite, faites pointer votre domaine vers `app-transport/public`.
- Assurez-vous que `.htaccess` est bien présent dans `public/` (il l'est par défaut avec Laravel) pour la réécriture d'URL.

## 6. Emails aux followers (notifications)

Deux options selon votre offre :
- **Mutualisé (pas de process en arrière-plan)** : passez `QUEUE_CONNECTION=sync` dans `.env` — les emails partent immédiatement à chaque création/changement de statut, sans file d'attente.
- **VPS ou si vous gardez `QUEUE_CONNECTION=database`** : ajoutez une tâche planifiée (cron) qui traite la file toutes les minutes :
  ```
  * * * * * cd /chemin/vers/app-transport && php artisan queue:work --stop-when-empty >> /dev/null 2>&1
  ```

## 7. Tâches planifiées (optionnel mais recommandé)

Ajoutez cette unique ligne de cron (le "scheduler" Laravel gère ensuite tout en interne, utile pour de futures automatisations comme des relances de dossiers en retard) :
```
* * * * * cd /chemin/vers/app-transport && php artisan schedule:run >> /dev/null 2>&1
```

## 8. Mises à jour futures

```bash
git pull
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

## 9. Sécurité de base

- `APP_DEBUG=false` en production (déjà réglé dans `.env.example`).
- HTTPS activé (certificat Let's Encrypt gratuit disponible directement dans le Manager OVH).
- Changez le mot de passe admin par défaut dès la première connexion.
- Sauvegardes : OVH propose des sauvegardes automatiques de la base MySQL sur les offres Pro/Performance — vérifiez qu'elles sont activées.
