Files
Cleo/migration
Pierre 77e7cf5d85 feat: Migration complète vers architecture v2.0.1
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>
2025-09-12 15:45:52 +02:00
..

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

# 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_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

-- 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

# 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 :

  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

# 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