Une meilleure expérience pour les avis (v3)
publié le , mis à jourVoici mes frustrations :
- on est tout le temps déconnecté, probablement car on ne gère pas le refresh token. C'est pas très compliqué
- ce serait surtout du à un problème d'utilisation de la lib de notre côté. Elle est sensée le faire automatiquement
- mmh, j'ai du mal à estimer si vraiment on le perd. Car c'est très fréquent pour moi de supprimer le cache pour mes tests
- là, je suis connecté sur Firefox ordi le 5 mai à 11h45, et sur mon navigateur mobile et mon app mobile chrome.
- MAJ : le 18 mai, ça marche toujours ! Mais cf l'item suivant
- on pourrait éviter d'afficher la saisie de connexion bluesky si session en cours de récupération.
- en profiter pour revoir les droits, oauth scopes. Les réduire, maintenant qu'on peut plus d'infos
- globalement la connexion a bluesky est trop lente. Soit l'accélérer, soit mettre des indicateurs visuels d'avancement
- notamment, "enter" doit déclencher le bouton connexion si pseudo ; il doit réagir pour indiquer qu'il a été cliqué
- y a maintenant deux boutons, photos et galerie, mais sur chrome l'envoie de photo via la galerie ne marche pas. issue
- stocker le couple osmCode -> commentaire dans le localstorage, très frustrant de toute perdre si mauvais clic
- afficher le pseudo : "l'information me semble importante, si c'est le restaurant qui poste un avis sur son propre restaurant, j'aimerais bien le savoir sans cliquer"
Fiabiliser la BDD
(repris ici depuis la v2, car pas de down majeur en plusieurs mois, donc plus accessoire que prévu !)
On n'a pas réussi à utiliser la fonctionnalité de cursor dans jetstream qui permet de reconstituer notre BDD si elle tombe.
Pas simple, Jetstream ne revient que 3 jours en arrière. Ce qui nous laisse le temps de corriger une prod pétée. On fait une erreur si enregistrement foireux, il faudrait :
- ajouter une notification d'un bug sur un canal Matrix
laem
Note que mes tests du matin ont eu lieu pendant un incident partiel Bluesky.
stemy2
Je ne peux plus poster d'avis, ça me retourne le message "Notre serveur semble avoir des problèmes. Désolé, vous pouvez réessayer dans 5 minutes". Pourtant, quand j'ouvre bluesky, ça fonctionne de façon tout à fait fluide.
laem
Je viens de tester à nouveau, ça fonctionne pour moi, et pour d'autres car des avis sont laissés tous les jours. Je n'ai donc pas d'indice pour te débloquer, désolé.
gturri
Pour info : je rencontre le même problème que @stemy2 . J'ai rencontré ce problème quand j'ai tenté de soumettre un avis fin mai ; j'ai eu l'erreur en permanence durant quelques jours avant de laisser tomber. Je viens là de tenter de laisser un autre avis et j'ai de nouveau le même problèmé.
laem
Test avec mon compte Bluesky : réussi.
Test avec compte créé sur Bluesky mais migré sur Eurosky : réussi.
Test avec un compte Eurosky créé à l'instant : réussi.
laem
Je ne dis pas que le problème vient de vous hein, j'essaie juste d'écarter des causes. On va le résoudre !
laem
J'ai besoin de votre aide @gturri et @stemy2.
-
est-ce que vous voyez le commentaire que vous avez essayé de laisser avant l'erreur dans cette liste ? Cliquez sur "show 41 more samples"
-
si oui, dites-moi lequel c'est. Si non, quel est votre pseudo Bluesky/Eurosky ?
Merci !
-
gturri
Oui, je vois sur la liste le commentaire que j'ai tenté de mettre hier ; c'est celui de 2026-07-20T18:41:57.326Z Dis moi si tu veux plus d'infos.
laem
Ça marcher merci. Donc il a bien été publié, mais notre code ne l'a pas attrapé. Il faut qu'on réimplémente cette partie là. Notre DB n'est qu'un miroir, mais il a des failles, donc, on dirait.
laem
Bon, je remplace par le Firehose Bluesky actuel par celui d'Eurosky, réputé plus rapide.
À faire pour vraiment corriger ce pb :
- écouter plusieurs Firehoses côté serveur dans atproto/db.ts
- est-ce que ça explique ces commentaires pas publiés ? À investiguer mais je pense que oui, au moins une partie
- si pas de commentaire capté par le serveur, et lu par le client en retour, mettre un message du style : "le réseau bluesky est un peu ralenti, votre commentaire apparaitra bientôt". Distinguer d'une vraie erreur.
gturri
pour info : j'ai re-tenté de poster des avis ce soir, et tous s'est bien passé. Et effectivement, j'observe bien que mon commentaire laissé il y a 3 jours (celui pour lequel j'avais eu une erreur) est maintenant bien dispo. (en revanche, celui que j'avais tenté de laisser -à plusieurs reprises- en mai/juin, n'est toujours pas là. Bon, tant pis pour celui ci)
laem
Bon je reprends ce qu'il faut faire pour améliorer l'algo.
- on enregistre l'avis dans l'atmosphère (le PDS de l'utilisateur)
const post = await createPost(agent, comment, osmCode, blobImages)Si la réponse est positive, c'est a priori que ça a marché.
Ma décision a été ensuite de ne pas l'écrire depuis un appel client cartes.app dans notre base de donnée à nous, car l'écriture doit venir du jetstream, qu'on écoute sur le serveur. Ainsi plusieurs serveurs cartes.app se synchronisent pour afficher le commentaire.
Le problème ici, c'est que le client attend quelques secondes pour voir si le serveur a reçu le commentaire et l'expose sur notre API de commentaires (qui est nécessaire, car ATProto n'expose pas de truc du genre). Si le jestream a du retard, alors ça plante, car on va pas faire poireauter indéfiniment l'utilisateur.
Solution
On ignore la vérification "ah c'est bon, le commentaire a été ajouté côté serveur", et on l'affiche dans l'interface en avance, car c'est l'interface qui vient de l'écrire donc elle l'a. On met un petit icône pour dire que c'est tout frais.
Si le commentaire met 5 minutes à s'afficher sur le lieu pour les autres utilisateurs, c'est pas très grave en fait. Ce qui est problématique, c'est si notre serveur est planté et n'écoute plus le jetstream. Mais bon, ça ne concerne finalement pas cet utilisateur dont le commentaire a de toutes façon été envoyé au réseau !
Je pense que mon implé initiale était faite justement pour éviter de devoir faire ça : c'est hyper important que l'utilisateur connecté voie son commentaire immédiatement. D'où l'attente qu'il soit dans la DB pour être affiché en retour sur la fiche lieu.
Dernier problème : la reconstitution de l'historique
Notre script ansible va aller prendre la DB de commentaires sur le serveur 1 pour la copier sur le 2. Comme ça il garde l'historique et écoute lui aussi le réseau, ce qui donne une architecture pseudo-décentralisée où la source de vérité reste le jetstream filtré.
Cela dit, on doit pouvoir recréer la DB à partir de l'atmosphère en cas de pépin. Bonne nouvelle, y a
com.atproto.sync.listReposByCollection. Reste à le coder. Démo ici en markdown : https://atproto.md/discover/app.cartes.commentlaem
Au passage, je remarque à quel point la page de connexion est devenue lente : en fait c'est parce qu'elle charge les images des presque 500 commentaires maintenant ! Je vais régler ça, c'est urgent.
laem
Génial, bluesky vient de sortir un moyen d'aller chercher les commentaires app.cartes.comment dans la source officielle depuis la nuit des temps. https://bsky.network/docs/jetstream-replay
n4n5
Sinon, un autre sujet: la valorisation des avis. Actuellement c'est très simple de passer a côté d'un lieu avec un super avis.
Après je suis conscient que ça rejoint le problème des avis avec étoiles, et que ça pourrait être boosté en trichant...
laem
Bcp simplifié, c'est un peu une hyperbole ^^