feat: filtre de motif de sortie d'équipe dans les stats#1314
feat: filtre de motif de sortie d'équipe dans les stats#1314rap2hpoutre wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Ajoute un filtre de statistiques permettant de sélectionner les personnes selon le(s) motif(s) de sortie d’équipe sur une période donnée.
Changes:
- Ajout d’un champ de filtre “Motif de sortie d’équipe” (multi-choix) dans la page Statistiques.
- Implémentation du filtrage côté calcul des stats via l’historique
outOfTeamsInformations(reasons) sur la période sélectionnée. - Exclusion de ce nouveau filtre du traitement générique
filterItem(activeFilters)pour le gérer spécifiquement.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // Filter by team exit reasons during period | ||
| if (outOfTeamsDuringPeriodReasonsSet) { | ||
| let hasMatchingReason = false; | ||
| for (const historyEntry of person.history || []) { | ||
| const historyDate = historyEntry.date; | ||
| if (!noPeriodSelected) { |
There was a problem hiding this comment.
Quand les deux filtres « Sortie d’équipe » et « Motif de sortie d’équipe » sont actifs, la logique valide l’un puis l’autre indépendamment. Cela peut inclure des personnes sorties d’une équipe sélectionnée, mais dont le motif sélectionné provient d’une autre sortie d’équipe (autre team / autre entrée d’historique). Si l’intention est de filtrer par motif de sortie pour les équipes sélectionnées, il faut croiser team+reason au niveau d’une même entrée outOfTeamsInformations (et idéalement dans une seule passe sur person.history).
There was a problem hiding this comment.
Mh ça c'est complexe. Normalement les filtres sont indépendants les uns des autres, donc je pense qu'il faut laisser comme ça
| for (const info of outOfTeamsInformations) { | ||
| for (const reason of info.reasons || []) { | ||
| if (outOfTeamsDuringPeriodReasonsSet.has(reason)) { | ||
| hasMatchingReason = true; | ||
| break; | ||
| } | ||
| } |
There was a problem hiding this comment.
Le composant de filtres ajoute automatiquement l’option « Non renseigné » pour les champs multi-choix (cf. Filters.tsx), mais ce filtre ne la gère pas : si l’utilisateur sélectionne « Non renseigné », aucune personne ne pourra matcher car on ne considère pas le cas où info.reasons est vide/absent. Il faut traiter explicitement « Non renseigné » comme un match quand une entrée outOfTeamsInformations a reasons vide (ou manquant).
There was a problem hiding this comment.
@copilot open a new pull request to apply changes based on this feedback
|
@rap2hpoutre I've opened a new pull request, #1315, to work on those changes. Once the pull request is ready, I'll request review from you. |
arnaudambro
left a comment
There was a problem hiding this comment.
- mon utilisateur est suivi par équipe A et équipe B
- je le sors du suivi par équipe B, motif "motif 1"
- je check les stats pour l'équipe A, avec pour seul filtre "Motif de sortie d'équipe: motif 1" et la personne est comptée. On eu pu attendra que ce motif de sortie d'équipe ne compte que si la sortie est de l'équipe A.
Je ne dis pas que ça ne va pas, mais j'imagine que quelqu'un va faire la remarque...
|
Oui en fait je ne sais pas non plus. C'est bien ça qui m'embête. Normalement chaque filtre est indépendant. Il faudra qu'on en reparle |
|
Note de Simon :
|
No description provided.