Build Story · hioDSE

两个月,从一个空仓库到
学生真的在上面练题
HKDSE 备考平台

hioDSE 是一个嵌入香港教师课堂工作流的 DSE 备考系统——老师备题、组卷、批改,学生在线练习、归档错题。这页记录它怎么从零长出来:对标行业里最成熟的商业产品,逐个功能搭过去,以及为什么这条路上几乎没有现成的轮子可以捡。

~2个月
主体开发周期
575
代码提交
2,800+
结构化题目入库
3 / 5
科目 / 角色权限

起点

为什么这东西得自己造

HKDSE 是个很窄的垂直领域。窄到什么程度——你去 GitHub 上找,几乎找不到一个能直接拿来用的同类项目。通用的题库 / LMS 系统(Moodle 题库之类)确实有,但它们不懂 DSE 的那套规矩:试卷分 Paper 1 / Paper 2 两种结构、长题要按步给分(1M / 1A / f.t. 这种分点标记)、题目中英双语并存、数学公式得用 KaTeX 渲染、答案还得配评分参考。这些东西,通用系统一个都不接。

商业上能对标的,基本只有一家:Sayo Maths(AAIL 旗下,号称 100+ 学校在用,生态里还有英文、中文写作、普通话、ICT 等一整条产品线)。但 Sayo 是闭源 SaaS——你能看到它做成了什么样,看不到它怎么做的。

于是每个功能,基本都是「盯着别人的成品,自己从零趟一遍」。下面是趟过的路。

功能逐项 · 对标与周期

做了哪些,各花了多久周期为主体开发的大致跨度,按提交记录回推,非精确工时。

01

AI 智能导入管线

约 3–4 周打通 · 全程持续迭代

整个项目里最重的一块工程,几乎吃掉了第一个月的主线。

对标
Sayo 的 PDF 导入已经能 AI 解析、不止于切图,只是识别率还不够高:实测一份真题,45 道选择题识别出 35 题、P1 实际导入 16 题,缺漏的仍需人工补齐。
我们做了
一整条 PDF → 结构化题库 的流水线:自动识别试卷类型、提取题干 / 选项 / 答案 / 配图 / 评分参考,整理成可直接入库的结构。配套断点续传、逐题重试、人工复核三态(未审 / AI / 人工确认)。
规模
靠这条管线,把 2,800+ 道题 喂进了题库——这是后面所有功能的地基。
这领域的开源现状通用文档 OCR 满地都是,但「把一份 DSE 真题 PDF 自动拆成带分点、带配图、带双语的结构化题目」这条链路,没有现成项目。每一段都得自己拼、自己调。
02

题库管理:浏览 / 筛选 / 搜索 / 批量编辑

约 1–2 周累积
对标
Sayo 有题库浏览、按 topic / 题型筛选、关键词搜索、多选批量操作。
我们做了
同样的浏览 / 多维筛选 / 中英双语搜索 / 浮动批量操作栏,外加一个支持公式的题目在线编辑器和可见性分级(私有 / 学校 / 全局)。
这领域的开源现状普通后台 CRUD 不难,但「数学题的双语 + 公式 + 嵌套子题」一上来,现成组件库基本帮不上忙,编辑器这块只能自己长。
03

组卷与考试

约 1–2 周
对标
Sayo:从题库选题组卷、分享码、计时答题、MC 自动评分、PDF 导出、DSE 模拟卷模板。
我们做了
上述全部对齐——6 位分享码 + QR、计时、MC 自动评分、PDF 一键导出、P1/P2 模板。并且多了一项 Sayo 没有的:组卷时按 DSE 难度分布做匹配。
这领域的开源现状「在线考试」轮子很多,但能输出一份排版像样、可直接打印进课堂的 DSE 卷子的,没有。PDF 导出这段是自己搭的。
04

账号体系与多角色权限

约 1 周
对标
Sayo 用 Clerk(第三方 SaaS)做登录,支持 Google / Microsoft SSO。
我们做了
自建认证 + 五种角色(管理员 / 校管 / 教师 / 学生 / 访客)+ 邮箱验证码自助注册 + 按学校隔离的数据边界 + 操作审计。每所学校一个独立子域。
这领域的开源现状认证库(如 NextAuth)有,但「学校—班级—师生」这套教育多租户权限模型得自己设计:谁能看谁的题、谁能改谁的成绩,每条边界都要亲手划。
05

多科目扩展:数学 / 英文 / 中文

约 2–3 天密集迁移
对标
Sayo 是一整条产品线——数学之外还有英文阅读听力、中文写作(墨韵)等独立产品。
我们做了
在同一个平台里,把英文(阅读 / 听力,含 Skill / Theme / Integrated 题型)中文(写作)两科接了进来,URL 按科目分流,数据互不串台。
这领域的开源现状多科目共用一套底座、又各自保留学科特性(数学要公式、英文要听力音频、中文要范文),没有现成模板,结构是自己抽象的。
06

学生端:练题 / 错题档案 / 数据看板

约 1 周
对标
Sayo 有学生 Portal、个人报告、Topic 表现可视化。
我们做了
学生现在确实可以在平台上在线练题——做卷、即时判分、看结果解析。配套错题自动归档和班级 / 个人数据看板(平均分、排名、知识点掌握)。
这领域的开源现状练题前端不稀奇,难的是「做完之后数据不消失」——把每一次作答沉淀成可分析的错题与画像,这条数据链是自己接的。
07

DSE 知识点图谱 + 变式题

约 2 周
对标
Sayo 有 AI 相似题生成(“一条延伸十条”),知识点结构也已就绪。
我们做了
先按自己逐题拆解的 DSE 数学知识点 + 真实考纲,建了一张知识点图谱——52 个知识点,带先修关系与难度映射。变式题功能再据此给 AI 指方向:改一道题时,沿哪个知识点、往哪个难度、保留哪些约束来变,而不是让模型漫无目的地改。
这领域的开源现状「让 LLM 生成相似题」现在谁都能做,但「接上从 DSE 考纲逐题拆出来的知识点图谱、让每道变式都有明确方向」这套没有现成项目——它不是模型能力,是把对考题的理解编码进了系统。
08

配套:通知 / 家长端 / 教师批改工具

约 1 周累积
我们做了
站内 + 邮件通知、家长查看入口、教师批改的评语模板与快捷工具。
这领域的开源现状这些是把平台从「能用」补到「好用」的零碎活,每件单独看都不大,但加起来是真实的工作量,且没有打包好的方案。

还没跑通的那块

课堂实时

已起步 · 暂缓打磨

方向上遇到了一点障碍

课堂实时——老师发起练习、全班在平板上作答、屏幕上实时看到每个学生卡在哪道题——是这套系统最想做成、也是和市面产品最能拉开差距的一块。这部分已经搭起了第一阶段的基建,但在产品方向上遇到了一点障碍,目前先暂缓打磨,没有继续往前推。

(这一段就先说到这。能讲的是:实时协作的底层轮子市面上有,但「课堂答题实时看板」这个具体场景,同样没有可以直接套用的现成方案。)

收尾

两个月之后

到这里,hioDSE 已经是一个跑在生产环境、自托管、有真实数据的系统:学生能登录练题,老师能导题、组卷、批改,几所学校在各自的子域里用着自己的题库和名单。底下该有的工程素养也都铺了——端到端测试、持续集成、统一的设计系统、自动生成的接口文档——这些就不展开了。

说到底,这两个月做的事很朴素:把一个成熟商业产品的大部分功能面,在一个几乎没有现成轮子的垂直领域里,自己重新长了一遍。