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>
This commit is contained in:
243
migration/README.md
Normal file
243
migration/README.md
Normal file
@@ -0,0 +1,243 @@
|
||||
# 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*
|
||||
Reference in New Issue
Block a user