#21 Conservation des notifications

Open
opened 3 months ago by Breizh · 10 comments
Breizh commented 3 months ago

Il pourrait être intéressant de conserver les notifications lues, au moins un certain temps. Histoire de pouvoir retrouver certaines infos facilement.

Il pourrait être intéressant de conserver les notifications lues, au moins un certain temps. Histoire de pouvoir retrouver certaines infos facilement.
Darks added the
enhancement
label 3 months ago
Darks self-assigned this 3 months ago
Lephenixnoir commented 3 months ago
Owner

Je suppose que je suis d’accord. Pour rebondir sur une question que Darks, a posé sur la shoutbox, mon avis personnel serait de trier les notifications avec les récentes en haut - mais la meilleure option serait d’ajouter un bouton pour inverser l’ordre en Javascript.

Pour la suppression, j’aurait dit manuellement, avec un bouton ok/done et une option pour supprimer certains types de notifs (eg. nouveau MP) automatiquement sur certains événements (eg. MP lu), selon les goûts.

Je suppose que je suis d'accord. Pour rebondir sur une question que Darks, a posé sur la shoutbox, mon avis personnel serait de trier les notifications avec les récentes en haut - mais la meilleure option serait d'ajouter un bouton pour inverser l'ordre en Javascript. Pour la suppression, j'aurait dit manuellement, avec un bouton ok/done et une option pour supprimer certains types de notifs (eg. nouveau MP) automatiquement sur certains événements (eg. MP lu), selon les goûts.
Darks commented 3 months ago
Owner

Je propose le système suivant :

  • chaque notif a un attribut read. Par défaut il est bien évidemment à False
  • si la notif possède un attribut href, lorsque l’on clique sur le lien dans le panel des notifs l’attribut read passe à True
  • dans le panel des notifs, on a un beau tableau avec trois colonnes :
    • marquer comme lu (action rapide)
    • supprimer (action rapide)
    • sélectionner (checkbox)
  • en haut deux boutons
    • marquer comme lu les notifs sélectionnées
    • supprimer les notifs sélectionnées

En Javascript, trois boutons :

  • trier par ordre desc/asc
  • afficher/masquer les notifications lues
  • tout sélectionner
Je propose le système suivant : - chaque notif a un attribut `read`. Par défaut il est bien évidemment à `False` - si la notif possède un attribut `href`, lorsque l'on clique sur le lien dans le panel des notifs l'attribut `read` passe à `True` - dans le panel des notifs, on a un beau tableau avec trois colonnes : - marquer comme lu (action rapide) - supprimer (action rapide) - sélectionner (checkbox) - en haut deux boutons - marquer comme lu les notifs sélectionnées - supprimer les notifs sélectionnées En Javascript, trois boutons : - trier par ordre desc/asc - afficher/masquer les notifications lues - tout sélectionner
Lephenixnoir commented 3 months ago
Owner

Vite fait : je suggère url comme l’attribut plutôt que href (fait très HTML).

Un paramètre pour supprimer automatiquement les notifications lues ? Ou alors un paramètre pour supprimer automatiquement les notifications avec un lien quand elles sont visitées ?

Ce qui est con là c’est que la base de données va grandir vite si les utilisateurs ne font rien, je me trompe ?

À part ce détail, j’achète.

Vite fait : je suggère `url` comme l'attribut plutôt que `href` (fait très HTML). Un paramètre pour supprimer automatiquement les notifications lues ? Ou alors un paramètre pour supprimer automatiquement les notifications avec un lien quand elles sont visitées ? Ce qui est con là c'est que la base de données va grandir vite si les utilisateurs ne font rien, je me trompe ? À part ce détail, j'achète.
Breizh commented 3 months ago
Owner

Je me demande quelles solutions utilisent d’autres sites. Je veux dire, beaucoup stockent ces notifications à vie pour chaque utilisateur sans problème.

Je me demande quelles solutions utilisent d'autres sites. Je veux dire, beaucoup stockent ces notifications à vie pour chaque utilisateur sans problème.
Lephenixnoir commented 3 months ago
Owner

En vrai je crois pas que le risque d’exploser la base soit si grand. Mais j’ai des doutes avec le risque que les comptes inactifs accumulent des notifs’. Avec 10’000 comptes inactifs ça irait très vite. Faut au moins contrôler ça asymptotiquement :wink:

En vrai je crois pas que le risque d'exploser la base soit si grand. Mais j'ai des doutes avec le risque que les comptes inactifs accumulent des notifs'. Avec 10'000 comptes inactifs ça irait très vite. Faut au moins contrôler ça asymptotiquement :wink:
Darks commented 3 months ago
Owner

avec 10’000 comptes inactifs ça irait très vite

Encore faut-il que ces comptes inactifs reçoivent des notifs. Si ils ne sont pas abonnés à des topics ça limite la casse. Et je doute qu’on s’amuse à mentionner en boucle un utilisateur inactif. Et au pire y’a le ménage semestriel qui est fait :wink:

> avec 10’000 comptes inactifs ça irait très vite Encore faut-il que ces comptes inactifs reçoivent des notifs. Si ils ne sont pas abonnés à des topics ça limite la casse. Et je doute qu'on s'amuse à mentionner en boucle un utilisateur inactif. Et au pire y'a le ménage semestriel qui est fait :wink:
Lephenixnoir commented 3 months ago
Owner

Si tu as un “ménage semestriel” alors asymptotiquement tu es bloqué sur une quantité constante de notifs (en supposant que le débit est borné), ce qui me va.

Pour un scénario catastrophe, supposons qu’un membre active le suivi automatique des topics dans lesquels ils participent. Ça peut vite faire 10, 20, 100 pour un utilisateur actif sur une période. Lorsque cet utilisateur devient inactif, les topics de projets qui le restent souvent très longtemps vont continuer à générer des notifications ad vitam eternam.

Plusieurs solutions se présentent, que je suggère pour animer un peu la conversation :

  • Une seule notification par topic suivi, indiquant le plus vieux message non lu, au lieu d’une notification par message posté dans un topic suivi
  • Supprimer automatiquement les notifications après une durée fixée (eg. 6 mois)
  • Ne plus notifier les utilisateurs inactifs depuis plus d’une certaine durée
  • Désuivre automatiquement les sujets qui ont été suivis automatiquement en raison d’un post mais dans lesquels l’utilisateur n’a plus posté depuis une certaine durée
  • Voire d’autres, vous n’en douterez pas…
Si tu as un "ménage semestriel" alors asymptotiquement tu es bloqué sur une quantité constante de notifs (en supposant que le débit est borné), ce qui me va. Pour un scénario catastrophe, supposons qu'un membre active le suivi automatique des topics dans lesquels ils participent. Ça peut vite faire 10, 20, 100 pour un utilisateur actif sur une période. Lorsque cet utilisateur devient inactif, les topics de projets qui le restent souvent très longtemps vont continuer à générer des notifications ad vitam eternam. Plusieurs solutions se présentent, que je suggère pour animer un peu la conversation : * Une seule notification par topic suivi, indiquant le plus vieux message non lu, au lieu d'une notification par message posté dans un topic suivi * Supprimer automatiquement les notifications après une durée fixée (eg. 6 mois) * Ne plus notifier les utilisateurs inactifs depuis plus d'une certaine durée * Désuivre automatiquement les sujets qui ont été suivis automatiquement en raison d'un post mais dans lesquels l'utilisateur n'a plus posté depuis une certaine durée * Voire d'autres, vous n'en douterez pas...
Darks commented 3 months ago
Owner

Lorsque cet utilisateur devient inactif, les topics de projets qui le restent souvent très longtemps vont continuer à générer des notifications ad vitam eternam.

J’étais curieux, du coup sur la v42, ces 6 derniers mois :

  1. 92 topics de plus de 6 mois ont été remontés via 1234 messages
  2. Sur ces 92, 55 topics de plus de 2 ans ont été remontés via 956 messages
  3. Sur ces 55, 32 topics de plus de 5 ans ont été remontés via 379 messages

Je mets les requêtes SQL pour que tu puisse reproduire.

  1. SELECT COUNT(*) FROM pc_fr_topics WHERE date < 1553471531 AND date_verif >= 1553471531 et SELECT COUNT(*) FROM pc_fr_forums INNER JOIN pc_fr_topics ON pc_fr_topics.id = pc_fr_forums.reponse_id WHERE pc_fr_topics.date < 1553471531 AND pc_fr_forums.date >= 1553471531
  2. SELECT COUNT(*) FROM pc_fr_topics WHERE date < 1504569600 AND date_verif >= 1553471531 et SELECT COUNT(*) FROM pc_fr_forums INNER JOIN pc_fr_topics ON pc_fr_topics.id = pc_fr_forums.reponse_id WHERE pc_fr_topics.date < 1504569600 AND pc_fr_forums.date >= 1553471531
  3. SELECT COUNT(*) FROM pc_fr_topics WHERE date < 1409875200 AND date_verif >= 1553471531 et SELECT COUNT(*) FROM pc_fr_forums INNER JOIN pc_fr_topics ON pc_fr_topics.id = pc_fr_forums.reponse_id WHERE pc_fr_topics.date < 1409875200 AND pc_fr_forums.date >= 1553471531

Finalement je trouve que c’est pas tant que ça. On parle quand même d’activité sur 6 mois entiers…

Après ça n’empêche pas de trouver une solution satisfaisante pour faire le ménage, mais on est peut-être pas obligés de le faire de manière drastique.

> Lorsque cet utilisateur devient inactif, les topics de projets qui le restent souvent très longtemps vont continuer à générer des notifications ad vitam eternam. J'étais curieux, du coup sur la v42, ces 6 derniers mois : 1. 92 topics de plus de 6 mois ont été remontés via 1234 messages 2. Sur ces 92, 55 topics de plus de 2 ans ont été remontés via 956 messages 3. Sur ces 55, 32 topics de plus de 5 ans ont été remontés via 379 messages Je mets les requêtes SQL pour que tu puisse reproduire. 1. `SELECT COUNT(*) FROM pc_fr_topics WHERE date < 1553471531 AND date_verif >= 1553471531` et `SELECT COUNT(*) FROM pc_fr_forums INNER JOIN pc_fr_topics ON pc_fr_topics.id = pc_fr_forums.reponse_id WHERE pc_fr_topics.date < 1553471531 AND pc_fr_forums.date >= 1553471531` 2. `SELECT COUNT(*) FROM pc_fr_topics WHERE date < 1504569600 AND date_verif >= 1553471531` et `SELECT COUNT(*) FROM pc_fr_forums INNER JOIN pc_fr_topics ON pc_fr_topics.id = pc_fr_forums.reponse_id WHERE pc_fr_topics.date < 1504569600 AND pc_fr_forums.date >= 1553471531` 3. `SELECT COUNT(*) FROM pc_fr_topics WHERE date < 1409875200 AND date_verif >= 1553471531` et `SELECT COUNT(*) FROM pc_fr_forums INNER JOIN pc_fr_topics ON pc_fr_topics.id = pc_fr_forums.reponse_id WHERE pc_fr_topics.date < 1409875200 AND pc_fr_forums.date >= 1553471531` Finalement je trouve que c'est pas tant que ça. On parle quand même d'activité sur 6 mois entiers… Après ça n'empêche pas de trouver une solution satisfaisante pour faire le ménage, mais on est peut-être pas obligés de le faire de manière drastique.
Lephenixnoir commented 3 months ago
Owner

On n’aura qu’à voir plus tard quand on sera en prod’. On a panneau admin pour ça. ^^

On n'aura qu'à voir plus tard quand on sera en prod'. On a panneau admin pour ça. ^^
Darks commented 5 days ago
Owner

Je lie ce topic pour ne pas le perdre de vue quand j’implémenterai les notifs.

https://www.planet-casio.com/Fr/forums/topic15828-1--RFC---v5--Systeme-de-notifications.html

Je lie ce topic pour ne pas le perdre de vue quand j'implémenterai les notifs. https://www.planet-casio.com/Fr/forums/topic15828-1--RFC---v5--Systeme-de-notifications.html
Sign in to join this conversation.
No Milestone
No Assignees
3 Participants
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
Cancel
Save
There is no content yet.