大規模なフォーラムインポートにおける過去の読了時間の推定

約130万件の投稿と20年にわたる歴史を持つレガシーフォーラムをDiscourseへ移行する作業を進めています。

移行が完了した時点で、すべてのユーザーの「読了時間」が0から始まってしまうことを避けたいと考えています。多くのユーザーには5年、10年、中には15年以上の歴史があるからです。

読了時間を重視するDiscourseのアプローチは個人的には素晴らしいと思います。そのため、長い歴史を持つユーザーに対しては、可能な限り最善の努力でこの統計値を計算し、移行によって貢献の「時計」がリセットされたような印象を与えないようにできれば幸いです。(ゲーミフィケーションは大きなインスピレーションや動機付けになる一方で、ユーザーが誇りに思っている統計がリセットされてしまうと、やる気を削ぐ結果にもなり得ます。)

以前は追跡されていなかったデータを完璧に表示する方法はないことは理解しています。しかし、現在の投稿数に基づいてユーザーの過去の読了時間を推定するスクリプト、あるいはインポートスクリプトに追加できる機能はないでしょうか?

例えば以下のような計算です:

PostCount = SELECT posts_count FROM posts WHERE id = (現在インポート中のユーザーID)

ReadTimePerPost = 300(秒)

RetroactiveReadTime = PostCount * ReadTimePerPost

理論的にはこれを可能にし、その数値をデータベース内の各ユーザーに関連付けて挿入することはできるでしょうか?

もし可能であれば、読了時間はどこに、どのように格納されているのでしょうか?

なお、1投稿あたり300秒という読了時間の評価はあくまで私の推定に過ぎません。正直に言えば、すべての要素を考慮するとこれはかなり低い見積もりかもしれませんが、0よりもはるかに正確です。

私は以下のようなことをすると思います。

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

私の計算が合っていれば、300 秒は 5 分です。この投稿を読み、かつ返信するのに 5 分かかったと思いますか?

まだタイミングについて十分に検討できていません。私が考えているのは、読み時間という指標は、技術的には投稿が読まれた結果として得られた時間だけを考慮するものではないということです。多くの人が大量に読み、スキミングに多くの時間を費やしますが、読みと投稿にかかる時間だけでは、そのような時間は一切考慮されません。

とはいえ、過大評価するよりは過小評価する方が良いでしょう。

私は何度もインポートを行ってきました。これまで、架空の読了時間を作成するように求められたことは一度もありません。統計はDiscourseに切り替えてから開始されることは、誰もが知っているでしょう。

あなたの時間をより価値のあることに使うなら、インポートされたユーザーに TL2 を付与するための自動しきい値を特定すること、そしてコミュニティ内で「タイトルや分類に関する適切な判断力」を持っていると信頼できる人々を手動で選んで TL3 にする方が良いでしょう。

TL の昇格は、インポートにおいて現実的に重要となり得る読み時間統計の主な用途です。