Pierre 77e7cf5d85 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>
2025-09-12 15:45:52 +02:00

CLEO - Application de gestion de devis

Vue d'ensemble

CLEO est une application web de gestion de devis développée en PHP 8.3 pour les PME. Elle utilise une architecture MVC classique avec un framework maison appelé "d6".

Version actuelle : 2.0.1 (migration complétée le 12 septembre 2025)

Architecture technique

Stack technologique

  • Langage : PHP 8.3
  • Architecture : MVC (Model-View-Controller)
  • Framework : Framework maison "d6"
  • Base de données : MariaDB 11.4
  • Connexion DB : PDO avec requêtes préparées
  • Configuration : Variables d'environnement (.env)
  • Gestion des dépendances : Composer
  • Bibliothèques principales :
    • PHPMailer 6.8 (envoi d'emails)
    • PHPSpreadsheet 1.28 (export/import Excel)
    • phpseclib 3.0 (fonctions de sécurité)

Structure des dossiers

cleo/
├── config/           # Configuration de l'application
│   ├── conf.php     # Configuration principale (DB, paths, etc.)
│   └── init.php     # Initialisation et définition des constantes
├── controllers/      # Contrôleurs MVC
│   ├── cjx*.php    # Contrôleurs AJAX
│   └── c*.php      # Contrôleurs standards
├── models/          # Modèles de données
├── views/           # Vues et templates
│   └── layouts/     # Layouts réutilisables
├── pub/             # Ressources publiques
│   └── res/
│       └── d6/      # Framework d6
├── vendor/          # Dépendances Composer
└── index.php        # Point d'entrée principal

Fonctionnalités métier

Modules principaux

  1. Gestion des devis (cdevis.php, mdevis.php, vdevis.php)

    • Création, modification, duplication de devis
    • Workflow de validation multi-niveaux
    • Historisation des modifications
    • Calcul automatique des marges
    • Gestion des remises par paliers de quantité
  2. Gestion des clients (cclients.php)

    • Base clients avec contacts
    • Segmentation par secteur géographique
    • Types de clients paramétrables
    • Import/export de données
  3. Gestion des marchés (cmarches.php)

    • Catalogue de marchés
    • Association aux devis
    • Visibilité paramétrable par rôle
  4. Administration (cusers.php, csap.php)

    • Gestion des utilisateurs
    • Système de rôles et permissions
    • Interface d'administration

Système de rôles

  • DIR-CO (Direction commerciale) : Accès complet, vision globale
  • DV (Directeur des ventes) : Gestion de son équipe de RR
  • RR (Responsable régional) : Gestion de ses propres devis
  • Admin (rôle 90) : Administration système

Base de données

Architecture actuelle

  • Base unique : cleo sur le container maria3
  • Connexion : PDO avec pattern Singleton
  • Sécurité : Requêtes préparées systématiques

Tables principales

  • devis : Table principale des devis
  • devis_produits : Lignes de produits des devis
  • devis_histo : Historique des modifications
  • clients : Base clients
  • produits : Catalogue produits
  • produits_familles : Familles de produits avec marges
  • marches : Référentiel des marchés
  • users : Utilisateurs et hiérarchie
  • x_* : Tables de référence (statuts, types, etc.)
  • y_pages : Configuration des pages/routes

Points de sécurité

Vulnérabilités corrigées (v2.0.1)

1. Stockage des mots de passe

  • Credentials externalisés dans .env
  • Variables d'environnement utilisées systématiquement

2. Protection contre les injections SQL

  • Migration complète vers PDO
  • Requêtes préparées dans la classe Database
  • Pattern Singleton pour la connexion

3. Gestion des erreurs sécurisée

  • Classe Database avec gestion d'erreurs centralisée
  • Logging contrôlé par variables d'environnement
  • Mode debug désactivable en production

Vulnérabilités restantes à traiter

1. Injections SQL résiduelles

  • Localisation : Certains contrôleurs (controllers/cjx*.php)
  • Problème : Concaténations directes dans certaines requêtes complexes
  • Recommandation : Audit complet et migration progressive

2. Configuration IP en dur

  • Localisation : config/conf.php
  • Problème : Certaines IPs encore hardcodées
  • Recommandation : Migration complète vers .env

Points positifs de sécurité

  • Utilisation de password_hash() avec bcrypt pour les mots de passe utilisateurs
  • Fonction nettoie_input() pour la sanitisation des entrées
  • Gestion des sessions PHP native
  • Contrôle d'accès basé sur les rôles

Performances et optimisations

Points d'attention

  1. Requêtes non optimisées : Pas de pagination visible dans les listes
  2. Absence de cache : Requêtes répétitives non mises en cache
  3. Chargement des données : Chargement complet des listes sans limite

Recommandations

  • Implémenter une pagination côté serveur
  • Ajouter un système de cache (Redis/Memcached)
  • Optimiser les requêtes avec des index appropriés
  • Utiliser le lazy loading pour les données volumineuses

Qualité du code

Points forts

  • Structure MVC claire et cohérente
  • Séparation des responsabilités respectée
  • Nommage cohérent des fichiers et fonctions
  • Utilisation de Composer pour les dépendances

Axes d'amélioration

  1. Standards PHP modernes

    • Absence de namespaces
    • Pas d'autoloading PSR-4
    • Manque de typage strict PHP 8.3
  2. Documentation

    • Peu de commentaires PHPDoc
    • Absence de documentation API
    • Pas de README technique
  3. Tests

    • Aucun test unitaire visible
    • Pas de tests d'intégration
    • Absence de CI/CD
  4. Gestion des erreurs

    • Try/catch non systématiques
    • Logging basique via eLog()
    • Pas de monitoring applicatif

Plan d'amélioration recommandé

Court terme (Sécurité - En cours)

  1. Migrer les credentials vers des variables d'environnement
  2. Remplacer les requêtes SQL par des requêtes préparées (classe Database)
  3. Implémenter une gestion d'erreurs sécurisée
  4. Auditer et corriger les failles XSS potentielles

Moyen terme (Qualité et maintenabilité)

  1. Migrer vers une structure PSR-4 avec namespaces
  2. Implémenter des tests unitaires (PHPUnit)
  3. Ajouter une documentation PHPDoc complète
  4. Mettre en place un système de logging structuré (Monolog)

Long terme (Evolution et performance)

  1. Considérer la migration vers un framework moderne (Symfony/Laravel)
  2. Implémenter une API REST pour découpler front/back
  3. Ajouter un système de cache performant
  4. Mettre en place un pipeline CI/CD

Architecture de déploiement

Environnement DEV (Actuel - IN3)

  • Container dva-front : Application PHP 8.3 + Nginx (Alpine Linux)
    • IP : 13.23.33.42
    • MariaDB : Supprimé (12/09/2025)
  • Container maria3 : Base de données MariaDB 11.4
    • IP : 13.23.33.4
    • Base : cleo

Environnement PROD (Futur - IN4)

  • Container nx4 : Application PHP
  • Container maria4 : Base de données

Conclusion

CLEO v2.0.1 représente une évolution majeure avec la migration réussie vers une architecture sécurisée :

  • Base de données unique et centralisée
  • Connexions PDO avec requêtes préparées
  • Configuration externalisée
  • Séparation application/base de données

Les priorités de sécurité critiques ont été adressées. L'application peut maintenant évoluer sereinement vers des standards plus modernes tout en maintenant sa stabilité opérationnelle.


Document mis à jour le 12 septembre 2025 Version 2.0.1 - Post-migration

Description
Application PHP de gestion des devis
Readme 491 MiB
Languages
JavaScript 54%
PHP 26.3%
HTML 4.8%
SCSS 4.5%
Less 4.5%
Other 5.9%