-
Notifications
You must be signed in to change notification settings - Fork 1
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
feat: hydrater la table du dernier évènement connu pour un email à partir des évènements passés #896
The head ref may contain hidden characters: "895-archivage---hydratation-de-la-table-emaillastseen-avec-les-donn\u00E9es-existantes"
Conversation
lacommunaute/users/management/commands/populate_emaillastseen.py
Outdated
Show resolved
Hide resolved
last_seen = collect_users_logged_in() | ||
sys.stdout.write(f"users logged in: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_event() | ||
sys.stdout.write(f"events: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_DSP() | ||
sys.stdout.write(f"DSP: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_upvote() | ||
sys.stdout.write(f"UpVotes: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_forum_rating() | ||
sys.stdout.write(f"forum ratings: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_post() | ||
sys.stdout.write(f"posts: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_clicked_notifs() | ||
sys.stdout.write(f"clicked notifications: collected {len(last_seen)}\n") | ||
|
||
dedup_last_seen_dict = deduplicate(last_seen) | ||
sys.stdout.write(f"deduplication: {len(dedup_last_seen_dict)}\n") | ||
|
||
dedup_last_seen_dict = remove_known_last_seen(dedup_last_seen_dict) | ||
sys.stdout.write(f"remove known last seen: {len(dedup_last_seen_dict)}\n") | ||
|
||
res = insert_last_seen(dedup_last_seen_dict) | ||
sys.stdout.write(f"insert last seen: {len(res)}\n") | ||
|
||
sys.stdout.write("that's all folks!\n") | ||
sys.stdout.flush() |
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.
C’est violent niveau mémoire de tout charger, mais vu la taille de la commu 🤷
J’aurais plutôt utilisé l’identifiant utilisateur comme clé d’un dict[username, namedtuple(last_seen, kind)]
et itéré sur les éléments petit à petit.
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.
Il y a aussi l'approche que j'ai utilisé pour la création des groupes de suivi GPS -> j'annote les users et je fais des petits batchs aussi :
https://github.com/gip-inclusion/les-emplois/blob/master/itou/gps/management/commands/sync_follow_up_groups_and_members.py
(je dis plus ça pour la culture que pour recommander de faire pareil)
c3cbf23
to
5705efa
Compare
86b57b0
to
6766ac0
Compare
5705efa
to
37aa773
Compare
6766ac0
to
481f8b7
Compare
37aa773
to
9a3efca
Compare
9a3efca
to
7c972f3
Compare
7c972f3
to
6bd0e7d
Compare
c7beaf8
to
399bb6c
Compare
last_seen = collect_users_logged_in() | ||
sys.stdout.write(f"users logged in: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_event() | ||
sys.stdout.write(f"events: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_DSP() | ||
sys.stdout.write(f"DSP: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_upvote() | ||
sys.stdout.write(f"UpVotes: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_forum_rating() | ||
sys.stdout.write(f"forum ratings: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_post() | ||
sys.stdout.write(f"posts: collected {len(last_seen)}\n") | ||
|
||
last_seen += collect_clicked_notifs() | ||
sys.stdout.write(f"clicked notifications: collected {len(last_seen)}\n") | ||
|
||
dedup_last_seen_dict = deduplicate(last_seen) | ||
sys.stdout.write(f"deduplication: {len(dedup_last_seen_dict)}\n") | ||
|
||
dedup_last_seen_dict = remove_known_last_seen(dedup_last_seen_dict) | ||
sys.stdout.write(f"remove known last seen: {len(dedup_last_seen_dict)}\n") | ||
|
||
res = insert_last_seen(dedup_last_seen_dict) | ||
sys.stdout.write(f"insert last seen: {len(res)}\n") | ||
|
||
sys.stdout.write("that's all folks!\n") | ||
sys.stdout.flush() |
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.
Il y a aussi l'approche que j'ai utilisé pour la création des groupes de suivi GPS -> j'annote les users et je fais des petits batchs aussi :
https://github.com/gip-inclusion/les-emplois/blob/master/itou/gps/management/commands/sync_follow_up_groups_and_members.py
(je dis plus ça pour la culture que pour recommander de faire pareil)
lacommunaute/users/management/commands/populate_emaillastseen.py
Outdated
Show resolved
Hide resolved
|
||
|
||
def keep_most_recent_tuple(last_seen): | ||
return {tup[0]: tup for tup in sorted(last_seen, key=lambda tup: (tup[0], tup[1]))} |
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.
pas mal comme méthode pour garder le dernier élément de sorted 👍
🤖 I have created a release *beep* *boop* --- ## [2.21.0](v2.20.0...v2.21.0) (2025-02-13) ### Features * creation de la table de suivi RGPD ([#892](#892)) ([dfc378a](dfc378a)) * enregistrer le dernier evenement connu pour une adresse mail ([#894](#894)) ([9aa316c](9aa316c)) * extension des droits des utilisateurs de l'équipe - Documentation et Partenaires ([#914](#914)) ([95bea05](95bea05)) * extension des droits des utilisateurs de l'équipe ([#913](#913)) ([d5add12](d5add12)) * hydrater la table du dernier évènement connu pour un email à partir des évènements passés ([#896](#896)) ([28c4cb2](28c4cb2)) * masquer le filtre sur les reponses certifiees ([a648647](a648647)) * masquer le filtre sur les reponses certifiees ([#908](#908)) ([84e9a42](84e9a42)) * **notification:** enregistrer les retours sur les notifs mails ([#891](#891)) ([ec67205](ec67205)) * remplacer un nom de domaine expiré dans les données utilisateurs ([#907](#907)) ([fb886e1](fb886e1)) * **search:** ajout de liens de recherche vers le site des emplois ([#879](#879)) ([c6ac2a3](c6ac2a3)) * supprimer les traces d'envoi d'emails de plus de 90 jours ([#902](#902)) ([8abf9ef](8abf9ef)) ### Bug Fixes * suppression de type dans `EmailLastSeen` ([#905](#905)) ([a21b502](a21b502)) * televersement des fichiers en erreur ([#899](#899)) ([d9951e1](d9951e1)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [2.21.0](v2.20.0...v2.21.0) (2025-02-13) ### Features * creation de la table de suivi RGPD ([#892](#892)) ([dfc378a](dfc378a)) * enregistrer le dernier evenement connu pour une adresse mail ([#894](#894)) ([9aa316c](9aa316c)) * extension des droits des utilisateurs de l'équipe - Documentation et Partenaires ([#914](#914)) ([95bea05](95bea05)) * extension des droits des utilisateurs de l'équipe ([#913](#913)) ([d5add12](d5add12)) * hydrater la table du dernier évènement connu pour un email à partir des évènements passés ([#896](#896)) ([28c4cb2](28c4cb2)) * masquer le filtre sur les reponses certifiees ([a648647](a648647)) * masquer le filtre sur les reponses certifiees ([#908](#908)) ([84e9a42](84e9a42)) * **notification:** enregistrer les retours sur les notifs mails ([#891](#891)) ([ec67205](ec67205)) * remplacer un nom de domaine expiré dans les données utilisateurs ([#907](#907)) ([fb886e1](fb886e1)) * **search:** ajout de liens de recherche vers le site des emplois ([#879](#879)) ([c6ac2a3](c6ac2a3)) * supprimer les traces d'envoi d'emails de plus de 90 jours ([#902](#902)) ([8abf9ef](8abf9ef)) ### Bug Fixes * suppression de type dans `EmailLastSeen` ([#905](#905)) ([a21b502](a21b502)) * televersement des fichiers en erreur ([#899](#899)) ([d9951e1](d9951e1)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Description
🎸 Collecter les
User.last_login
,Event
,DSP
,UpVote
,ForumRating
,Post
anonymes et authentifiés,Notification
visitées (#891)🎸 dédupliquer les emails en gardant l'evènement le plus récent
🎸 ignorer les emails déjà enregistrés dans
EmailLastSeen
, en considerant que l'enregistrement dansEmailLastSeen
est le plus récent🎸 Insérer l'ensemble dans
EmailLastSeen
Type de changement
🚧 technique
Points d'attention
🦺
test_collect_clicked_notifs
casse par principe en attendant #891🦺 prérequis #892 & #894
simulation sur données du 27 janvier 2025