Estimation du temps de lecture historique pour une grande importation de forum

Je suis en train de migrer un forum legacy comptant environ 1,3 million de messages et deux décennies d’histoire vers Discourse.

Ce que je souhaite éviter, c’est que chaque utilisateur affiche un temps de lecture de 0 dès le départ après une migration réussie, alors que beaucoup ont 5, 10, voire plus de 15 ans d’historique.

Compte tenu de l’importance que Discourse accorde au temps de lecture (ce qui est excellent, à mon avis), il serait agréable de pouvoir effectuer un calcul approximatif de cette statistique pour les utilisateurs disposant d’un historique significatif, afin qu’ils ne ressentent pas que le compteur de leurs contributions a été remis à zéro après la migration. (Bien que la gamification puisse être une source d’inspiration et de motivation considérable, elle peut aussi être démoralisante lorsque les statistiques dont les utilisateurs sont fiers sont effacées.)

Je suis conscient qu’il n’existe pas de méthode parfaite pour afficher des données qui n’ont jamais été suivies auparavant, mais existe-t-il un script que je pourrais exécuter, ou peut-être quelque chose à ajouter à un script d’importation, permettant d’estimer le temps de lecture historique d’un utilisateur en fonction de son nombre actuel de messages ?

Quelque chose comme :

PostCount = SELECT posts_count FROM posts WHERE id = (identifiant de l’utilisateur en cours d’importation)

ReadTimePerPost = 300 (secondes)

RetroactiveReadTime = PostCount * ReadTimePerPost

Serait-il théoriquement possible de procéder ainsi, puis d’insérer ce chiffre dans la base de données en l’associant à chaque utilisateur ?

Si oui, où et comment le temps de lecture est-il stocké ?

Et au passage, attribuer 300 secondes de temps de lecture par message n’est qu’une estimation de ma part. Honnêtement, c’est probablement très bas, toutes choses considérées, mais beaucoup plus précis que 0.

Je pense que je ferais quelque chose comme

Post.where(user_id: user.id).where(some other stuff?).each do |post|
  PostTiming.create(topic_id: post.topic_id, post_number: post.post_number, user_id: user.id, msecs: READ_TIME_MSECS
end

Si je fais bien le calcul, 300 secondes font 5 minutes. Pensez-vous qu’il ait fallu 5 minutes pour lire et répondre à cette publication ?

Je n’ai pas encore pris le temps de réfléchir au calendrier. Ce que j’envisageais, c’est que le temps de lecture ne prend techniquement pas uniquement en compte les moments où un post résulte de la lecture. Beaucoup de gens lisent beaucoup et passent beaucoup de temps à survoler les textes, ce qui ne serait absolument pas pris en compte si l’on se basait uniquement sur le temps nécessaire pour lire et publier.

Cela dit, je préférerais sous-estimer plutôt que surestimer.

J’ai effectué des dizaines d’importations. Personne n’a jamais demandé de fabriquer de faux temps de lecture. Je parie que les gens sauront que les statistiques commencent à partir du moment où vous êtes passé à Discourse.

Une utilisation beaucoup plus précieuse de votre temps consisterait probablement à déterminer quel seuil automatique vous devriez utiliser pour accorder le niveau TL2 aux utilisateurs importés, et à sélectionner manuellement les membres de votre communauté en qui vous avez confiance pour avoir un bon jugement concernant les titres et le classement afin qu’ils débutent avec le niveau TL3.

La promotion au niveau TL est l’usage principal des statistiques de temps de lecture qui pourrait raisonnablement avoir de l’importance lors d’une importation.