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>
11 KiB
TODO - Évolutions CLEO
Fonctionnalités à développer
Module Devis
6. Modifier un devis archivé
Priorité: Haute
Description: Permettre la modification d'un devis archivé et son renvoi pour traitement sans nécessiter de duplication.
Tâches:
- Ajouter un bouton "Réactiver" sur les devis archivés (statut 20)
- Permettre le changement de statut d'archivé vers "En cours"
- Conserver l'historique de réactivation dans
devis_histo - Adapter les droits selon les rôles (RR, DV, DIR-CO)
8. Dupliquer une ligne produit
Priorité: Moyenne
Description: Permettre la duplication d'une ligne produit dans un même devis (utile pour les gratuités).
Tâches:
- Ajouter un bouton "Dupliquer" sur chaque ligne produit
- Gérer la duplication avec prix à 0 pour les gratuités
- Conserver l'ordre des lignes après duplication
- Mettre à jour automatiquement les totaux
16. Système de recherche avancée
Priorité: Haute
Description: Ajouter une recherche multi-critères pour les devis en cours et archivés.
Tâches:
- Créer une interface de recherche unifiée
- Implémenter la recherche par :
- Numéro de devis
- Nom d'établissement/client
- Référence produit
- Numéro d'opportunité
- Ajouter des filtres par statut (en cours/archivé)
- Paginer les résultats de recherche
- Export des résultats en Excel
19. Gestion des contacts multiples
Priorité: Haute
Description: Permettre la gestion de plusieurs contacts par client.
Tâches:
- Créer une table
clients_contacts - Migration des contacts existants vers la nouvelle structure
- Interface CRUD pour les contacts
- Sélecteur de contact à la création/modification de devis
- Historique des contacts par devis
21. Actualisation tarifaire
Priorité: Moyenne
Description: Permettre l'actualisation des prix selon la dernière grille tarifaire.
Tâches:
- Ajouter un bouton "Actualiser les tarifs"
- Comparer les prix actuels avec la grille en vigueur
- Afficher les différences avant validation
- Recalculer automatiquement les marges
- Tracer l'actualisation dans l'historique
Module SAP
14. Gestion de la prise en charge
Priorité: Haute
Description: Ajouter la traçabilité de la prise en charge et du transfert EDI.
Tâches:
- Ajouter les champs en base de données :
chk_prise_en_charge(boolean)fk_user_prise_en_charge(int)date_prise_en_charge(datetime)fk_user_transfert_edi(int)date_transfert_edi(datetime)erreur_transfert_edi(text)
- Interface de prise en charge avec case à cocher
- Affichage du nom du gestionnaire (ex: "Angela Monteiro")
- Possibilité de décocher en cas d'erreur
- Log des transferts EDI
- Gestion et affichage des erreurs EDI
16. Recherche dans le module SAP
Priorité: Moyenne
Description: Implémenter la recherche dans le module SAP (voir point 16 des Devis).
Tâches:
- Réutiliser le composant de recherche des devis
- Adapter aux spécificités SAP
- Filtres supplémentaires (état EDI, prise en charge)
Migration Infrastructure - Séparation Application/Base de données
✅ PHASE 1 COMPLÉTÉE (12 septembre 2025)
Description: Migration réussie de l'architecture DEV/RECETTE vers la nouvelle structure avec séparation application/base de données.
Architecture actuelle (après migration DEV)
- DEV/RECETTE: Host IN3 ✅
- Container
dva-front(application PHP uniquement) ✅ - Container
maria3(MariaDB dédié avec basecleo) ✅
- Container
- PROD: Host IN2 (actuel, à migrer)
- Container
nx4(application + BDD intégrées) - Bases de données:
uof_frontaletuof_linet
- Container
Architecture cible PROD (à faire)
- PROD: Host IN4 (nouveau)
- Container
pra-front(import depuis IN3.dva-front) - Container
maria4(import depuis IN3.maria3)
- Container
- Décommissionnement: Host IN2 (après migration PROD)
✅ Refactoring de la base de données (COMPLÉTÉ)
Changements réalisés:
- ✅ Suppression de la base
uof_frontal- Configuration externalisée dans
.env - Table
y_pagesmigrée verscleo
- Configuration externalisée dans
- ✅ Fusion
uof_frontal+uof_linet→cleo- Une seule base de données
- Connexion PDO avec pattern Singleton
- ✅ Intégration des logs
- Table
z_logsdans la basecleo - Tables
z_sessionsetz_statscréées
- Table
Plan de migration - État d'avancement
✅ Phase 0 - Refactoring base de données (COMPLÉTÉ - 12/09/2025)
- Script de migration SQL créé
- Table
y_pagesmigrée depuisuof_frontal - Table
z_logscréée danscleo - Base
cleocréée avec toutes les tables - Données migrées de
uof_linetverscleo - Références à
uof_frontalsupprimées - Classe Database PDO créée
- Variables d'environnement
.envimplémentées - Tests validés en DEV
✅ Phase 1 - Environnement DEV IN3 (COMPLÉTÉ - 12/09/2025)
- Container
maria3créé sur IN3 - MariaDB 11.4 installé et configuré
- Base
cleomigrée versmaria3 - Configuration pointant vers
maria3(IP: 13.23.33.4) - Application testée et fonctionnelle
- MariaDB supprimé de
dva-front - Script de déploiement optimisé (
deploy-cleo-fast.sh)
Phase 2 - Préparation PROD IN4 (À FAIRE)
Export depuis IN3:
- Exporter le container
dva-frontdepuis IN3incus export dva-front dva-front-export.tar.gz - Exporter le container
maria3depuis IN3incus export maria3 maria3-export.tar.gz
Import sur IN4:
- Importer
dva-frontcommepra-frontsur IN4incus import dva-front-export.tar.gz pra-front - Importer
maria3commemaria4sur IN4incus import maria3-export.tar.gz maria4 - Configurer les IPs et paramètres réseau sur IN4
- Adapter le fichier
.envpour l'environnement PROD
Phase 3 - Migration des données PROD (À FAIRE)
- Effectuer une sauvegarde complète des bases PROD sur IN2/nx4
- Exporter les données de
uof_frontaletuof_linetdepuis IN2/nx4 - Utiliser le script de migration SQL pour fusionner les données
- Importer les données fusionnées dans
maria4sur IN4 - Configurer
pra-frontpour pointer versmaria4 - Tests de validation en pré-production
Phase 4 - Bascule PROD (À FAIRE)
- Planifier la fenêtre de maintenance
- Arrêter l'application sur IN2
- Synchronisation finale des données vers IN4/maria4
- Basculer le DNS/proxy vers IN4
- Valider le fonctionnement en production
- Monitoring post-migration (48h)
- Décommissionner IN2 après période de stabilisation
Configuration technique
Variables d'environnement
DEV (IN3) - Actuel:
DB_HOST=13.23.33.4 # IP de maria3
DB_PORT=3306
DB_DATABASE=cleo
DB_USERNAME=cleo_user
DB_PASSWORD=CleoDev2025!
PROD (IN4) - À configurer:
DB_HOST=<IP_maria4> # À définir sur IN4
DB_PORT=3306
DB_DATABASE=cleo
DB_USERNAME=cleo_user
DB_PASSWORD=<PROD_PASSWORD> # À sécuriser
Sécurité réseau
- ✅ Connexions uniquement depuis les containers applicatifs
- ✅ Pas d'exposition directe des ports MariaDB
- Firewall entre containers à configurer sur IN4
Backup et restauration
- Scripts de backup automatisés à mettre en place
- Réplication master-slave pour haute disponibilité (optionnel)
Améliorations techniques prioritaires
Sécurité
- ✅ Migrer les credentials DB vers des variables d'environnement
- ✅ Classe Database avec requêtes préparées PDO
- Audit complet des contrôleurs pour injections SQL résiduelles
- Correction des failles XSS potentielles
Performance
- Implémenter la pagination côté serveur pour toutes les listes
- Ajouter des index sur les colonnes fréquemment recherchées
- Mettre en cache les requêtes récurrentes
Qualité du code
- Ajouter la documentation PHPDoc sur les fonctions principales
- Créer des tests unitaires pour les fonctions critiques
- Standardiser la gestion des erreurs
Planning prévisionnel
Sprint 1 (2 semaines) - Sécurité
- Correction des vulnérabilités critiques
- Migration des configurations sensibles
Sprint 2 (3 semaines) - Fonctionnalités prioritaires
- Point 6 : Modification devis archivés
- Point 14 : Prise en charge SAP
- Point 16 : Recherche avancée
Sprint 3 (3 semaines) - Gestion des contacts
- Point 19 : Contacts multiples
- Migration des données existantes
Sprint 4 (2 semaines) - Améliorations
- Point 8 : Duplication lignes produits
- Point 21 : Actualisation tarifaire
Sprint 5 (2 semaines) - Optimisations
- Performances et pagination
- Tests et documentation
Notes de développement
Structure de la table clients_contacts (à créer)
CREATE TABLE clients_contacts (
rowid INT PRIMARY KEY AUTO_INCREMENT,
fk_client INT NOT NULL,
nom VARCHAR(100),
prenom VARCHAR(100),
fonction VARCHAR(100),
telephone VARCHAR(20),
mobile VARCHAR(20),
email VARCHAR(255),
principal TINYINT DEFAULT 0,
active TINYINT DEFAULT 1,
date_creat DATETIME,
fk_user_creat INT,
date_modif DATETIME,
fk_user_modif INT,
FOREIGN KEY (fk_client) REFERENCES clients(rowid)
);
Modifications table devis pour SAP
ALTER TABLE devis ADD COLUMN chk_prise_en_charge TINYINT DEFAULT 0;
ALTER TABLE devis ADD COLUMN fk_user_prise_en_charge INT;
ALTER TABLE devis ADD COLUMN date_prise_en_charge DATETIME;
ALTER TABLE devis ADD COLUMN fk_user_transfert_edi INT;
ALTER TABLE devis ADD COLUMN date_transfert_edi DATETIME;
ALTER TABLE devis ADD COLUMN erreur_transfert_edi TEXT;
Résumé de l'état actuel
✅ Réalisations (v2.0.1 - 12 septembre 2025)
- Migration DEV complétée : Architecture séparée application/BDD
- Base unique
cleo: Fusion réussie de 3 bases en une seule - Sécurité renforcée : PDO, requêtes préparées, variables d'environnement
- Container
dva-front: MariaDB supprimé, application PHP uniquement - Container
maria3: Base de données centralisée opérationnelle
🎯 Prochaines étapes prioritaires
- Migration PROD vers IN4 : Export/Import des containers vers
pra-frontetmaria4 - Fonctionnalités métier : Points 6, 14, 16 (voir sections ci-dessus)
- Sécurité : Audit des contrôleurs pour injections SQL résiduelles
Document mis à jour le 12 septembre 2025
Version 2.0.1 - Post-migration DEV