Journal des modifications
Historique des changements et mises à jour de l'application
[1.4.0] - 2026-02-27
En développementNouvelle 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
- Division de
- Accounts Notifications : Refactoring du service de notification
- Extraction de
accounts/services.py(345 lignes) en package spécialisé - Création de
NotificationServiceBaseavec les méthodes fondamentales - Création de
EventNotificationServicepour les notifications événements - Création de
VideoNotificationServicepour les notifications vidéo - Séparation claire des responsabilités par domaine métier
- Extraction de
- Feedback Views : Extraction de la logique de notification
- Création de
FeedbackNotificationServicepour 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)
- Création de
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
.flake8dédié - Les outils de linting (Black, isort, flake8, bandit) fonctionnent maintenant correctement
- Suppression de la section
- Séparation JavaScript/HTML : Extraction de la configuration Tailwind
- Création du fichier
static/js/tailwind-config.jspour la configuration Tailwind - Suppression du JavaScript inline de
templates/base.html - Conformité avec le workflow
django-javascript-separation.md(ZERO JS inline)
- Création du fichier
- 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 productionTests
- 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 productionQualité du code
- Configuration Pre-commit : Mise en place complète des hooks de qualité
- Création du fichier
pyproject.tomlavec configuration Black, isort, Flake8 et Bandit - Optimisation du fichier
.pre-commit-config.yamlpour é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
- Création du fichier
- 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 productionNouvelles 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 productionAmé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 productionNouvelles 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
authorpour les commentaires (étaituser) - Correction de
save_m2m()dans les vues de mise à jour et duplication - Correction du
EventChangeLogdans la duplication d'événements - Suppression des doublons dans le dossier workflows/ (fichiers .md à la racine)
[1.1.0] - 2026-02-09
StableSécurité
- [CRITIQUE] Correction de vulnérabilités XSS dans les templates
event_detail.html: Échappement des descriptions et commentairesvideo_request.html: Échappement des variables dans les emailscommunication_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/minutenotification_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()etCount()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
StablePremiè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