# GUIDE DE DÉPLOIEMENT
## Système de gestion immobilière — installation sur cPanel Namecheap (sans SSH)

Ce guide installe le **MVP du cœur locatif** et les données de démonstration, pour tester l'application de bout en bout.

---

## 0. CE QUE VOUS ALLEZ DÉPLOYER

Le parcours fonctionnel disponible :
**Connexion → tableau de bord → biens → locataires → baux (garantie + échéancier) → encaissement (mécanique des deux poches).**

Comptes de démonstration (mot de passe commun : `Demo@2026`) :
- Gérant : `gerant@demo.bj`
- Agent : `agent@demo.bj`
- Super admin éditeur : `admin@demo.bj`

> Changez ces mots de passe après le premier test.

---

## 1. STRUCTURE DES FICHIERS

Deux dispositions possibles selon votre hébergement.

### Disposition A — idéale (code hors racine web)
Si vous pouvez écrire au-dessus de `public_html` :

```
/home/<compte>/
├── app/          ← dossier app/ fourni
├── storage/      ← dossier storage/ fourni (droits d'écriture)
└── public_html/  ← contenu du dossier public_html/ fourni
```

### Disposition B — repli (tout sous public_html)
Si vous n'avez accès qu'à `public_html` :

```
/home/<compte>/public_html/
├── app/          ← avec son .htaccess "Require all denied"
├── storage/      ← avec son .htaccess "Require all denied"
├── index.php
├── .htaccess
└── assets/
```

Dans ce cas, **modifiez les chemins** dans `public_html/index.php` :
remplacez `dirname(__DIR__) . '/app'` par `__DIR__ . '/app'`, et dans
`app/Config/config.php` ajustez `ROOT_PATH` pour pointer vers `public_html`.

---

## 2. CRÉER LA BASE DE DONNÉES (cPanel → MySQL® Databases)

1. **Create New Database** : ex. `moncompte_immo`.
2. **Add New User** : ex. `moncompte_immo` + mot de passe fort.
3. **Add User To Database** → cochez **ALL PRIVILEGES**.
4. Notez : nom de base, utilisateur, mot de passe, et l'hôte (souvent `localhost`).

---

## 3. IMPORTER LE SCHÉMA ET LES DONNÉES (cPanel → phpMyAdmin)

Sélectionnez votre base, onglet **Importer**, puis importez **dans cet ordre exact** :

1. `schema-mvp-gestion-immobiliere.sql`
2. `schema-phase2-gestion-immobiliere.sql`
3. `schema-phase3-gestion-immobiliere.sql`
4. `data-demo.sql` *(données de démonstration — optionnel mais recommandé pour tester)*

> Si une erreur « CHECK constraint » apparaît à l'import sur une vieille version
> de MariaDB, ce n'est pas bloquant : la contrainte est simplement ignorée, et
> le contrôle reste assuré côté application.

---

## 4. CONFIGURER L'APPLICATION

Ouvrez `app/Config/config.php` (Gestionnaire de fichiers → Edit) et renseignez :

```php
define('DB_NAME', 'moncompte_immo');
define('DB_USER', 'moncompte_immo');
define('DB_PASS', 'votre_mot_de_passe');
define('DB_HOST', 'localhost');
```

Laissez `APP_ENV` sur `'production'` (passez à `'dev'` seulement pour diagnostiquer).

---

## 5. DROITS D'ÉCRITURE

Le dossier `storage/` doit être inscriptible (uploads, sauvegardes, logs).
Dans le Gestionnaire de fichiers → clic droit sur `storage` → **Permissions** → `755`
(ou `775` si nécessaire). Vérifiez les sous-dossiers `uploads/`, `documents/`,
`backups/`, `logs/`.

---

## 6. TÂCHES PLANIFIÉES (cPanel → Cron Jobs) — optionnel au départ

Pour automatiser échéances, notifications et sauvegardes, ajoutez par exemple :

```
# Génération des échéances + notifications — chaque jour à 6h
0 6 * * *   php /home/<compte>/app/cli/cron.php quotidien

# Sauvegarde de la base — chaque jour à 1h
0 1 * * *   php /home/<compte>/app/cli/cron.php sauvegarde
```

> Le point d'entrée `app/cli/cron.php` sera ajouté avec le module de tâches
> planifiées. Tant qu'il n'existe pas, ignorez cette étape : l'échéancier se
> régénère aussi « au fil de l'eau » à l'ouverture de l'écran d'encaissement.

---

## 7. TESTER

1. Ouvrez `https://votre-domaine` → vous arrivez sur la vitrine (ou la connexion).
2. Allez sur `https://votre-domaine/connexion`.
3. Connectez-vous : `gerant@demo.bj` / `Demo@2026`.
4. Vous arrivez sur le **tableau de bord**.
5. **Biens** → vous voyez 5 biens de démonstration ; créez-en un nouveau.
6. **Baux** → ouvrez le bail existant (Appartement Fidjrossè) : vous voyez la
   **garantie de 360 000 FCFA** et l'**échéancier** de janvier à juin.
7. Cliquez **Encaisser un paiement** :
   - *Loyer du mois* sur janvier en espèces → le mois passe « Payé ».
   - *Loyer du mois* sur février en **MoMo** → la **référence devient obligatoire**.
   - *Renflouement de la garantie* → la poche 1 augmente.
   - *Prépaiement* → la poche 2 augmente.
8. Revenez sur la fiche du bail : les **deux poches** et l'**échéancier** reflètent
   vos opérations, et le **grand livre de la garantie** trace chaque mouvement.

---

## 8. DÉPANNAGE

| Symptôme | Cause probable | Solution |
|----------|----------------|----------|
| Page blanche | Erreur PHP masquée | Passez `APP_ENV` à `'dev'` temporairement pour voir l'erreur, puis remettez `'production'`. |
| « Erreur de connexion à la base » | Identifiants BDD | Vérifiez `config.php` (nom, user, mot de passe, hôte). |
| 404 sur toutes les pages | Réécriture inactive | Vérifiez la présence du `.htaccess` dans `public_html` et que `mod_rewrite` est actif. |
| 403 / accès refusé aux fichiers | Protection `.htaccess` | Normal pour `app/` et `storage/` : ils ne doivent pas être servis directement. |
| Connexion refusée | Mauvais identifiant | Utilisez l'email **ou** le téléphone du compte démo. |

---

## 9. APRÈS LE TEST — MISE EN PRODUCTION RÉELLE

1. **Supprimez les comptes de démonstration** ou changez leurs mots de passe.
2. Renseignez le **vrai branding** de l'agence (table `branding` ou via le futur
   écran super admin) : nom, logo, couleurs, coordonnées légales (IFU, RCCM).
3. Activez **HTTPS** (certificat SSL cPanel) puis décommentez la redirection
   HTTPS dans `public_html/.htaccess`.
4. Videz les données de démonstration et commencez la saisie réelle (ou utilisez
   l'import Excel/CSV prévu dans les modules à venir).

---

*Ce paquet déploie le MVP du cœur locatif. Les modules suivants (vitrine publique,
documents PDF, portail client, comptabilité, etc.) s'ajouteront sur cette même base.*
