云帆考试系统 v6.0:后端代码模块化拆分,本地视频播放提速

本次版本要解决的问题:单体结构带来的维护成本

v6.0.0 是一个以"内部质量"为主题的整版本号更新:没有新增业务功能,做的事情只有一件——把后端代码按业务模块拆分成子项目。对使用者来说这一版"看不见变化",但对后续所有版本和二次开发用户,这是地基翻修:模块边界清晰之后,改一个模块不必理解整个工程,二次开发时的定位成本与合并冲突都明显下降。

后端模块化拆分:分模块拆分子项目

  • 后端代码结构大调整,按业务模块拆分为子项目,代码结构更清晰;
  • 服务商名称统一:系统配置数据读取逻辑调整,服务商名称统一为 aliyun / qcloud / baidu / qiniu,配置不再因服务商写法不同而分叉;
  • 优化本地存储涉及的业务逻辑,如上传下载、文本编辑器等。

视频流式播放:本地视频支持 Range 读取

本地视频播放卡顿在私有化部署里很典型:服务器不支持 Range 请求时,学员拖动进度条要等整个文件重新加载。v6.0.0 服务端支持 Range 读取,视频流式播放落地,拖动进度条即点即播,大课件场景下体验提升明显。

对二次开发与私有化用户意味着什么

  • 模块化之后的代码更接近"按模块接手",二开团队可以只读懂自己要改的模块;
  • 服务商名称统一后,云资源在私有化环境里的替换与配置更规范;
  • 添加课程时增加课件快速预览功能,教务上传后可直接确认内容;
  • 学员考试错题增加批量删除功能,整理错题本不用逐条操作。

为什么这一版值得单独留意

翻版本记录时,v6.0.0 这类"没有新功能"的版本最容易被跳过。但对准备做二次开发或长期私有运维的团队,代码结构决定了三年后的维护成本:单体结构下,改一个上传逻辑要在整个工程里找引用;分模块之后,每个业务模块独立成子项目,改动范围、编译范围、回滚范围都跟着变清晰。评估"这套系统好不好养",这类提交记录比功能列表更能说明问题。

常见问题

v6.0.0 升级后界面有变化吗?没有。这一版集中在后端结构与播放、存储逻辑,前端界面与业务功能保持不变;升级动作主要集中在部署环节,建议按升级文档重点回归上传下载与视频播放场景。

为什么版本号直接跳到 v6.0?整版本号用于标记结构性变化,模块化拆分属于会长期影响维护方式的重构,所以用整版本号标记。

Range 读取是什么?HTTP 的按段取内容机制:播放器只请求文件的某一段而不是整个文件,服务器支持 Range 才能做到拖动进度条不必重新下载全片。

老客户升级 v6.0.0 要注意什么?结构重构可能影响定制过的代码,做过二次开发的客户建议先在测试环境合并验证,再上生产。


考试通知