# Plan de migration V2 SaaS multi-entreprises

## Constat

L'application actuelle est une app Express/EJS/MySQL mono-entreprise. Les espaces public, admin, client et employe sont deja separes, ce qui est une bonne base fonctionnelle. En revanche, les donnees metier sont globales: utilisateurs, clients, demandes, devis, factures, interventions, messages, avis, contenus SEO, photos, articles, comptes bancaires et reglages.

La table `settings` servait de configuration singleton. En V2 SaaS, ces reglages deviennent des donnees d'entreprise, portees par `company_id`.

## Cible V2

Chaque entreprise cliente devient un tenant represente par `companies`.

Donnees rattachees a une entreprise:

- `users`
- `clients_profiles`
- `quote_requests`
- `quote_request_files`
- `quotes`
- `quote_items`
- `quote_acceptances`
- `interventions`
- `intervention_staff`
- `invoices`
- `invoice_items`
- `payments`
- `messages_threads`
- `messages`
- `reviews`
- `site_photos`
- `blog_posts`
- `password_resets`
- `activity_logs`
- `bank_accounts`
- `settings`

La demo devient le tenant initial `saas-demo`.

## Phases

### Phase 1 - Fondation tenant

- Creer `companies`.
- Ajouter `company_id` aux donnees metier.
- Backfiller les donnees existantes vers `saas-demo`.
- Ajouter un middleware de resolution tenant par session, sous-domaine ou domaine personnalise.
- Ajouter une inscription entreprise qui cree la company et son admin.

### Phase 2 - Isolation applicative

- Ajouter `company_id` dans toutes les requetes admin, client, employe et publiques.
- Verifier que les admins ne voient que leur entreprise.
- Verifier que les clients/employes ne peuvent acceder qu'aux ressources de leur entreprise.
- Rendre les generateurs de numeros devis/factures scopes par entreprise.

### Phase 3 - Configuration entreprise

- Remplacer les reglages singleton par des reglages par entreprise.
- Exposer une page onboarding/configuration: logo, couleurs, TVA, IBAN, adresse, zones, email, telephone.
- Migrer `bank_accounts` et les conditions devis/factures dans le contexte entreprise.

### Phase 4 - Site vitrine SEO par tenant

- Generer les pages publiques depuis les donnees de l'entreprise.
- Scoper services, zones, photos et articles par `company_id`.
- Construire les schemas SEO depuis `companies`.
- Preparer sous-domaines et domaines personnalises.

### Phase 5 - Modules SaaS complets

- Finaliser CRUD clients, devis, factures, interventions, employes, messages, avis par tenant.
- Ajouter roles SaaS si besoin: super admin plateforme, admin entreprise, employe, client.
- Ajouter limites d'abonnement, facturation SaaS et statut de tenant.

## Regle de migration

Ne jamais modifier le projet AG Nettoyage original. Toute evolution se fait dans cette copie SaaS:

`/Users/allan/Documents/Codex/ag-nettoyage-saas`
