CHANGEMENTS MAJEURS: - Fusion des 3 bases de données (uof_frontal, uof_linet, logs) en une seule base 'cleo' - Migration vers PDO avec pattern Singleton et requêtes préparées - Configuration externalisée via variables d'environnement (.env) - Séparation application (dva-front) et base de données (maria3) SÉCURITÉ: - Suppression des credentials en dur dans le code - Implémentation de la classe Database avec gestion d'erreurs sécurisée - Protection contre les injections SQL via requêtes préparées INFRASTRUCTURE: - Container dva-front : MariaDB supprimé, application PHP uniquement - Container maria3 : Base de données centralisée MariaDB 11.4 - Script de déploiement optimisé (deploy-cleo-fast.sh) CORRECTIONS: - Ajout des tables manquantes (z_sessions, z_stats, marches_listes) - Compatibilité PDO (fetch_assoc → fetch(PDO::FETCH_ASSOC)) - Suppression des commentaires debug dans les réponses AJAX - Permissions fichiers (.env 644, logs 777 avec owner nobody) DOCUMENTATION: - Mise à jour README.md avec architecture actuelle - Migration README.md marqué comme complété - TODO.md avec état d'avancement et prochaines étapes (PROD IN4) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
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 basecleo - ✅ 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
maria3accessible 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
# 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 :
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
# 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 :
# 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 :
# 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_frontaletuof_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
-- 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é
- Requêtes préparées PDO : Protection contre les injections SQL
- Variables d'environnement : Credentials hors du code
- Connexion unique : Pattern Singleton pour la DB
- 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_frontaletuof_linetverscleo - ✅ 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
# 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
# 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
# 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 :
- Consulter les logs dans
/log/ - Vérifier le fichier
.env - Utiliser le rollback si nécessaire
- 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
- Tables manquantes : Création de
z_sessions,z_stats,marches_listes - Permissions fichiers :
.enven 644, logs en 777 avec ownernobody - Compatibilité PDO : Remplacement de
fetch_assoc()parfetch(PDO::FETCH_ASSOC) - Debug AJAX : Suppression des commentaires HTML dans les réponses JSON
- Fonctions manquantes : Ajout de
checkPsswd(),affiche_date(), etc.
Scripts de déploiement
# 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