- Correction de 14 vulnérabilités SQL (8 critiques, 6 moyennes) - Suppression de la fonction autocomplete non utilisée - Migration complète vers PDO avec requêtes préparées - Ajout du bouton 'Réactiver' pour les devis archivés (statut 20 → 1) - Conversion des appels $.ajax en fetch API (vanilla JS) - Correction des erreurs JavaScript empêchant l'attachement d'événements - Mise à jour de la documentation (README.md et TODO.md) Sécurité: Utilisation systématique de intval() et requêtes préparées PDO UI: Nouveau bouton vert dans la grille 2x2 des actions sur devis archivés Historique: Traçabilité dans devis_histo lors de la réactivation
12 KiB
TODO - Évolutions CLEO
Fonctionnalités à développer
Module Devis
6. ✅ Modifier un devis archivé (TERMINÉ - 12/09/2025)
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 et correction de toutes les injections SQL (14 vulnérabilités corrigées)
- Correction des failles XSS potentielles
- Implémentation des tokens CSRF
- Tests de sécurité automatisés
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.2 - 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 - Audit de sécurité complété : 14 vulnérabilités SQL identifiées et corrigées
- 8 critiques (fonction autocomplete, injections dans cjxpost.php, mclients.php, mdevis.php)
- 6 moyennes (cjxdevis.php, cjxexport.php, cjximport.php, mexpxls.php)
- Fonctionnalité Réactivation devis : Bouton permettant de réactiver les devis archivés (statut 20 → 1)
🎯 Prochaines étapes prioritaires
- Migration PROD vers IN4 : Export/Import des containers vers
pra-frontetmaria4 - Fonctionnalités métier : Points 14, 16 (voir sections ci-dessus)
- Sécurité XSS : Audit et correction des failles XSS potentielles
- Tests : Mise en place de tests automatisés de sécurité
Document mis à jour le 12 septembre 2025
Version 2.0.2 - Sécurité SQL complète