Pour répondre à ton point le plus important ("toutes les fonctionnalités de histo doivent se retrouver"), voici la **carte de couverture complète** histo → migration.

Mise à jour: 2026-05-24. La migration fonctionnelle portée le 2026-05-23 est terminée dans `syndic/` pour le périmètre identifié ci-dessous.

**A. Cœur technicien**
| Fonctionnalité histo | Statut |
|---|---|
| Login (`index.php`) | ✅ Prompt 2 |
| Dashboard accueil (`intro.php`) | ✅ 3a |
| Tâches : liste / ajout / modif / clôture / consultation | ✅ 3b |
| Urgences : liste / ajout / clôture (`urgent*.php`) | ✅ |
| À faire : liste / ajout / transformation (`afaire*.php`) | ✅ |
| Entretiens (`entretiens.php`) | ✅ |
| Historique ascenseur : liste + détail (`historique.php`, `historiqueAsc.php`) | ✅ |
| Ajout d'intervention (`interventionAjout.php`) | ✅ |
| Liste interventions par technicien (`interventionsListe.php`) | ✅ |

**B. Gestion / Facturation** (à migrer après le tech — "reprends tout")
| Fonctionnalité histo | Statut |
|---|---|
| Comptes : factures non terminées + totaux (`comptes.php`) | ✅ |
| Chantiers (`chantiers.php`) | ✅ |
| Préparation contrats (`contratsPret.php`) | ✅ |

**C. Génération PDF** (la lib FPDF/setasign devient un service réutilisable)
| Fonctionnalité histo | Statut |
|---|---|
| Devis / factures / notes de crédit (`pdfDevis.php`) | ✅ |
| Liste factures (`pdfListeFactures.php`) | ✅ |
| Résumé contrats (`pdfContratsResume.php`) | ✅ |
| Détail contrat / état technique (`pdfContratsSecu.php`) | ✅ |
| Étiquettes ascenseur (`pdfEtiquettes.php`) | ✅ |
| QR code dossier (`pdfQRcode.php`) | ✅ |

**D. Infrastructure** (absorbée dans CI4, pas des "pages")
| Élément histo | Statut |
|---|---|
| Connexion BDD + helpers (`db.php`) | ✅ config + models CI4 |
| Header / menu / footer (`cmsIntro/cmsMenu/cmsOption`) | ✅ layout commun |
| Envoi d'emails (PHPMailer) | ✅ service `Mailer` CI4 + configuration `.env`, branché sur `int_mail` lors de l'ajout d'intervention |

## Notes de fin de migration

- La table `utilisateurs` reçoit une colonne `utiPassHash` via la migration `2026-05-23-000001_AddUtiPassHashToUtilisateurs`.
- L'authentification CI4 utilise le hash lorsque `utiPassHash` est renseigné, afin de ne plus dépendre du mot de passe legacy en clair.
- Les rôles applicatifs sont centralisés dans `App\Config\Roles` et appliqués par les filtres `auth` et `role`.
- Les exceptions de permissions hardcodées du legacy restent documentées dans `permissions-a-clarifier.md`.
