# 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 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_linet` → `cleo`** - 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) - [x] Script de migration SQL créé - [x] Table `y_pages` migrée depuis `uof_frontal` - [x] Table `z_logs` créée dans `cleo` - [x] Base `cleo` créée avec toutes les tables - [x] Données migrées de `uof_linet` vers `cleo` - [x] Références à `uof_frontal` supprimées - [x] Classe Database PDO créée - [x] Variables d'environnement `.env` implémentées - [x] Tests validés en DEV #### ✅ Phase 1 - Environnement DEV IN3 (COMPLÉTÉ - 12/09/2025) - [x] Container `maria3` créé sur IN3 - [x] MariaDB 11.4 installé et configuré - [x] Base `cleo` migrée vers `maria3` - [x] Configuration pointant vers `maria3` (IP: 13.23.33.4) - [x] Application testée et fonctionnelle - [x] MariaDB supprimé de `dva-front` - [x] 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 ```bash incus export dva-front dva-front-export.tar.gz ``` - [ ] Exporter le container `maria3` depuis IN3 ```bash incus export maria3 maria3-export.tar.gz ``` **Import sur IN4:** - [ ] Importer `dva-front` comme `pra-front` sur IN4 ```bash incus import dva-front-export.tar.gz pra-front ``` - [ ] Importer `maria3` comme `maria4` sur IN4 ```bash 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:** ```env 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:** ```env DB_HOST= # À définir sur IN4 DB_PORT=3306 DB_DATABASE=cleo DB_USERNAME=cleo_user DB_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é - [x] ✅ Migrer les credentials DB vers des variables d'environnement - [x] ✅ 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) ```sql 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 ```sql 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) 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 ### 🎯 Prochaines étapes prioritaires 1. **Migration PROD vers IN4** : Export/Import des containers vers `pra-front` et `maria4` 2. **Fonctionnalités métier** : Points 6, 14, 16 (voir sections ci-dessus) 3. **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*