LouanBen / wordle-fr

"Le Mot" un Wordle en français.
https://wordle.louan.me
GNU General Public License v3.0
127 stars 40 forks source link

Série cassée sans défaite ni jour raté #32

Closed Varpie closed 2 years ago

Varpie commented 2 years ago

Après avoir trouvé le mot du jour d'aujourd'hui, je vois à ma grande surprise que les statistiques ne me montrent plus une série actuelle égale à la meilleure partie et au nombre de parties jouées, malgré 100% de victoire.
Je n'ai pas non plus manqué un jour, puisque le mot d'hier a été découvert il y a 12 heures et que la série affichée était alors correcte.

Aujourd'hui, en arrivant sur le site, j'ai remarqué qu'il y avait un nouveau design, ce qui implique un nouveau déploiement du code, qui me semble être le principal suspect de ce problème. Ayant fini ma partie vers 1:10, je ne pense pas qu'il s'agisse d'un problème de fuseau horaire.

LouanBen commented 2 years ago

Ce n'est pas un problème dû à la dernière PR, mais un problème qui est là depuis le début, pour une raison que j'ignore encore !

https://twitter.com/WordleFR/status/1481947512785285120

(Si quelqu'un trouve la source du problème, hésitez pas. Sinon je vais chercher dans la semaine)

richie3366 commented 2 years ago

Je pense avoir trouvé les lignes coupables : https://github.com/LouanBen/wordle-fr/blob/main/src/components/Game.vue#L451-L454 isStreak est une variable totalement locale au composant, et non-écrite dans le localStorage. J'imagine donc que le moyen de reproduire le problème serait de gagner une partie (avec n'importe quel score), d'attendre le mot suivant, rafraichir la page pour qu'il apparaisse, et de rafraichir une nouvelle fois la page à n'importe quel moment de la partie (avant de valider le mot à trouver). En imaginant qu'on ait commencé à un streak & maxStreak à zéro, on arriverait à des stats streak=1 & maxStreak=1 ; au lieu de streak=2 & maxStreak=2)

Et sinon, je me demande encore à quoi sert cette ligne : https://github.com/LouanBen/wordle-fr/blob/main/src/components/Game.vue#L471

Je me pencherai sur un correctif dans la soirée. N'hésitez pas à commenter entretemps si vous voyez quelque chose d'intéressant.

Varpie commented 2 years ago

Le problème a de nouveau eu lieu aujourd'hui, et si hier j'avais un doute sur le fait d'avoir rafraichi la page au milieu de la partie, aujourd'hui je suis certain de ne pas l'avoir rafraichie une fois la partie commencée. Il semblerait donc que ça ne vienne pas (que?) du fait de rafraichir 2 fois.

Pour information, je joue sur Firefox sur Android.

richie3366 commented 2 years ago

Je viens de repro en tentant d'abord de ne reload qu'une fois (pour faire apparaître la grille vide du nouveau mot), aucun souci de streak. Puis, avec reload supplémentaire sur une partie suivante, le streak s'est cassé.

@Varpie Ton retour est confusant mais je te crois sur parole. J'en tiens compte et j'espère que mon fix (qui va plutôt être une nouvelle implémentation du streak) règlera aussi ce cas-là.

J'en profite pour préciser que j'ai l'intention d'inclure un auto-fix des streaks précédents. À l'initialisation, s'il y a une incohérence de streak de détectée (grâce aux données des parties précédentes), les données se réajusteront sur le recalcul. C'est une opération très très peu gourmande, de surcroît sur seulement une quinzaine de parties. Je le retirerai plus tard, après un temps suffisant pour que les utilisateurs impactés retournent sur l'app entretemps.

LouanBen commented 2 years ago

J'en profite pour préciser que j'ai l'intention d'inclure un auto-fix des streaks précédents. À l'initialisation, s'il y a une incohérence de streak de détectée (grâce aux données des parties précédentes), les données se réajusteront sur le recalcul. C'est une opération très très peu gourmande, de surcroît sur seulement une quinzaine de parties. Je le retirerai plus tard, après un temps suffisant pour que les utilisateurs impactés retournent sur l'app entretemps.

Tu es incroyable @richie3366, j'osais pas te le demander mais je réfléchissais à si c'était possible de "sauver" les stats des gens sur deux semaines. C'est trop bien que t'ai réussi !!

richie3366 commented 2 years ago

C'est mergé et très bientôt en prod. L'auto-fix rétroactif ne s'appliquera qu'à la fin d'une prochaine partie (qu'elle soit gagnée ou perdue).

Je laisse ouvert au cas où le problème persisterait (ou présenterait des effets de bord).

Varpie commented 2 years ago

Après la partie d'aujourd'hui, ma série est revenue, donc cette partie semble au moins bien marcher avec 100% de victoire et sans interruption. Merci @richie3366 !