#minor (2653) [Action] Historiser les modifications#1450
Draft
#minor (2653) [Action] Historiser les modifications#1450
Conversation
refers to https://trello.com/c/otR94k9k/2653 - Création du controller getHistory avec route et validation - Création du service getHistory pour récupérer l'historique d'une action - Création de la fonction serializeAction pour formater les données - Ajout des tests unitaires pour le service getHistory - Export des nouvelles fonctions dans l'index du modèle - Enregistrement du service dans actionService
refers to https://trello.com/c/otR94k9k/2653 - Requête SQL avec UNION entre actions_history et actions (état actuel) - Création de CTEs pour agréger les relations de l'état actuel (topics, managers, operators, shantytowns, finances) - Cast du champ location_type pour résoudre l'incompatibilité des types enum - Utilisation de :actionId AS hid dans les CTEs pour les jointures - Tri par updated_at ASC puis hid DESC - Parsing des colonnes JSONB retournées comme strings
refers to https://trello.com/c/otR94k9k/2653 - Modification de la logique de diff pour comparer les financements type par type - Création de Maps pour indexer les financements par type (uid) - Génération de diffs séparés pour chaque type (État, Europe, Collectivité, etc.) - Format des fieldKey : finances.{année}.{typeUid} (ex: finances.2024.state) - Affichage du nom du type dans le label : 'Financement 2024 - État'
refers to https://trello.com/c/otR94k9k/2653 - Création du composant FicheActionHistorique avec panneau latéral - Création du composant FicheActionHistoriqueItem pour afficher chaque modification - Implémentation du filtrage par catégorie (Financements, Thématiques, Contacts, Sites) - Support du filtrage par préfixes de champs (finances.2024.state matche finances) - Formatage des noms d'auteur et des dates - Rechargement forcé de l'historique à chaque ouverture du panneau - Création du fichier de configuration des filtres
refers to https://trello.com/c/otR94k9k/2653 - Ajout de la fonction getHistory dans l'API actions - Intégration du composant FicheActionHistorique dans FicheAction - Ajout du bouton 'Historique' dans le header de la fiche - Gestion de l'état d'ouverture/fermeture du panneau historique
refers to https://trello.com/c/otR94k9k/2653 - Utilisation de provide/inject pour partager openHistoryPanel entre les composants - Permet aux sections de la fiche d'ouvrir l'historique avec un filtre spécifique - Ajout de la prop categoryFilter dans FicheRubrique - Propagation du filtre aux sous-composants des sections
refers to https://trello.com/c/otR94k9k/2653 Cette propriété est initialisée à false par défaut, puis elle sera mise à true dans mergeFinances.ts si l'action possède un financement de type "dédié" (Dihal)
Contributor
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
…teur refers to https://trello.com/c/otR94k9k/2653 - Création de UserInfo pour les informations de base - Création de CreatorInfo pour les informations de créateur (toujours présentes) - Création de EditorInfo pour les informations d'éditeur (optionnelles) - Création de AuditInfo combinant CreatorInfo et EditorInfo - Permet de mutualiser le code dupliqué dans les types ActionRow
…teur refers to https://trello.com/c/otR94k9k/2653 - Création de UserInfo pour les informations de base - Création de CreatorInfo pour les informations de créateur (toujours présentes) - Création de EditorInfo pour les informations d'éditeur (optionnelles) - Création de AuditInfo combinant CreatorInfo et EditorInfo - Permet de mutualiser le code dupliqué dans les types ActionRow
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



🧾 Ticket Trello
https://trello.com/c/otR94k9k/2653
🛠 Description de la PR
Objectif
Implémenter l'affichage de l'historique des modifications des actions, similaire au fonctionnement de l'historique des sites. Cette fonctionnalité permet aux utilisateurs de consulter toutes les modifications apportées à une action, avec un système de filtrage par catégorie et une différenciation claire des types de financement.
Modifications apportées
Backend
1. Structure de base
Controller :
packages/api/server/controllers/action/getHistory//actions/:id/historyService :
packages/api/server/services/action/getHistory.tsTests :
packages/api/server/services/action/getHistory.spec.ts2. Requête SQL avec UNION
actions_history(versions historisées) etactions(état actuel)action_topics_agg: thématiquesaction_managers_agg: pilotesaction_operators_agg: opérateursaction_shantytowns_agg: sites liésaction_finances_agg: financementslocation_type::enum_actions_history_location_typepour compatibilité enum:actionId AS hiddans les CTEs pour les jointuresORDER BY updated_at ASC, hid DESC3. Sérialisation
packages/api/server/models/actionModel/_common/serializeAction.ts4. Différenciation des financements
type.uidfieldKey:finances.{année}.{typeUid}(ex:finances.2024.state)field:Financement {année} - {typeName}(ex: "Financement 2024 - État")Frontend
5. Composants d'affichage
FicheActionHistorique.vue : Panneau latéral principal
finances.2024.statematche finances)FicheActionHistoriqueItem.vue : Item de modification
FicheAction.filter.js : Configuration des filtres
financements→ financesthematiques→topicscontacts→managers,operatorssites→shantytowns6. Intégration
API :
packages/frontend/webapp/src/api/actions.api.jsgetHistory(actionId)pour appeler le backendFicheAction.vue : Intégration du composant historique
historyPanelOpenedopenHistoryPanelpour les sous-composantsFicheActionHeaderBoutons.vue : Bouton "Historique"
7. Provide/Inject pour les sections
FicheActionCaracteristiques,FicheActionFinancements, etc.)openHistoryPanelRésultat
Fonctionnalités
Tests
Description de la mise à jour de la PR #1
Objectif
Corriger l'affichage du bouton "Modifier les options" qui s'affichait pour des rôles n'ayant aucune option configurable (notamment
direct_collaborator)Modifications apportées
Frontend
FicheAccesActionModifyOptions.vue
hasAvailableOptionsqui vérifie si le rôle possède des options danspermissions_descriptionrolePermissions.options.length > 0FicheAccesBodyOptions.vue
developCheckableGrouppar des composantsCheckboxindividuelsvariant="checkbox",direction="col"et:activeModalExportLien.vue
ButtonparDsfrButton(disponible globalement):loadingn'existe pas dansDsfrButton(selon la documentation officielle):disabled="disabled || isLoading"à la placeBackend
direct_collaborator: "Exporter les actions" (avec financements)association: "Exporter les actions" (hors financements)30000106-01, cette modification améliore juste la documentationRésultat
direct_collaborator,external_observator, etc.)developDsfrButtonavec une prop inexistante📸 Captures d'écran
Si pertinent, mettre ici des captures de présentation de la fonctionnalité.
🚨 Notes pour la mise en production
Liste des choses à faire pour le déploiement (changement de configuration, migrations à faire tourner, etc.), si possible avec les éléments les plus précis possibles (commande exacte à exécuter, etc.).