前言
前段时间帮学校实现了一个党员学习平台,中间涉及了一个很关键的技术点,即学习时长的记录。在这其中,占比最大的即是视频的学习时长的记录。在网上搜索过后,发现大部分记录方案都是记录观看视频的总时长,即使反复看其中一段,也会被视为观看完毕,没有起到应有的记录作用,且没有响应的反作弊方案,于是便突发奇想自己实现一个更加健壮、智能的记录方案。
技术栈
前端
- Ant Design
- Ant Design Chart with Ant Vision G6
- Griffith
后端
- InfluxDB
- Java
设计思路
在我的设计方案中,我们最终要实现一个能完整记录用户学习行为的功能。在这个情况下,时序化数据库自然成了不二之选,但是我们要以什么格式记录用户的学习数据进入时序化数据库呢?
显然,每隔几秒记录一次用户当前的播放位置是一个不错的选择,这样可以在后续的处理中,完整的模拟出用户的状态。
但是,在这一版的设计中,有一个很大的问题,如果用户只是一直按着顺序往前观看,当然没有问题,但是如果用户往前拖动了一丝丝,哪怕一丝丝,整个记录数据就乱套了。(寄
所以正如上面的效果图中所示的那样,我们引入了 Exception 这个概念,用户每一次开始播放和停止拖动都视为一个 Exception,我们需要在记录用户当前的位置同时记录用户当前的 Exception,