前言

前段时间帮学校实现了一个党员学习平台,中间涉及了一个很关键的技术点,即学习时长的记录。在这其中,占比最大的即是视频的学习时长的记录。在网上搜索过后,发现大部分记录方案都是记录观看视频的总时长,即使反复看其中一段,也会被视为观看完毕,没有起到应有的记录作用,且没有响应的反作弊方案,于是便突发奇想自己实现一个更加健壮、智能的记录方案。

最终效果

技术栈

前端

  • Ant Design
  • Ant Design Chart with Ant Vision G6
  • Griffith

后端

  • InfluxDB
  • Java

设计思路

在我的设计方案中,我们最终要实现一个能完整记录用户学习行为的功能。在这个情况下,时序化数据库自然成了不二之选,但是我们要以什么格式记录用户的学习数据进入时序化数据库呢?

显然,每隔几秒记录一次用户当前的播放位置是一个不错的选择,这样可以在后续的处理中,完整的模拟出用户的状态。

但是,在这一版的设计中,有一个很大的问题,如果用户只是一直按着顺序往前观看,当然没有问题,但是如果用户往前拖动了一丝丝,哪怕一丝丝,整个记录数据就乱套了。(寄

所以正如上面的效果图中所示的那样,我们引入了 Exception 这个概念,用户每一次开始播放和停止拖动都视为一个 Exception,我们需要在记录用户当前的位置同时记录用户当前的 Exception,

最后修改:2023 年 10 月 08 日
如果觉得我的文章对你有用,请随意赞赏