Files
Cleo/docs/TODO.md
Pierre 443b0509df feat(v2.0.2): Corrections de sécurité critiques et fonctionnalité de réactivation des devis
- 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
2025-09-12 20:25:48 +02:00

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 base cleo)
  • PROD: Host IN2 (actuel, à migrer)
    • Container nx4 (application + BDD intégrées)
    • Bases de données: uof_frontal et uof_linet

Architecture cible PROD (à faire)

  • PROD: Host IN4 (nouveau)
    • Container pra-front (import depuis IN3.dva-front)
    • Container maria4 (import depuis IN3.maria3)
  • Décommissionnement: Host IN2 (après migration PROD)

Refactoring de la base de données (COMPLÉTÉ)

Changements réalisés:

  1. Suppression de la base uof_frontal
    • Configuration externalisée dans .env
    • Table y_pages migrée vers cleo
  2. Fusion uof_frontal + uof_linetcleo
    • Une seule base de données
    • Connexion PDO avec pattern Singleton
  3. Intégration des logs
    • Table z_logs dans la base cleo
    • Tables z_sessions et z_stats créées

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_pages migrée depuis uof_frontal
  • Table z_logs créée dans cleo
  • Base cleo créée avec toutes les tables
  • Données migrées de uof_linet vers cleo
  • Références à uof_frontal supprimées
  • Classe Database PDO créée
  • Variables d'environnement .env implémentées
  • Tests validés en DEV

Phase 1 - Environnement DEV IN3 (COMPLÉTÉ - 12/09/2025)

  • Container maria3 créé sur IN3
  • MariaDB 11.4 installé et configuré
  • Base cleo migrée vers maria3
  • 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-front depuis IN3
    incus export dva-front dva-front-export.tar.gz
    
  • Exporter le container maria3 depuis IN3
    incus export maria3 maria3-export.tar.gz
    

Import sur IN4:

  • Importer dva-front comme pra-front sur IN4
    incus import dva-front-export.tar.gz pra-front
    
  • Importer maria3 comme maria4 sur IN4
    incus import maria3-export.tar.gz maria4
    
  • Configurer les IPs et paramètres réseau sur IN4
  • Adapter le fichier .env pour 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_frontal et uof_linet depuis IN2/nx4
  • Utiliser le script de migration SQL pour fusionner les données
  • Importer les données fusionnées dans maria4 sur IN4
  • Configurer pra-front pour pointer vers maria4
  • 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)

  1. Migration DEV complétée : Architecture séparée application/BDD
  2. Base unique cleo : Fusion réussie de 3 bases en une seule
  3. Sécurité renforcée : PDO, requêtes préparées, variables d'environnement
  4. Container dva-front : MariaDB supprimé, application PHP uniquement
  5. Container maria3 : Base de données centralisée opérationnelle
  6. 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)
  7. Fonctionnalité Réactivation devis : Bouton permettant de réactiver les devis archivés (statut 20 → 1)

🎯 Prochaines étapes prioritaires

  1. Migration PROD vers IN4 : Export/Import des containers vers pra-front et maria4
  2. Fonctionnalités métier : Points 14, 16 (voir sections ci-dessus)
  3. Sécurité XSS : Audit et correction des failles XSS potentielles
  4. 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