# Checklist de mise en ligne (ISALYS)

## 1) Base de donnees

### Option A — Refonte complète (local → prod, WinSCP + Hetzner)

1. **Sauvegarder la prod** avant toute chose (dump annuaire + bases métier).
2. **En local** (XAMPP) :
   ```bat
   cd C:\xampp\htdocs\Isalys2.0
   php cli\export_all_for_deploy.php
   ```
   → dossier `deploy_exports\export_YYYYMMDD_HHMMSS\` (`.sql` + `MANIFEST.json`).
3. **WinSCP** : connexion SSH au VPS (IP Hetzner Cloud, utilisateur `root` ou deploy), transférer le dossier vers `/var/www/Isalys2.0/deploy_exports/`.
4. **Sur le VPS** (SSH / terminal WinSCP) :
   ```bash
   cd /var/www/Isalys2.0
   chmod +x cli/import_deploy_sql.sh
   bash cli/import_deploy_sql.sh deploy_exports/export_YYYYMMDD_HHMMSS
   ```
5. Vérifier `sql/verify_triggers_and_routines.sql` sur une base métier.

Voir aussi `sql/REGISTRY_INSTALL.txt` (section synchroniser local → serveur).

### Option B — Mises à jour incrémentales (schéma seulement)

- Executer `php cli/run_migrations.php` (annuaire + toutes les bases etablissements), ou appliquer les fichiers SQL manuellement.
- Verifier que chaque base etablissement est accessible avec l'utilisateur `DB_USER`.

## 2) Variables `.env`
- `APP_ENV=production`
- `APP_URL=https://votre-domaine`
- `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME`, `DB_REGISTRY`, `DB_TEMPLATE`
- Vérifier que `.env` n’est pas versionné (voir `SECRETS_ROTATION.md`)

## 3) Dependances
- `composer install --no-dev --optimize-autoloader`

## 4) Dossiers ecriture
- `data/` en ecriture serveur web
- `uploads/` en ecriture serveur web
- `photos/` en lecture (et ecriture si uploads photos)

## 5) HTTPS et web server
- Certificat SSL actif
- Redirection HTTP -> HTTPS active
- Headers securite actifs (cf `.htaccess` si Apache)

## 6) File asynchrone PDF
- Verifier que `telecharger_pdf_job.php` fonctionne
- Verifier generation asynchrone:
  - `bulletins.php`
  - `statistiques.php` (bouton PDF)

## 7) Cron worker (recommande en production)
- Ajouter une tache cron:
  - `* * * * * /usr/bin/php /var/www/Isalys2.0/cli/process_pdf_job.php --next >> /var/log/isalys-pdf-jobs.log 2>&1`
- Option: lancer deux workers (decalage 30s) pour lisser la file.

## 8) Sauvegardes
- Dump quotidien des bases
- Sauvegarde `data/pdf_jobs`, `uploads`, `photos`
- Verifier restauration au moins une fois
