-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Améliore le système de tracking #1009
Conversation
✅ Deploy Preview for nosgestesclimat ready!
To edit notification comments on pull requests, go to your Netlify site settings. |
Report for the pull request #1009🌐 Translation statusUI's texts
FAQ's questions
|
Si je comprends bien, les événements du funnel de conversion simulation ne sont plus vérifiés dans Redux, mais directement dans le localstorage dans le composant de tracker. Pourquoi ne pas continuer avec redux, et ajouter la persistance de l'attribut de suivi des events ? Notamment, j'ai l'impression que ça te fait manipuler cette API localstorage de plus bas niveau que le store redux. Est-ce que ce système de vérification d'event n'empêche pas certains events d'être légitimement envoyés plusieurs fois pour une même utilisateur-simulation ? Tu l'as bien vérifié ? Finalement, ce que tu fais dans cette PR revient à implémenter nous-mêmes notre propre logiciel d'analytics. |
596782e
to
a606f21
Compare
Yes, je suis allé au plus simple. Je pense que ça venait de l'utilisation des Je suis pas contre l'idée d'utiliser Redux ici je trouve ça un peu plus lourd, et je voulais pouvoir mettre à jour l'objet stocké dans le localStorage depuis le context TrackingContext.
Le système que j'ai ajouté est pensé pour filtrer les évènements déjà envoyés, effectivement pour le moment tous les évènements sont filtrés. Je pensais ajouter un array avec les events à envoyer plusieurs fois.
Oulà c'est pas du tout mon objectif 😄 on pourra en discuter demain de vive voix mais mes objectifs ici sont :
|
J'ai aussi ajouté https://www.npmjs.com/package/eslint-plugin-react-hooks qui permet d'éviter de faire pas mal d'erreurs en utilisant les hooks, je pense que le fait que les events du funnel NGC provenaient d'erreurs dans les dépendances passées aux |
@laem au final je suis bien tenté de stocker les key d'event dans le store redux j'essaie ça demain ! |
Je trouve dommage de perdre cet indicateur "numérique" qui permet de donner une idée plus précise de l'avancement plutôt que la catégorie passée ou non .. Si on veut tester la longueur du test, le `progressent suffisant En revanche, on pourrait changer la manière d'envoyer les events de progress en envoyant un event dès qu'on passe un palier (tous les 5%) qu'en penses-tu ? Je me demande aussi si les erreurs de complétion ne viennent pas de notre calcul du progress (je n'ai pas vérifié, c'est une hypothèse): si on est à 5/10(50%), on envoie l'event 50%, la 6ème question déclenche d'autres questions, le nombre de questions total passe de 10 à 15 --> on retombe 5/15 (33%), ce qui pourrait potentiellement renvoyer l'event 50% par la suite (mais normalement c'était pas le cas car "event fired') |
J'aime bien l'idée mais comme tu le dis c'est un peu dérangeant qu'on ne puisse pas savoir de manière fiable le pourcentage réel de complétion au cours de la simulation du coup je me demande si c'est une donnée vraiment pertinente. 🤔 Je ne sais pas à quel point le nombre de questions peut varier. Si le delta est minime ça pourrait être intéressant. Dans tous les cas je crois vraiment qu'il faut qu'on crée un nouveau projet matomo pour avoir dès le départ des données propres (ce qui ne nous empêchera pas d'agréger les données de l'ancien avec le nouveau, typiquement le nombre de visites). On pourrait en avoir un sur l'instance betagouv qui est plus musclée à ce qu'il parait - proposition de Chaïb. En fait je crois qu'il faut que je formalise ma vision pour les stats dans un doc je fais ça ce matin et je vous partage le doc pour qu'on en discute et qu'on se mette d'accord. :) |
7a63491
to
5c74c2e
Compare
const [displayExplanations, setDisplayExplanations] = useState(false) | ||
|
||
const handleChecked = (e: React.ChangeEvent<HTMLInputElement>) => { | ||
if (e.target.checked) { | ||
setDisplayExplanations(false) | ||
} | ||
onChange?.(e) | ||
tracker.debouncedPush([ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Supprimé car ça me semble très spécifique, à moins d'avoir un objectif de mesure clair ça ne sert à rien d'aller autant dans le détail à mon sens 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On avait un tracker sur tous les clics de checkbox ?
const { eventsSent } = simulation || {} | ||
|
||
// Call before sending an event | ||
const checkIfEventAlreadySent = useCallback( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@laem @Clemog ici j'empêche l'envoi de plusieurs mêmes évènements. J'ai bien compris (depuis notre point avec Maël) qu'on était dans une logique de session et qu'on laisse matomo faire le tri entre visiteurs uniques et tous les visiteurs mais j'ai quand même un problème avec le fait de balancer autant de requêtes pour un chiffre qui ne me parait pas utile. En fait, je vois mal l'utilité de savoir combien de visiteurs totaux ont déclenché l'évènement "50% de progression" en comparaison avec l'utilité de savoir le nombre de visiteurs uniques pour le même évènement. Je relie ça avec la question de la frugalité : si on peut éviter des requêtes pourquoi ne pas le faire ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je ne comprends pas pourquoi tu veux absolument l'enlever car il a été ajouté pour justement comprendre les résultats élevés des simulations terminées (envoyé, il me semble, via une autre méthode qui n'utilise pas le progress mais je me trompe peut-être) donc pour moi ça reste utile
en comparaison avec l'utilité de savoir le nombre de visiteurs uniques pour le même évènement
C'est à dire ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Non désolé ces commentaires sont datés, si tu regardes dans Conversation et matomo-events.ts je les ai finalement remis 🙂
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
D'acc merci, chaud pour les enlever si on voit qu'on ne s'en sert pas :)
81278b9
to
281a192
Compare
Passing run #133 ↗︎Details:
This comment has been generated by cypress-bot as a result of this project's GitHub integration settings. |
84fb74c
to
f338df1
Compare
f338df1
to
827bd54
Compare
@laem @Clemog @dxb @EmileRolley je prendrais bien une petite review avant de merger :) voir si j'ai pas oublié un truc |
Tu as des fichiers ou features plus spécifiques que tu veux qu'on regarde ? |
@Clemog hmm peut-être le côté logique dans |
J'ai refait une bonne passe et ça m'a l'air bon ! Je merge ça :) |
Trop cool ! Hésite pas à faire un post sur mattermost :) |
Mon idée est de tout centraliser dans le
TrackerContext
, logique etuseEffect
qui suivent la progression du questionnaire.Ajoute un système de sauvegarde des évènements envoyé, lié à l'id de simulation.
Corrige le bug de captage d'event sur Plausible.
TODO :
trackEvent
afin qu'ils puissent être appelés plusieurs fois au besoinEdit :
J'ai remplacé
TrackingContext
parMatomoContext
ainsi que créé/analytics/matomo-events.ts
où sont centralisés tous nos évènements tracking.J'ai retiré les évènements 50% de complétion et 90% de complétion pour ajouter un évènement qui est déclenché à chaque fois que l'utilisateur démarre une catégorie. Cela nous donnera des infos plus précises sur la ou les catégories qui peuvent potentiellement poser problème. On pourra affiner dans un second temps sur chaque question pour avoir des métrics très précises en ajoutant un système d'URL unique par question.