Journal des modifications

Historique des changements et mises à jour de l'application

[1.4.0] - 2026-02-27

En développement

Nouvelle Application : Gestion des Congés

  • Module Leave : Système complet de gestion des congés
    • Création de calendriers de congés (rôle "Accueil")
    • Vue calendrier interactive avec FullCalendar
    • Poser des congés par journée entière, matin ou après-midi
    • Page "Mes Congés" avec interface en cartes modernes
    • Sélection multiple pour suppression en masse
    • Export Excel des congés
    • Gestion des jours fériés français (calcul automatique)
    • Historique des modifications des demandes
  • Interface utilisateur : UX moderne et intuitive
    • Sélecteur de dates multi-sélection avec FullCalendar
    • Cartes visuelles avec indicateurs de période (journée/matin/après-midi)
    • Modales de confirmation pour les suppressions
    • Barre d'actions flottante pour les suppressions multiples
    • Tableau récapitulatif en lecture seule
  • Permissions : Contrôle d'accès granulaire
    • Rôle "Accueil" : création/modification/suppression des calendriers
    • Tous les utilisateurs : poser/modifier/supprimer leurs propres congés
    • Menu "Congés" visible uniquement quand un calendrier est actif (sauf Accueil)
  • Modèles de données : Architecture robuste
    • LeaveCalendar : calendriers avec période de visibilité
    • LeaveRequest : demandes de congés avec période (full/morning/afternoon)
    • LeaveHistory : audit trail des modifications
    • FrenchHoliday : jours fériés avec calcul automatique

Refactoring Architecture (SOLID - SRP)

  • Events Forms : Restructuration modulaire selon le principe SRP
    • Division de events/forms.py (520 lignes) en package modulaire
    • Création de fichiers spécialisés : event.py, media.py, settings.py, comment.py, recurrence.py
    • Chaque fichier a une responsabilité unique et bien définie
    • Compatibilité rétrograde préservée via __init__.py
    • Ajout d'un warning de dépréciation sur l'ancien module monolithique
    • Correction d'un test utilisant un mauvais chemin de patch
  • Accounts Notifications : Refactoring du service de notification
    • Extraction de accounts/services.py (345 lignes) en package spécialisé
    • Création de NotificationServiceBase avec les méthodes fondamentales
    • Création de EventNotificationService pour les notifications événements
    • Création de VideoNotificationService pour les notifications vidéo
    • Séparation claire des responsabilités par domaine métier
  • Feedback Views : Extraction de la logique de notification
    • Création de FeedbackNotificationService pour centraliser la logique
    • Extraction des mixins dans feedback/mixins.py
    • Simplification des vues en déléguant aux services
    • Meilleure séparation des responsabilités (vues vs logique métier)

Qualité du code

  • Amélioration de la maintenabilité : fichiers plus petits et focalisés
  • Meilleure testabilité : chaque module peut être testé indépendamment
  • Respect du principe SRP (Single Responsibility Principle)
  • Documentation améliorée avec docstrings spécifiques par module

Tests

  • Tous les tests existants passent (118/118)
  • Aucune régression détectée sur events (60 tests) et accounts (58 tests)
  • Validation via python manage.py check
  • Compatibilité rétrograde complète préservée

Corrections

  • Configuration pyproject.toml : Correction de l'erreur de syntaxe
    • Suppression de la section [project] qui causait une erreur de parsing avec flake8
    • Déplacement de la configuration flake8 vers un fichier .flake8 dédié
    • Les outils de linting (Black, isort, flake8, bandit) fonctionnent maintenant correctement
  • Séparation JavaScript/HTML : Extraction de la configuration Tailwind
    • Création du fichier static/js/tailwind-config.js pour la configuration Tailwind
    • Suppression du JavaScript inline de templates/base.html
    • Conformité avec le workflow django-javascript-separation.md (ZERO JS inline)
  • Template Event Detail : Réorganisation de la disposition des blocs
    • Déplacement du bloc "Actions" dans la sidebar droite sous "Informations"
    • Déplacement du bloc "Validation Communication" dans la sidebar droite sous "Actions"
    • Amélioration de l'UX en regroupant les actions dans la colonne de droite
    • Conservation de tous les styles et fonctionnalités existants
  • Menu utilisateur : Réorganisation complète du dropdown
    • Ajout d'un header utilisateur avec avatar, nom et email
    • Organisation en sections claires : "Mon compte", "Paramètres", "Administration"
    • Suppression de l'accordion dans le menu pour une navigation plus directe
    • Ajout d'icônes cohérentes pour chaque option
    • Amélioration visuelle avec dégradé et ombres

[1.3.2] - 2026-02-26

En production

Tests

  • Events : Ajout et mise à jour des tests
    • Tests des formulaires avec validation renforcée
    • Tests des modèles avec nouvelles contraintes
    • Tests de sécurité complémentaires
    • Tests des demandes de tournage vidéo avec scénarios edge cases
  • Feedback : Couverture de tests complète
    • Tests des formulaires de création et mise à jour de tickets
    • Tests des modèles avec validation des statuts et priorités
    • Tests des vues avec permissions et workflows

Fonctionnalités

  • Events : Améliorations du système de gestion d'événements
    • Nouvelle commande de création d'événements de test
    • Amélioration de la commande seed_events avec données plus réalistes
    • Optimisation de l'admin avec filtres et recherche avancés
    • Refonte du template event_list avec interface responsive
  • Pointage : Mise à jour des URLs
    • Refactoring des patterns d'URL pour meilleure cohérence

Améliorations Interface

  • CSS Timeline : Nouveau composant timeline
    • Styles dédiés pour l'affichage chronologique des événements
    • Animations et transitions fluides
  • CSS Event List : Optimisation de la liste des événements
    • Amélioration du responsive design
    • Nouveaux styles pour les filtres et la pagination
  • JavaScript Event List : Interactivité améliorée
    • Filtres dynamiques sans rechargement de page
    • Gestion améliorée de la pagination AJAX
    • Animations de transition pour les mises à jour

Corrections

  • Events Forms : Validation et UX
    • Correction des validateurs de dates
    • Amélioration des messages d'erreur
  • Feedback Views : Gestion des tickets
    • Correction du workflow de changement de statut
    • Amélioration de la gestion des permissions
  • Events Views : Corrections diverses
    • Optimisation des requêtes dans les vues de validation
    • Correction de l'export vidéo
    • Amélioration de la gestion des erreurs

[1.3.1] - 2026-02-25

En production

Qualité du code

  • Configuration Pre-commit : Mise en place complète des hooks de qualité
    • Création du fichier pyproject.toml avec configuration Black, isort, Flake8 et Bandit
    • Optimisation du fichier .pre-commit-config.yaml pour éviter les timeouts
    • Configuration des hooks essentiels : trailing-whitespace, end-of-file-fixer, check-yaml, check-json
    • Intégration de Black pour le formatage automatique du code Python
    • Configuration d'isort pour l'organisation des imports
    • Mise en place de Flake8 pour le linting avec plugins docstrings et bugbear
    • Configuration de Bandit pour l'analyse de sécurité statique
  • Correction du style dans accounts/ : Formatage et documentation
    • Formatage complet avec Black (line-length: 88) des fichiers models.py, views.py, forms.py, urls.py, services.py
    • Organisation des imports avec isort selon le profil Black
    • Ajout des docstrings manquantes dans les classes Meta et méthodes
    • Correction des lignes trop longues (>88 caractères)
    • Suppression des imports inutilisés dans services.py
    • Correction des docstrings pour respecter le style impératif (D401)

Sécurité

  • Analyse statique avec Bandit : Vérification automatique des vulnérabilités
    • Configuration dans pyproject.toml avec exclusions appropriées (tests, migrations)
    • Skip des checks B101 (assert) et B311 (random) pour les cas non cryptographiques
    • Aucune vulnérabilité détectée dans le code accounts/ (1738 lignes analysées)
  • Détection de secrets : Intégration de Gitleaks
    • Hook Gitleaks activé pour la détection des secrets dans le code
    • Mode protect avec redaction pour la sécurité

Maintenance

  • Optimisation des hooks pre-commit pour éviter les timeouts
  • Désactivation temporaire de detect-secrets (problèmes de compatibilité avec .secrets.baseline)
  • Hooks lents (Semgrep, Django check) commentés pour exécution manuelle
  • Configuration fail_fast: false pour exécuter tous les hooks même si un échoue

[1.3.0] - 2026-02-25

En production

Nouvelles fonctionnalités

  • Application Feedback : Système complet de gestion des tickets de support
    • Création de tickets avec type (Bug, Amélioration, Question) et priorité (Faible à Critique)
    • Upload de captures d'écran (JPG/PNG, max 2MB)
    • Système de commentaires avec distinction "Réponse du support"
    • Notifications email et in-app pour le support
    • Bouton flottant accessible sur toutes les pages pour créer rapidement un ticket
    • Interface d'administration dédiée pour le rôle "Support"
    • Configuration des destinataires d'emails (superadmin)
    • Workflow de statuts : Nouveau → En cours → Résolu/Fermé

Tests

  • Implémentation complète en TDD (Test Driven Development)
  • 61 tests unitaires et d'intégration (100% pass)
  • Tests des modèles, formulaires et vues
  • Tests de permissions (propriétaire vs support)
  • Tests d'envoi d'emails et de notifications

Améliorations Interface

  • Navigation : Ajout des liens Feedback
    • Lien "Support" dans le header pour les utilisateurs avec le rôle Support
    • Lien "Mes tickets" dans le footer pour tous les utilisateurs connectés
    • Lien "Mes tickets" dans le menu utilisateur (desktop et mobile)
  • Design TailwindCSS : Templates responsive et cohérents
    • Liste des tickets avec filtres et pagination
    • Formulaire de création avec drag-and-drop pour les images
    • Page détail avec commentaires et informations latérales
    • Interface admin pour la gestion des tickets

[1.2.1] - 2026-02-25

En production

Améliorations

  • Intégration Outlook : Amélioration de l'intégration avec Outlook Calendar
    • Nouveau bloc "Calendrier" dans la page de validation avec bouton "Ajouter à Outlook"
    • Correction du format des dates pour Outlook (ISO 8601) dans la page détail
    • Génération côté serveur des URLs Outlook pour plus de fiabilité

Corrections

  • Qualité du code : Formatage et organisation du code
    • Formatage complet du code Python avec Black (line-length: 100)
    • Organisation des imports avec isort
    • Correction des imports mal placés dans accounts/views.py
    • Extraction du JavaScript inline de base.html vers static/js/main.js
    • Remplacement des CSS inline statiques par des classes Tailwind

[1.2.0] - 2026-02-24

En production

Nouvelles fonctionnalités

  • Nouvelle Application Pointage : Système complet de pointage pour le rôle "Accueil"
    • Pointage journalier des visites et appels avec compteurs 1-5
    • Gestion des sections personnalisables (Accueil, Appels, etc.)
    • Pointage rétroactif jusqu'à 30 jours
    • Dashboard statistiques avec graphiques (Jour/Semaine/Mois)
    • Historique des modifications avec traçabilité complète
    • Permissions basées sur le rôle "Accueil" (insensible à la casse)
    • Architecture modulaire avec modèles SectionType, DailyTracking, TrackingHistory

Tests

  • Implémentation TDD (Test Driven Development) pour l'app Pointage
  • Tests unitaires complets pour les modèles (SectionType, DailyTracking, TrackingHistory)
  • Tests d'intégration pour les vues et permissions
  • Tests de sécurité pour le mixin AccueilRequiredMixin
  • Couverture de test complète sur l'application Pointage

Améliorations Interface

  • Workflow AGENTS.md : Création d'un guide complet pour les agents AI
    • Matrice de décision rapide pour l'utilisation des workflows
    • Checklists de validation par type de fichier
    • Organisation des workflows en catégories (Python, Django, Frontend, DevOps, etc.)
  • Page Validation des Événements : Améliorations UX majeures
    • Titre cliquable vers la page de validation détaillée
    • Colonne "Statut" affichant Validé/Refusé/En attente avec badges colorés
    • Renommage du bouton "Valider" en "Examiner" pour plus de clarté
    • Formulaire adaptatif selon le statut de validation avec affichage des informations
    • Affichage de l'utilisateur et de la date de validation/rejet
    • Notes de validation éditables avec pré-remplissage
    • Boutons contextuels désactivés selon l'état actuel
  • Boutons de Partage : Correction et amélioration
    • Correction des URLs Facebook et LinkedIn dans la page de validation
    • Lien de création d'événement Facebook fonctionnel
    • Correction du bouton Outlook dans les archives avec plage horaire de 1h par défaut
    • Génération dynamique des URLs de partage côté serveur
  • Affichage Lieu/Ville : Optimisation de l'affichage dans la liste des événements
    • Limitation à 25 caractères pour le lieu et la ville
    • Ajout d'un tooltip au survol pour voir le texte complet
    • Correction de la mise en page : le lieu/ville s'affiche maintenant sous le titre
    • Meilleure gestion de l'espace dans le tableau

Corrections

  • Correction de 16 tests échoués suite aux modifications
  • Correction du champ author pour les commentaires (était user)
  • Correction de save_m2m() dans les vues de mise à jour et duplication
  • Correction du EventChangeLog dans la duplication d'événements
  • Suppression des doublons dans le dossier workflows/ (fichiers .md à la racine)

[1.1.0] - 2026-02-09

Stable

Sécurité

  • [CRITIQUE] Correction de vulnérabilités XSS dans les templates
    • event_detail.html : Échappement des descriptions et commentaires
    • video_request.html : Échappement des variables dans les emails
    • communication_dashboard.html : Protection contre l'injection JavaScript dans Chart.js
  • [ÉLEVÉ] Ajout de l'échappement ICS selon RFC 5545 pour les fichiers de calendrier
  • [MOYEN] Implémentation du rate limiting sur les endpoints de notifications
    • notification_mark_read : 10 requêtes/minute
    • notification_mark_all_read : 5 requêtes/minute
  • [MOYEN] Validation robuste des entrées utilisateur dans le dashboard
    • Validation des dates personnalisées
    • Limite de période à 2 ans maximum
    • Messages d'erreur utilisateur appropriés

Performance

  • [ÉLEVÉ] Optimisation des requêtes N+1 dans le dashboard
    • Réduction de 50+ requêtes SQL à 1 requête pour les statistiques par secteur
    • Utilisation de annotate() et Count() de Django ORM
  • [MOYEN] Mise en place du caching pour les villes dans EventListView
    • Cache de 1 heure avec clé basée sur le rôle utilisateur
    • Réduction drastique des requêtes répétées
  • [MOYEN] Ajout de transaction.atomic() pour la duplication d'événements
    • Garantie d'intégrité des données
    • Rollback automatique en cas d'erreur

Tests

  • Configuration complète de pytest avec 80% de couverture minimale requise
  • Ajout de tests de sécurité XSS
  • Ajout de tests pour les fonctionnalités de tournage vidéo
  • Ajout de tests pour le rate limiting

Documentation

  • Création du CHANGELOG.md
  • Création du SECURITY.md avec les bonnes pratiques
  • Mise à jour du README.md avec les nouvelles fonctionnalités

Maintenance

  • Audit de sécurité complet avec Bandit (aucune vulnérabilité critique trouvée)
  • Corrections de bugs mineurs
  • Amélioration de la gestion des erreurs

[1.0.0] - 2026-01-15

Stable

Première version stable

  • Gestion complète des événements (CRUD)
  • Système de validation par l'équipe Communication
  • Gestion des secteurs d'activité
  • Système de notifications
  • Authentification et autorisation par rôles
  • Upload de documents et images
  • Dashboard statistiques pour l'équipe Communication
  • Système de demande de tournage vidéo
  • Génération de fichiers ICS
  • Recurrence d'événements
  • Gestion des commentaires

Types de changements

Sécurité Correction de vulnérabilités de sécurité
Performance Améliorations de performance
Corrections Correction de bugs
Fonctionnalités Nouvelles fonctionnalités
Changements Changements comportementaux
Documentation Changements de documentation