# Migration CLEO vers la nouvelle architecture ## ✅ MIGRATION COMPLÉTÉE (12 septembre 2025) ## Vue d'ensemble Cette migration a transformé l'architecture de CLEO pour : - ✅ **Fusionner 3 bases de données** (`uof_frontal`, `uof_linet`, `logs`) en une seule base `cleo` - ✅ **Sécuriser les connexions** avec PDO et requêtes préparées - ✅ **Externaliser la configuration** dans des variables d'environnement - ✅ **Séparer** application (dva-front) et base de données (maria3) ## Pré-requis - PHP 8.3+ - MariaDB/MySQL 5.7+ - Accès aux bases existantes (`uof_frontal`, `uof_linet`) - Container `maria3` accessible depuis l'application ## Structure de la migration ``` migration/ ├── migrate_to_cleo.sql # Script SQL de migration des données ├── deploy_new_architecture.sh # Script de déploiement automatique ├── rollback.sh # Script de retour arrière └── README.md # Ce fichier ``` ## Étapes de migration ### 1. Préparation ```bash # Se placer à la racine du projet cd /home/pierre/dev/cleo # Vérifier le fichier .env cp .env.example .env nano .env # Éditer avec vos paramètres ``` Configuration actuelle dans `.env` : ```env DB_HOST=13.23.33.4 # IP du container maria3 DB_PORT=3306 DB_DATABASE=cleo DB_USERNAME=cleo_user DB_PASSWORD=CleoDev2025! # À changer en production ``` ### 2. Exécution de la migration ```bash # Rendre les scripts exécutables chmod +x migration/*.sh # Lancer la migration ./migration/deploy_new_architecture.sh ``` Le script effectue automatiquement : - ✅ Sauvegarde des fichiers actuels - ✅ Test de connexion à MariaDB - ✅ Migration des bases de données - ✅ Activation des nouveaux fichiers - ✅ Tests de validation ### 3. Vérification Après la migration, vérifier : ```bash # Connexion à la base mysql -h maria3 -u cleo_user -p cleo # Vérifier les tables SHOW TABLES; # Compter les enregistrements SELECT 'devis' as table_name, COUNT(*) FROM devis UNION ALL SELECT 'clients', COUNT(*) FROM clients UNION ALL SELECT 'users', COUNT(*) FROM users; ``` Tester l'application : - Connexion utilisateur - Consultation des devis - Création d'un nouveau devis - Export Excel ### 4. En cas de problème Si la migration échoue ou cause des problèmes : ```bash # Revenir à l'ancienne architecture ./migration/rollback.sh ``` Le rollback : - Restaure les fichiers originaux - Conserve les nouveaux fichiers dans `migration/new_architecture_backup/` - L'application revient sur les bases `uof_frontal` et `uof_linet` ## Changements techniques ### Fichiers modifiés | Fichier | Changement | |---------|------------| | `config/conf.php` | Utilise les variables d'environnement | | `config/Database.php` | Nouvelle classe PDO singleton | | `pub/res/d6/d6_tools.php` | Utilise la classe Database | | `.env` | Configuration externalisée | ### Structure de la base `cleo` ```sql -- Tables métier (ex-uof_linet) devis devis_produits devis_histo clients produits produits_familles marches users x_familles x_statuts_devis x_clients_types -- Tables système y_pages (ex-uof_frontal) users_entites (ex-uof_frontal) z_logs (ex-base logs ou nouvelle) ``` ### Améliorations de sécurité 1. **Requêtes préparées PDO** : Protection contre les injections SQL 2. **Variables d'environnement** : Credentials hors du code 3. **Connexion unique** : Pattern Singleton pour la DB 4. **Logging amélioré** : Traçabilité des requêtes SQL ## Environnements ### DEV/RECETTE (IN3) - ACTIF ``` Container: dva-front (13.23.33.42) ├── Application PHP 8.3 ├── Nginx (Alpine Linux) ├── MariaDB : SUPPRIMÉ (12/09/2025) └── Connexion vers maria3 Container: maria3 (13.23.33.4) ├── MariaDB 11.4 ├── Base de données : cleo ├── Tables migrées : 30+ └── Utilisateur : cleo_user ``` **Actions réalisées :** - ✅ Migration des bases `uof_frontal` et `uof_linet` vers `cleo` - ✅ Création des tables manquantes (`z_sessions`, `z_stats`, `marches_listes`) - ✅ Configuration PDO avec pattern Singleton - ✅ Suppression complète de MariaDB sur dva-front - ✅ Script de déploiement optimisé (`deploy-cleo-fast.sh`) ### PROD (IN4 - futur) ``` Container: nx4 → Application PHP Container: maria4 → Base de données cleo ``` ## Troubleshooting ### Erreur de connexion à la base ```bash # Vérifier la connectivité mysql -h maria3 -u cleo_user -p # Vérifier les permissions SHOW GRANTS FOR 'cleo_user'@'%'; ``` ### Erreur PHP après migration ```bash # Vérifier les logs tail -f log/cleo_debug_*.log # Vérifier les permissions des fichiers ls -la config/conf.php ls -la .env ``` ### Tables manquantes ```bash # Réexécuter uniquement la migration SQL mysql -h maria3 -u cleo_user -p cleo < migration/migrate_to_cleo.sql ``` ## Support Pour toute question ou problème : 1. Consulter les logs dans `/log/` 2. Vérifier le fichier `.env` 3. Utiliser le rollback si nécessaire 4. Documenter l'erreur dans un issue GitHub ## État post-migration ### Fichiers créés/modifiés - ✅ `.env` : Configuration externalisée - ✅ `config/Database.php` : Classe PDO singleton - ✅ `config/conf.php` : Utilise les variables d'environnement - ✅ `pub/res/d6/d6_tools.php` : Fonctions utilitaires mises à jour - ✅ `deploy-cleo-fast.sh` : Script de déploiement optimisé (tar.gz) ### Problèmes résolus durant la migration 1. **Tables manquantes** : Création de `z_sessions`, `z_stats`, `marches_listes` 2. **Permissions fichiers** : `.env` en 644, logs en 777 avec owner `nobody` 3. **Compatibilité PDO** : Remplacement de `fetch_assoc()` par `fetch(PDO::FETCH_ASSOC)` 4. **Debug AJAX** : Suppression des commentaires HTML dans les réponses JSON 5. **Fonctions manquantes** : Ajout de `checkPsswd()`, `affiche_date()`, etc. ### Scripts de déploiement ```bash # Déploiement rapide (30 secondes) ./deploy-cleo-fast.sh # Déploiement dev (si besoin) ./deploy-cleo-dev.sh ``` --- *Migration complétée pour CLEO v2.0.1 - 12 septembre 2025*