pix
pix copied to clipboard
[OPTIMISATION] Utilise des compteurs pour le nombre de participations dans les campagnes
:unicorn: Problème
Le nombre de participation et le nombre de participations partagées d'une campagne sont calculés directement en SQL. Cela est couteux de base, mais rend même le fait de lister les campagnes pour certaines organizations impossible si le nombre de participations est grand.
:robot: Solution
Rajouter des champs de compteur sur la campagne qui stockent l'information à jour (on l'espère en tout cas). Les compteurs sont incrémenter/décrémenter dans des uses cases spécifique, a la suite du use case d'ajout/suppression.
:rainbow: Remarques
- Il manque la partie initialisation de ces compteurs pour les anciennes campagnes. Plusieurs stratégies sont possibles pour cela on ne veut pas s'en occuper avant que le principe soit validé.
- Il faudrait utiliser ces compteurs dans le détail de la campagne
:100: Pour tester
Avec une campagne à envoi multiple:
- rejoindre la campagne, voir que le nombre de participation est à 1.
- envoyer le profil: voir que le nombre de participations partagés est à 1
- Re-rejoindre la campagne: voir que le nombre de participation est à 1, partagés à 0.
- Supprimer la participation, voir que les 2 compteurs sont à 0
- Refaire les points 1 à 3 sur une nouvelle campagne
- Supprimer la participation depuis Pix Admin, voir que les 2 compteurs sont à 0
Avec une autre campagne:
- rejoindre la campagne, voir que le nombre de participation est à 1.
- Supprimer la participation, voir que les 2 compteurs sont a 0
I'm deploying this PR to these urls:
- App (.fr): https://app-pr4757.review.pix.fr
- App (.org): https://app-pr4757.review.pix.org
- Orga: https://orga-pr4757.review.pix.fr
- Certif: https://certif-pr4757.review.pix.fr
- Admin: https://admin-pr4757.review.pix.fr
- API: https://api-pr4757.review.pix.fr/api/
Please check it out!
Sur les deux semaines passées, les performances sur la route /api/organizations/{id}/campaigns
sont :
> 1s 2,2%
> 5s 1,4%
> 10s 1,0%
> 20s 0,6%
> 30s 0,4%
> 40s 0,2%
> 50s 0,1%
> 60s 0,0001%
On ferme.