更新日志
记录每次更新的内容
v0.5.45
2026-09-20 23:43:11
修复
- 模拟卷1-5、简单卷1-4:阅读程序部分题目16标注为1分特殊分值,总分40.5→40,与CCF官方评分标准对齐
- 2025真题:题目16补标(1分),修正历史考试记录50条(total_score 100.5→100)
- 2023/2024真题:修正历史考试记录52条(total_score 97.5→100),补齐特殊分值题(判断2分/选择4分)的加分
- 2022真题:修正历史考试记录33条(total_score 99→100),补齐Q27(4分)的加分
v0.5.44
2026-09-19 22:49:50
优化
- 首页倒计时条改为 2026 真题估分引导(考试已结束),文案「2026 真题已上线,立即估分!」+ 按钮链接到考试列表
- 考试列表排序优化:真题优先于模拟卷/简单卷,csp-j-2026 置顶
v0.5.43
2026-09-19 22:29:54
新增
- 新增 2026 年 CSP-J 初赛真题(csp-j-2026.md),共 43 题 100 分,从 PDF 转换为 markdown 格式,所有答案和解析已补全
- 统一 2022/2023 年程序理解代码块填空标记为
____①____格式,与 2025/2026 年保持一致
题目纠错
- csp-j-2023 第10题(哈夫曼编码):解析合并过程错误(c(12) 与 ab(14) 合并、d(13) 与 e(16) 合并),且给出非合法前缀码(e=10 是 d=101 的前缀),修正为正确的 5 步合并过程和合法编码
- program-reading:修复乘号
*被 marked 当作斜体标记解析导致乘号消失的问题,转义为\* - questions.ts:修复大题标记 regex
^(\d+)$无法匹配(2)(编辑距离)这类带描述的大题标记,导致题目 37 错误包含下一大题代码
v0.5.42
2026-09-18 09:34:39
题目纠错
- gcd-lcm 第37题:答案 C→B,
2^100 mod 10^9+7 = 976371285 - binary-search-answer 第9题:原选项 A「根据问题确定」与 D「以上都可以」含义重叠导致答案模糊,改为互斥选项,答案明确为 B
题目重出
- gcd-lcm:重出 27 道跑题/重复题,原 Q3-Q20 中前 5 道题循环重复 4 次(gcd/lcm/快速幂/组合数/lowbit 识别),且 Q23-25、Q29、Q34、Q36-38、Q40 均为快速幂/lowbit/欧拉函数等跑题。新题覆盖 GCD 实现变种(迭代/更相减损术/Stein 二进制 gcd)、递归追踪(调用次数、参数传递)、数学性质(交换律、结合律、gcd(b,a%b)=gcd(a,b)、gcd(0,a)=a、gcd(k·a,k·b)=k·gcd(a,b))、LCM 防溢出与公式(gcd×lcm=a×b)、应用题(周期相遇、长方形分割、分数约分、班车发车、木棒截段、分数加减、齿轮咬合)、多个数 gcd/lcm、大数与互质等考点
- program-reading 第12、16 题:Q12 原用因子个数==2 判断素数与 Q3 思路重复,改为统计数字位数;Q16 原为统计因子个数与 Q3 完全相同,改为判断回文数
v0.5.41
2026-09-18 01:06:52
修正
- Markdown 渲染:修复含撇号的 LaTeX 公式渲染失败(如扩展欧几里得算法中的
x'、y'、f'(x)),marked 将撇号双重转义为 HTML 实体后 KaTeX 无法解析 - 程序阅读知识点:例题2递归追踪中乘号
*被 Markdown 斜体语法吃掉导致显示为4f(3)=43f(2),转义修复
题目纠错
- 贪心知识点:贪心与 DP 对比表中"无后效性"描述不准确,改为"是否回溯"并补充最优子结构说明
- 常量与赋值知识点:例题1
++a + a++是未定义行为,原解析给出确定结果有误导性,改为说明 UB 并给出正确写法 - trie:
query返回最大异或值一题答案 A→C,修正解析 - 容斥原理:容斥计算题答案 B→A,修正解析
题目重出
- NOI 大纲:删除主观无意义题 Q19(广东竞争)、Q20(备考建议),替换为客观题 CSP-J/S 复赛评分机制、NOIP 考试时长 3.5 小时
- 组合数、快速幂、简单概率:三个数据板块重出跑题,替换为切题考点
- 素数筛法:Q25 从 lowbit 跑题改为线性筛求 1~30 素数个数;全文重出 26 道跑题/重复题,覆盖筛法复杂度、埃氏筛优化原理、线性筛核心性质(break 作用、最小质因子标记)、线性筛应用(欧拉函数/最小质因子/莫比乌斯函数)、区间筛、素数定理等考点
v0.5.40
2026-09-16 23:47:33
修正
- 知识点详情页:Markdown 渲染流程缺少
processMathInHtml调用,导致含<的 LaTeX 公式(如$a < b^d$)被 KaTeX 误解析为实体报错,已补上服务端渲染并修复客户端实体还原 - 练习题回看模式:点击「上一题」回到已答题目后,反馈按钮通过
dispatchEvent发送无人监听的事件导致点击无效,改为直接操作 DOM 打开反馈弹窗 - 指针知识点:
*在有序列表项中被 Markdown 误解析为无序列表标记,已转义修复
题目纠错
- arrays-2d 第15题:答案 C(20)→B(19),
i>j筛选下三角不含对角线,sum=4+7+8=19 - arrays-2d 第17题:选项 C(35)→C(34),
i>=j筛选下三角含对角线,sum=1+4+5+7+8+9=34
v0.5.39
2026-09-16
新增
- 反馈管理:管理员可在反馈详情弹窗中删除无意义的测试反馈,用户也可删除自己的反馈
v0.5.38
2026-09-16 00:39:43
修正
- 学习排行榜反馈榜:精简表格列,仅保留「已采纳」和「反馈积分」两列,隐藏无用的知识点和练习题列
- 首页 CSP 初赛倒计时进度条:由「已过时间比例」改为「剩余时间比例」,剩余 2 天时进度条约 10%,与文字语义一致
题目纠错
- struct 第24题:答案 A→C,姓名字典序 Jerry < Tom 而非 Tom < Jerry
- char-arrays 第35题:答案 A→B,erase 后剩余 "ello" 而非 "llo"
- templates 第7题:答案 D→A,程序输出为 25
- functions 第21题:答案 B→A,cout 不显示浮点末尾 .0
- functions 第32题:答案 A→B,cout 不显示浮点末尾 .0
- gpp-compiler 第13题:更新解析,C++25 从未作为标准版本
- variables-types 第36题:
auto c = 10L修正为auto c = 10LL - prime-sieve 第39题:答案 B→D,补充正确的幂次迭代解析
- variables-types 第17题:选项代码用反引号包裹,避免
static_cast<int>中的模板参数被当作 HTML 标签吞掉
v0.5.37
2026-09-14 00:13:35
优化
- 班级成绩表:试卷列改为勾选模式,可灵活选择要查看的试卷,汇总列随勾选动态重算
- 班级成绩表:试卷勾选状态本地缓存(按班级区分),下次打开自动恢复
- 班级成绩表:支持点击表头排序,循环切换 默认→倒序→正序
- 带圈数字 ①②③ 改用 CSS 圆圈渲染,解决跨平台字体缺字与代码块内显示过小问题
修正
- 答题详情跳转参数:补充 user_id 与 exam_slug,record 改为 record_id
- 班级成绩表列名重复:保留年份前缀区分不同年份试卷
- csp-j-2026-mock-4 第13题 WPL 答案错误:53 修正为 60(哈夫曼非叶节点权之和 5+10+17+28=60)
v0.5.36
2026-09-13 02:44:39
新增
- 教师端班级成绩汇总页:按班级展示所有学生的历次考试成绩矩阵,含通过/未通过颜色区分、考试次数/最高分/平均分等汇总列,点击成绩可跳转答题详情
- 教师端学生管理"查看成绩"弹窗:操作菜单新增查看学生历次考试成绩入口
修正
- 模考页面 csp-j-2024 导航排版:阅读程序/完善程序按子段(prefaceHeader)动态划分,移除硬编码分隔符,适配所有试卷结构;单项选择题恢复 5-5-5 布局
- 答题详情页选项长文本无法换行导致排版错乱:opt-review 从 inline-flex 改为 inline-block
- 答题详情跳转 404:路径由 /exam/review 修正为 /exam-review
- 答题详情跳转缺少参数:链接补充 user_id 和 exam_slug,参数名 record 修正为 record_id
- 班级成绩表列名重复:保留年份前缀,如"2022 初赛"、"2026 模拟卷 1"
- 班级成绩表仅显示该班级有人考过的试卷
- 历史 exam_records 分数计算错误:运行迁移脚本重新计算 43 条记录的 score/total_score/passed
v0.5.35
2026-09-12 09:42:00
修正
- 模考页面点击"开始考试"后题目和导航为空、section 描述显示 undefined 的问题:startExam 函数中 exam 变量未定义导致 ReferenceError,阻断后续渲染逻辑执行
- 确认弹窗题型分布为空的问题:服务端 metadata 补充 sections 字段,客户端初始化移除覆盖
v0.5.34
2026-09-12 08:50:00
优化
- 模考页面题目懒加载:列表页不再解析全部 13 套试卷题目,只读取元信息,页面加载从数秒降至几十毫秒;点击"开始考试"时按需加载对应试卷,服务端缓存解析结果
v0.5.33
2026-09-10 23:57:00
修正
- GESP 2 级标注修正:编译与运行概念、常量与变量赋值、条件语句、循环语句从 1 级改为 2 级,2 级知识点从 1 个增至 5 个
- 教师端学生详情页每日 3 题连续天数显示 0 的问题:复用用户端 streak 计算逻辑,今天未完成不再中断连续
v0.5.32
2026-09-10 00:20:00
新功能
- 知识点新增 GESP 1-8 级标签:对照 GESP 编程能力等级认证标准,为 44 个知识点标注对应级别,首页思维导图和知识点详情页均展示
- 首页过滤器:支持按 CSP-J / CSP-S / GESP 勾选过滤,非目标内容置灰但保留全局结构
优化
- 知识点卡片固定等高(154px),标签换行最多两行,进度文字移至进度条上方且等宽
- section 头部 sticky 固定,过滤器滚动时保持可点击
- 锁定/置灰卡片禁用 hover 动画,仅依赖链接可点击且高亮显示
- 标签颜色体系重构:CSP-J 蓝、CSP-S 红、GESP 1-8 级从冷到暖递进,区分度更高
修正
- 素数判断与筛法题目 39 答案由 B(12) 修正为 D(16),补充不去重的计数说明
v0.5.31
2026-09-09 00:10:00
新功能
- 错题本弹窗重做:点击错题直接弹窗查看详情,支持重新作答后显示正确答案与解析,无需跳转新页面
- 错题弹窗支持键盘快捷键:A/B/C/D 快速选择答案,回车/空格提交,方向键切换上下题,ESC 关闭弹窗
性能优化
- 新增 Markdown 解析内容缓存,避免重复解析同一题目文件,错题详情接口响应速度大幅提升
- Shiki 语法高亮器服务启动时预加载,消除首次请求冷启动延迟
- 每日一练状态接口新增缓存,响应时间从秒级降至百毫秒级
优化
- 错题弹窗底部增加「查看完整知识点」快捷入口,可一键跳转到对应知识点页面
- 主按钮文字颜色调整为深色,提升绿色背景下的对比度和可读性
v0.5.30
2026-09-08 09:40:00
性能优化
- 定级测试冷加载优化:服务启动时预热题库缓存,消除首个请求 35 秒等待
- 教师学生列表 SQL 优化:子查询限定该老师学生范围,避免全表聚合(3s → <200ms)
- AI 助教流式响应加 15 秒超时和降级提示,避免长时间无响应
- 生产环境数据库连接池扩容 10→20,减少并发排队等待
优化
- 教师申请详情页已通过的老师显示班级数和学生数
- 错题本分类标签补全中文映射,初赛区分入门(J)和提高(S)
修正
- 清理数据库中 38 条错题答案脏数据(完整选项文本归一化为单字母)
v0.5.29
2026-09-07 11:52:00
优化
- 学生列表操作列改为下拉菜单,新增积分列,支持表头三态排序(降序/升序/默认)
- 学生列表支持自定义分页(10/20/40/100 条/页,默认 20)
- 思维导图知识点依赖关系全面优化:清理 23 处冗余依赖声明,新增位运算基础依赖运算符与表达式
修正
- 已完成的知识点不再显示锁定状态(历史遗留完成记录不再被前置依赖重新锁定)
- 位运算基础练习题重写:替换与位运算无关的重复题目为 20 道真正的位运算题
v0.5.28
2026-09-07 00:55:00
新功能
- 思维导图锁定节点的前置知识可点击跳转:平滑滚动到目标节点并播放弹跳动画
优化
- 批量导入 CSV 自动检测表头,默认密码改为纯数字
- 考试成绩页统计卡片缩小尺寸,支持更多试卷展示
修正
- 完善 S 级初赛知识点前置依赖关系
- CSP-J 真题答案与解析纠错(2022/2023/2024/2025)
v0.5.27
2026-09-06 00:33:10
新功能
- 教师学生列表新增转班功能:操作列点击转班,弹窗选择目标班级或移至未分班
- 考试详情页自动重算分数:进入详情页时用最新答案重新评分,若与数据库不一致则自动更新并提示
优化
- 批量导入 CSV 自动检测表头:包含姓名/邮箱等关键字视为表头自动跳过,无表头则从第一行开始解析
- 批量导入默认密码改为 8 位纯数字,方便学生首次登录输入
- 水平测试提交确认弹窗修复层级偏移问题,按钮居中并添加 hover 动效
- CSP-J 2025 真题解析纠错:第 4、8、12、19、38、39-43 题
v0.5.26
2026-09-05 08:09:00
优化
- 后台考试成绩页统计卡片可点击筛选:点击卡片切换到对应考试,再次点击取消筛选
- 筛选后卡片保持显示,支持快速切换不同试卷
- 选中卡片高亮(绿色边框 + 淡绿背景)
- 统计卡片尺寸优化:更紧凑,标题居中固定两行高度,容纳更多试卷
v0.5.25
2026-09-05 00:50:00
新功能
- 教师可重置学生密码:支持自定义密码或随机生成,重置后弹窗展示新密码并支持一键复制
- 批量导入支持账号前缀:填写前缀后生成「前缀+4位编号」格式账号(如 hnai0001),自动跳过已有编号从下一个开始
- 学生管理列表新增账号列:账号作为独立列显示在最前面,搜索也支持按账号查找
优化
- 后台管理用户列表新增账号列
- 个人资料页支持编辑用户名
- 批量导入弹窗支持 ESC 键关闭
- SameSite cookie 设为 lax,消除浏览器警告
v0.5.24
2026-09-04 19:07:00
新功能
- 教师批量导入学生:支持 CSV 模板下载、文件上传或粘贴内容,自动生成用户名(班级名拼音_序号_姓名拼音)和随机密码,导入后可下载账号密码表分发给学生
- 登录支持用户名:新增 users.username 字段,登录时邮箱查不到自动按用户名查,适配批量导入的学生账号
- 知识点页面分享按钮:讲解和练习 tab 均有分享按钮,点击复制链接,练习模式下附带当前题号,对方打开直接定位到同一道题
- 分享链接预览模式:带 shared=1 参数的链接打开后,未学完知识点也能进入练习查看题目,但不能提交答案,引导先完成学习
优化
- 后台管理菜单调整:学生管理移到后台管理前面
- 下载模板文件名自动加上班级前缀,并过滤 Windows 文件名非法字符
- 批量导入弹窗增加限制提示:单次最多 200 人、邮箱重复自动跳过、用户名生成规则
Bug 修复
- 修复分享按钮 execCommand 废弃警告,移除降级兜底改为弹窗提示
样式
- 分享与收藏按钮并排展示(分享在左),图标大小视觉统一,间距 10px
- 修复分享按钮点击后高度跳动问题
v0.5.23
2026-09-04 01:08:00
新功能
- 支持重复考试:同一试卷可多次参加,卡片显示最佳成绩和考试次数,复盘页可切换查看历次记录
- 考试列表页考完后自动刷新卡片状态(bfcache 恢复时重新拉取已考记录),无需手动刷新
Bug 修复
- 修复考试计时器切 tab 后时间冻住:计时器从相对递减改为绝对时间计算,切回 tab 立刻显示正确剩余时间
- 修复复盘页空白:脚本未解构 allAttempts 导致 ReferenceError,页面内容不渲染
优化
- 交卷最短时间从 30 分钟缩短为 10 分钟
样式
- 试卷详情按钮改用通用样式(surface 底色 + 绿色 hover),左右按钮等宽居中
v0.5.22
2026-09-03 12:32:00
新功能
- 老师备注功能:学生列表和详情页支持为学生设置备注名,列表中优先显示备注名(绿色高亮)+ 原昵称
- 备注编辑弹窗:自定义设计,保存/取消按钮,Enter 提交,Esc 关闭,锁定背景滚动
优化
- 统一全站 textarea 提交行为为 Ctrl/Cmd+Enter 提交、Enter 换行(反馈页、管理员回复、教师申请拒绝、知识点反馈)
- AI 助教对话保持 Enter 发送不变
Bug 修复
- 修复全站数据库时间戳时区错误:UTC 时间被当本地时间解析,导致显示比东八区晚 8 小时(影响反馈列表、收藏、错题本、考试记录、教师申请等页面)
v0.5.21
2026-09-03 09:44:00
Bug 修复
- 全部 J/S 级知识点 dependsOn 与 frontmatter prerequisites 完全对齐(共 46 个知识点修正)
- 分类锁分支补充水平测试解锁按钮:当知识点有 dependsOn 时,即使分类被锁也显示解锁按钮
- 通过水平测试可同时绕过依赖锁和分类锁(isCategoryLocked 加入 placementPassedSlugs 检查)
- 倒计时进度条周期从 3 月起算改为考试前 30 天,每天可见明显增长
- bfcache 恢复时重新计算倒计时进度条
v0.5.20
2026-09-03 09:13:00
Bug 修复
- 水平测试通过记录刷新后丢失:knowledge-slugs API 未查询 knowledge_placement_passes 表,导致刷新后已解锁的知识点重新锁定
- 程序阅读技巧(program-reading)依赖不一致:constants.ts 无 dependsOn 但 frontmatter 有 prerequisites,导致锁系统与详情页展示不同步、无法发起水平测试
- 初赛训练分类锁过严:preliminary-exam 要求学完全部 15 个 C++ 知识点才能解锁,已改为由依赖链控制解锁
- 首页每日 3 题卡片加载前占空白:新增 loading 类(height:0),数据就绪后弹出动画将搜索框顶下
- NPS 问卷统计分组阈值调整:贬损者 0-4 分、中立者 5-6 分、推荐者 7-10 分
- 教师页面学生列表抽屉死代码清理(openStudentDrawer 等 TS 警告)
样式
- 首页搜索框间距调整:顶部 32px、底部 24px(原 0/48px)
v0.5.19
2026-09-03 00:29:00
新功能
- 新增教师端学生学习详情页(/teacher/student/[id]):概览统计卡片、90 天学习活跃度热力图(GitHub 风格日历网格)、按分类的知识点掌握度(J/S 切换)、考试成绩历史(可跳转复盘页)、每日 3 题完成情况网格、错题分析(分类分布 + 未掌握错题列表)、AI 助教使用统计(分类分布 + 最近对话)、收藏列表
- 新增管理员重置用户密码功能(管理员用户列表操作菜单中)
- 管理员用户列表操作列从三个按钮改为下拉菜单
- 管理员账号现拥有教师权限,可直接创建班级、招收学生、查看学生详情
Bug 修复
- 管理后台考试记录:从考试详情返回后加载中蒙层不消失(bfcache 恢复时未重置 loadingDepth)
- 点击试卷详情时出现两个加载动画(按钮 spinner + 全屏遮罩同时显示)
- 管理员加载蒙层 HTML 内同时放置两个 spinner 元素
- 考试筛选下拉框返回后不保留选中状态(未持久化 examFilterSlug)
- 带筛选参数时下拉框选项变空(API slug 分支未返回 examStats)
- 教师页面班级管理弹窗打开时背景可滚动
- 教师页面班级选择从下拉框改为横向 tab 展示,支持自动换行
样式
- 管理员用户列表操作列宽度从 80px 缩减为 56px
- 知识点掌握度、错题分析分类名使用中文名称(映射 CATEGORIES)
v0.5.18
2026-08-30 23:48:00
题目纠错
- Mock-5 模拟卷修复 9 处问题:Q6 拓扑排序选项全部合法(重新设计选项 B)、Q17/Q19/Q30 答案错误、Q11 运算符优先级解析错误、完善程序 Q34/Q35/Q39/Q40 占位符格式或缺失
- 栈练习题 Q29 答案错误(B→D),修正栈双反转追踪分析
- Mock-3 Q5 循环队列题目数据错误(front=10, rear=4, M=7 公式结果为 1 不在选项中),rear 改为 0 后元素为 Q[4]Q[5]Q[6]Q[0] 共 4 个,答案 B 正确
- 修复 Shiki 行号对无语言标识的示例代码块也生效的问题(仅对 cpp 等有语言标识的代码块添加行号)
格式统一
- Mock-2/3/4/5 四份模拟卷完善程序占位符统一为 ____①____ 圈号格式,每道大题从 ① 开始重新编号,题目描述统一为"①处应填?"
Bug 修复
- 每日三题兜底选题不检查黑名单导致连续多天出同一道题(pickSimpleByLevel 最终兜底直接返回 computer-history/1,不检查 7 天去重黑名单)
样式
- 考试页与复盘页答题卡圆点整体右移 12px,与左侧 section 标题对齐
v0.5.17
2026-08-29 15:20:00
题目纠错
- J 组变量与数据类型:修复有符号/无符号比较相关题目的答案错误
- J 组计算机发展史:修正 CSP 推出时间解析描述(2019 年由 CCF 推出)
v0.5.16
2026-08-28 00:23:11
功能
- 考试复盘顶栏支持点击收缩/展开,收缩后显示紧凑分数与通过徽章,为答题区域腾出更多空间
- 首页每日三题卡片加载完成后弹出动画(淡入+上移+轻微放大),替代 skeleton → 真实内容的生硬切换
样式
- 首页每日三题与反馈弹窗的代码块新增复制按钮,样式与助教页面保持一致
- 修复首页每日三题代码块 Shiki 行号错位(code 缺 position:relative 导致行号定位参照物错误)
- 修复考试复盘解析区代码块行号排版错乱,复用练习界面行号样式
- Hero 代码块增加微浮动动画(4s 周期上下浮动)+ hover 上移放大交互
管理后台
- AI 分类分布统计只统计 8 月 26 日及以后数据(分类器 8/25 升级,之前数据不准)
- AI 分类分布标签从中文改为英文显示(General / Concept / Debug / Problem)
题目纠错
- J 组双指针:纠正 6 道题错误答案、3 道题错误选项值,清理"修正答案"临时标注
- J 组图论基础 Q39:Kruskal MST 选项 A 10→11,实际权值=1+2+3+5=11
- J 组优先队列 Q35:答案 B→A,中位数 (4+3)/2=3(整数除法)
- J 组树基础 Q38:答案 C→A,满二叉树无度为 1 的节点
- J 组程序阅读 Q38:解析修正 15 的二进制为 1111
- J 组素数筛 Q33:修复重复选项(B/D 与 A 同为 43),改为 44/33
- S 组倍增法 Q12:答案 B→D,ST 表查询第二区间起点为 r-(1<<k)+1
- S 组 IDA* Q4:答案 D→C,min_exceed 是 dfs 局部变量,应使用返回值 result
- S 组程序阅读 Q38:答案 B→A,代码输出完整 3n+1 序列而非末尾片段
- S 组 Manacher Q9:选项从 5 元素改为 7 元素,匹配 "#a#b#a#" 长度,正确 p=[1,2,1,4,1,2,1]
- S 组 Manacher Q22:答案 A→B,"#a#a#" 的 p 数组为 [1,2,3,2,1]
- S 组后缀数组 Q3:答案 D→B,倍增法+基数排序时间复杂度为 O(n log n)
- S 组差分约束 Q8+Q25:清理修正答案,Q25 dist[v]=-∞ 答案 B→A(存在负权环,系统无解)
- S 组线性 DP Q10:清理修正答案,最长不上升子序列长度=2
- S 组分组背包 Q14:清理修正答案,最大价值=8
- S 组 STL 容器 upper_bound erase:答案 B→A,删除 4 后剩余 {1,2,3,5}
v0.5.15
2026-08-26 01:11:00
数据一致性
- 每日 3 题提交引入数据库事务(withTransaction),三步写操作(user_answers INSERT + daily3_records UPDATE + user_mistakes UPSERT)原子化,任一步失败整体回滚,杜绝部分写入导致的数据漂移
- DB 层新增事务支持:TxDB 接口 + PoolDB.withTransaction,单连接内 START TRANSACTION / COMMIT / ROLLBACK,连接由连接池 finally 归还
数据库
- user_answers.user_answer / correct_answer 从 VARCHAR(256) → MEDIUMTEXT → VARCHAR(32)(先放宽清理历史脏数据,再收回定长,行格式回 inline 减少回表 IO)
- daily3 提交链路只存答案字母(A/B/C/D 或 对/错),不再存完整 HTML 选项(含 KaTeX 渲染产物),根治 ER_DATA_TOO_LONG 溢出
- 清理 user_answers 表 7769 行 + daily3_records 表 184 行历史脏数据(LEFT(user_answer, 1) 归一化)
v0.5.14
2026-08-25 23:09:00
助教
- AI 回复气泡展示本次回答使用的模型简称(MiMo / DeepSeek),标签持久化到对话消息表,查看历史对话也能看到
- 对话消息新增时间戳显示(MM-DD HH:MM),在气泡外部下方右对齐,内容少时不再溢出气泡边界
管理后台
- 统计概览新增"用户活跃时段分布"柱状图,24 小时维度,top3 高峰标红,鼠标悬浮显示时段+人数
- 支持切换"近 7 天 / 近 30 天"时间范围
- 统计改为综合活跃度:UNION 所有学习行为表(答题/知识点/打卡/收藏/错题/考试/反馈),跨表去重用户数,反映真实活跃时段而非仅刷题时段
- 修复日/周/月留存统计写法不一致(统一用 COUNT(DISTINCT user_id))
- 修复趋势图求和被字符串拼接污染导致数值异常大(如 010021051116)
修复
- 反馈提交 API 返回 500(INSERT 未显式补 reply 字段值,严格模式拒绝)
合规
- 底部备案信息支持按域名显示不同内容(默认 IP/未匹配 vs passcsp.com 域名)
v0.5.13
2026-08-25 01:05:00
安全加固
- 答题 API 不再信任客户端正确答案,改由服务端从题库源文件校验,防止篡改答案刷题刷榜
- 考试提交 API 处理并发重复提交,捕获唯一键冲突返回 409,避免并发刷分
代码质量
- 消除全站 18 处静默吞错(.catch(() => ) / 空 catch),统一改为 console.error/warn 日志记录,便于追踪数据库写失败与浮动 Promise 异常
助教
- 修复 AI 分类器几乎全部落到"通用问答"的问题:LLM 输出改用正则提取关键词(容忍标点/引号/思考链),新增 problem 规则预判,concept 放宽长度限制,debug 补充 C++ 代码特征识别,分类超时 2s→3s
- AI 回复气泡展示分类器分类结果(题目/概念/调试/通用),标签显示在头像下方,四色配色区分
- 分类信息持久化到对话消息表,切换/查看历史对话也能看到每条 AI 回复的分类标签
- 流式输出不再强制拉到底部:用户向上查看历史内容时停止自动跟随,滚回底部附近恢复跟随
- 首个 token 到达前显示 loading 占位,消除回复气泡几秒空白
修复
- 后台"执行待应用迁移"成功后按钮一直转圈不恢复
v0.5.12
2026-08-24 19:00:00
教师系统
- 新增教师认证申请-审批流程,学生可提交认证申请,管理员在后台审批
- 新增学生管理页面:班级 CRUD、邀请码生成/吊销/删除、学生学习数据查看
- 班级名随机生成器,支持 CSP 级别、科学家、吉祥物等 6 种风格
- 同一老师下班级名不允许重复(前后端双重校验)
- 邀请码列表新增彩色班级标签,一眼区分所属班级
- 绑定老师后自动隐藏教师认证入口(服务端预判避免闪烁)
个人中心
- 「我的老师」区块:邀请码绑定/解除,改用自定义 toast 和确认弹窗替代系统弹窗
- 调换「我的老师」与「教师认证」区块位置
- 确认弹窗打开时锁定背景滚动,支持 ESC 关闭
管理后台
- 统计概览新增「教师与班级」数据组:认证教师数、待审批申请、班级总数、绑定学生数、邀请码统计
- 限制后台管理仅 admin 角色可访问,移除 teacher 权限
v0.5.11
2026-08-22 16:10:00
每日 3 题
- 修复当天未答题时连续签到天数被误清零的问题
- 修复答题记录写入失败时仍被标记为已完成,导致热力图数据缺失的问题
- 悬浮按钮跳转时卡片不再被导航栏遮挡
账号安全
- 账号注销超过 7 天宽限期后自动彻底删除,释放存储
管理后台
- 新增数据库迁移面板,可在后台直接管理 Schema 迁移
系统优化
- 修复数据库迁移解析和数学公式渲染的若干 bug
- 引入自动化测试框架,提升代码质量保障
v0.5.10
2026-08-22 00:54:32
每日 3 题
- 新增「每日 3 题」功能:首页卡片入口,连续答题累计 streak 连胜, 完成后还可获得 AI 助教额度奖励;支持单选 / 多选 / 判断三类题型
- 卡片交互升级:以琥珀色高亮样式常驻首页,不再需要展开/折叠; 各种屏幕宽度下都能完整显示进度条和「冲刺 1 题」按钮
- 答题流程更聚焦:去掉「上一题」「稍后继续」按钮,三题一气呵成
- 题目里的代码块格式修复:首行对齐更整齐,视觉更舒适
- 提交稳定性提升:不会误弹「本题已答过」提示,答题提交不再出错卡住
- 新增键盘快捷键: A/B/C/D 一键选中对应选项;T / 对 / √、F / 错 / × 快速做判断题; Enter 提交答案或跳下一题 / 查看结果;Esc 关闭答题弹窗
首页
- 新增 CSP-J 初赛倒计时:按天 / 时 / 分 / 秒实时刷新,把握备考节奏
管理后台(老师 / 教练)
- 新增「AI 分析」页:查看 AI 助教使用情况与消耗明细
- 活跃度图表拆为 日 / 周 / 月留存 三个维度,新增昨日、上周、上月数据对比
- 在线人数统计包含未登录的浏览学生,能更真实地反映站点活跃水平
思维导图
- 解锁按钮移到知识卡片右下角,不再遮挡知识点正文
- 锁定状态的遮罩更通透,仍然可以清楚看到整张知识结构图
题库与内容
- 修正若干题目的标准答案
- 知识点与题目的说明文案整体润色,阅读更顺畅
v0.5.9
2026-08-19 09:21:09
账号安全
- 新增账号删除功能(软删除 + 7 天宽限期):学生角色可在个人资料页 「账号操作」中自助删除账号,需通过复选框同意 + 昵称匹配 + 密码校验 + 10 秒倒计时四重确认;期间管理员可恢复,到期后物理删除
- 删除时自动匿名化邮箱 / 手机号 / 昵称,释放唯一键占用,
密码加
DELETED:前缀防止删除状态下登录 - 认证、授权、统计等 40+ 查询点统一添加
deleted_at IS NULL过滤, 已删除用户立即无法登录、做题、上榜
管理后台
- 用户列表新增状态切换(活跃 / 已删除 / 全部),已删除用户显示 红色状态徽章 + 宽限期倒计时 + 恢复按钮
- 代登录接口拦截已删除用户,返回明确错误提示
- 用户列表表格固定列宽 + 文本截断,消除水平滚动条
个人资料
- 「账号设置」重构为「账号操作」:退出登录与删除账号按钮等宽对称排列, 复用统一按钮样式
用户协议与隐私政策
- 新增《用户协议》页面(
/terms):涵盖服务说明、账号责任、 使用规范、知识产权、免责声明、未成年人保护等 11 个章节 - 新增《隐私政策》页面(
/privacy):涵盖信息收集与使用、 存储保护、Cookie/会话、用户权利、第三方共享等 11 个章节 - 页脚右下角添加「用户协议」「隐私政策」链接
v0.5.8
2026-08-18 00:22:19
管理后台
- 考试管理列表行新增可点击交互:点击任意位置直接进入对应试卷的答题界面
预览模式(
?preview=1),跳过登录确认 / 计时 / 防作弊 / 交卷入库,方便管理员快速检查试卷渲染 - API 统计 Top 接口浮动卡片修复背景镂空:改用
--surface实色 + backdrop-filter + 1px 内描边,不再透出底部文字
系统公告
- 新增全站公告条:① 问卷调查新增 3 道商业决策题(学习场景 / 其他平台 / 省份),引导已提交用户返回补齐;② 收集老师/教练对「老师端」的功能建议, 可在反馈中填写(公告项支持右上角关闭并记录 localStorage 偏好)
试卷格式统一
- CSP-J 2026 模拟卷 2 / 3 / 4 / 5 全部严格对齐 mock-1 标准格式
- 每份试卷 5 个 section 均补充算法简述行(如「高精度加法」 「双栈中缀表达式求值」「滚动数组版杨辉三角」),阅读更直观
v0.5.7
2026-08-17 11:50:00
管理后台
- 统计概览「活跃度」新增「当前在线」指标:基于
last_active_at5 分钟窗口统计,反映真实在线人数 - 新增「API 统计」Tab:调用量汇总、状态码分布、调用趋势图、 Top 20 接口表、最近 30 条 5xx 异常明细,支持今日 / 7 天 / 30 天切换
- Top 接口表点击列标题可按列排序(默认调用量倒序), 再次点击切换正/倒序,切列默认倒序;表头箭头实时反馈当前排序状态
- Top 接口表新增「最大耗时」列,与「平均耗时」并列展示, 最大耗时 >1s 红色 / >300ms 黄色高亮,慢接口一眼可见
- Top 接口表路径列悬停显示功能说明浮动卡片(替代原生 title), 路径过长省略号截断,悬停看完整路径 + 功能描述
API 调用日志
- 接入异步全量明细日志:新增
api_logs表 15 个字段(含 request_id / query_string / latency_ms / error_message / path_template 等)+ 4 个索引 - 中间件统一记录所有请求,fire-and-forget 异步批量写入,
不阻塞主流程;路径归一化(
/api/admin/users/:id等) 用于 Top N 聚合统计 - 60 天自动清理事件,避免日志表无限膨胀
限流策略
- register / login / forgot-password / reset-password 四个接口
限流 key 由
IP改为IP+UA, 避免教育机构 NAT 下学生共用 IP 互相挤占配额 - 5 个认证接口配额适度放宽: register 3 → 5 次/60s、login 5 → 8 次/60s、 forgot-password 3 → 5 次/300s、reset-password 5 → 8 次/300s、 change-password 5 → 8 次/300s
数据库
- 修复 4 张表 7 个时间字段的时区问题,统一 UTC 存储
- 移除
0001_initial_schema.sql全部 21 处DROP TABLE IF EXISTS,避免误执行丢数据 - migrations 目录合并为单文件 0001(squash 0002/0003/0004)
- 新建
tutor_classification_logs表: AI 助教分类器效果分析日志,独立于配额计数
题库
- 新增 CSP-J 2026 模拟卷 3 / 4 / 5:严格对标真实赛题 (单选 15 题 + 阅读程序 3 段 + 完善程序 2 段,每卷 43 题 100.5 分), 覆盖埃氏筛、Kadane 最大子段和、回文中心扩展、并查集、01 背包等考点
v0.5.6
2026-08-16 13:30:00
思维导图
- 拖动重构为纯原生 scrollLeft:移除 transform 与 scrollLeft 双重位移叠加,右边界精确对齐(误差 ≤ 1px),不再溢出
- 响应式 clamp 缩放:借鉴首页 hero 代码块的 clamp 行为, scale = clamp(0.68, C/1200, 1),视口变窄时等比缩小, 到下限 0.68 锁定不再缩;通过占位 div 精确撑开缩放后的 scrollWidth,原生滚动边界天然合规
- 知识卡片描述固定两行高度,避免短描述导致节点排版跳动
- 左滑提示文案优化
- 新增三层结构调试面板(默认隐藏,浏览器 console 执行 document.body.classList.add('show-mm-debug') 可开启, 含每层位置/尺寸/独立背景色开关/clamp 缩放进度条)
界面
- 搜索框宽度改为 ch 单位 clamp(22ch, 35vw, 50ch), 与 hero 代码块 clamp 语义对齐
- 搜索框 placeholder 响应式切换:宽度不够装下完整文案时 自动切短版「搜索知识点...」,杜绝文字被切半字
管理后台
- 考试记录列表分页 50 → 20 条/页
v0.5.5
2026-08-16 08:55:00
新增
- 新增 CSP-J 2026 模拟卷 2:严格对标真实赛题(单选 15 题 / 阅读程序 3 段 / 完善程序 2 段,共 43 题 100.5 分),覆盖埃氏筛、Kadane 最大子段和、回文中心扩展、并查集、01 背包等核心考点
优化
- 数据库迁移文件:31 个顺序迁移 squash 合并为单个 0001_initial_schema.sql(按最终结构导出),旧文件移至 migrations/_archive/ 保留历史;config.ts 的 TABLES 清单补齐至 完整 20 张表
v0.5.4
2026-08-16 08:05:00
修复
- 修复退出登录报「Cross-site POST form submissions are forbidden」403 错误:Nginx 反代场景下关闭 Astro 内置 CSRF,改由项目自有中间件保护
优化
- 个人中心「模考记录」改为表格风格,与错题本 / 收藏夹 / 排行榜 保持一致
清理
- 删除废弃表 user_profiles(level/exp/coin/streak 字段从未使用)
v0.5.3
2026-08-16 00:20:00
修复
- 修复数据库迁移后时区错乱导致「今日新增注册」等统计显示错误: 统一所有时间字段以 UTC 存储,已修正最近两天受影响的数据
- 登录 / 退出登录按钮加载态补齐 spinner 动画,bfcache 返回时 重置按钮残留状态
v0.5.2
2026-08-15 18:16:12
思维导图
- 首页分类思维导图新增自适应缩放:外层容器宽度变窄时,整张导图 (节点、连线、字号、进度条等)按比例缩小,减少横向滚动。缩放下限 0.7,采用 ratio^0.7 缓和曲线让下降过程更平缓
- 修复缩放后滚动条范围与视觉宽度不一致(最右空白过长)、右半 部分被 overflow:hidden 裁剪不可见两类问题,缩放后拖拽/滚轮平移 与 overflow-x 滚动条范围完全对齐
界面
- 顶部导航在中等宽度(880–1130px)下优先保留中间主导航项,logo 仅显示图标;≤880px 切汉堡菜单并保证右侧按钮贴右对齐
- 管理员用户列表新增「最近活跃」列(显示 users.last_active_at, 到秒精度),位于注册时间和操作之间
- 知识点详情页移除左侧 TOC 目录锚点卡片,左侧栏仅保留前置知识 和相关知识两张卡片
- 排行榜活跃榜的时间段 Tab 控件样式与积分榜的等级 Tab 统一
模拟考试
- 修复 bfcache 相关的「试卷详情按钮 loading 残留」:返回时除了 清全屏遮罩,同时清除 .btn-start/#btn-review 的 loading 状态、 disabled 和 spinner 元素
v0.5.1
2026-08-15 11:59:10
模拟考试
- 完成考试的试卷卡片新增独立分数标签,按通过 / 未通过 / 作弊三种状态 以不同颜色与图标(✓ / ✗ / ⚠)区分展示,按钮文案简化为「试卷详情」
- 修复点击「试卷详情」跳转到答题详情页再返回时,全屏「正在加载成绩…」
遮罩残留且无法关闭的问题。根因是生产环境浏览器 bfcache(前进后退缓存)
直接还原了跳转前被 JS 修改过的 DOM 状态(遮罩 visible + body 滚动锁定),
但页面初始化脚本不会重跑。开发环境因 HMR 注入和强 no-cache 头禁用了
bfcache 所以无法复现。修复方案为监听
pageshow事件强制清理, 并在跳转处增加 5 秒超时兜底 - 开始考试 / 交卷确认弹窗宽度加宽至 640px,避免防作弊规则长文本拥挤
问卷调研
- 新增三道商业决策问题(学习场景、其他平台、省份),用于明确平台的 用户定位与目标人群,序号置于原第 12 题之前
v0.5.0
2026-08-15 01:26:11
性能优化
- 数据库迁移至国内服务器,大幅提升访问速度
- 移除 Google Fonts 外部字体加载(Noto Sans SC 中文 + JetBrains Mono 代码字体), 改为系统字体栈(苹方 / 微软雅黑 + Menlo / Consolas),首屏消除 1MB+ 字体下载 和大陆网络对 fonts.googleapis.com/gstatic.com 的延迟/阻塞
时间显示统一
- 构建版本号 BUILD_TIME、更新日志条目、后台反馈列表/详情、用户反馈详情
等所有绝对时间统一精确到秒(
YYYY-MM-DD HH:MM:SS),不再只显示 到分钟
问卷调研
- 移除用户问卷第 12 题(使用方式/隐含付费状态),原第 13~15 题(其他平台/ 省份/教练机构)整体序号前移为新的第 12~14 题;对应数据库列名、后台统计、 回填校验同步修改,保证 UI 题号与存储字段一一对应
v0.4.9
2026-08-14 07:45:37
后台「数据库迁移」
- 管理员可在后台直接将当前数据库完整复制到另一台 MySQL, 用来做冷备、切换主库或迁移上线环境
模拟考试
- 防作弊判罚逻辑改为「累计切后台时长 + 次数」双门控,大幅降低误判, 并支持跨浏览器窗口的检测
问卷统计
- 后台问卷统计新增第 10 题「你是从哪里了解到我们的?」分布图表
AI 助教
- 练习题点「AI 讲解」会自动把讲解内容保存到助教历史对话,可跨设备回看
- 回看题目讲解和新建问答都改为流式输出,体验更流畅
- 修复一次 AI 讲解被重复保存为多条助教历史的问题
- 用户消息气泡按原文换行渲染,不再合并成一段
- AI 讲解与反馈的提问会去掉代码行号,并正确解码题目中的特殊字符
排行榜
- 修复活跃榜「今日最近」刷新后自己不会出现在顶部的问题, 现在打开排行榜或刷新页面都会计入活跃,榜单实时更新
体验优化
- 整站所有输入框和文本框统一支持按 Ctrl+A / Cmd+A 全选内容
- 数据库迁移表单报错改为页面内提示条,不再弹浏览器原生提示框
v0.4.8
2026-08-13 18:12:05
AI 助教全面升级
- 对话记录从 localStorage 迁移到数据库持久化存储,支持跨设备同步与历史对话列表
- 侧边栏对话列表三栏式美化:圆角消息图标,选中态绿色高亮与发光;删除按钮 hover 玫瑰色动效
- 加载历史对话时 spinner 限定在 chat-header 内垂直居中;首次加载才显示 spinner, 缓存命中立即切换无闪烁
- 已加载对话消息加入内存缓存(
convMessagesCache), 切换已读对话不再请求服务器;用户消息/AI 回复实时追加到缓存 - 删除对话按钮增加 14px 等待动画 spinner,成功后直接从列表 DOM 移除,不再全量刷新
- chat-header 子控件垂直居中对齐;AI 回复填满父容器剩余宽度
- 代码块统一 Shiki 语法高亮,抽出
renderCodeBlock共享函数, 修复助教页面行号与空行对不齐、外层细线等问题,与练习/题库页面视觉一致 - AI 助教头像改为 🤖 机器人图标,背景紫色
purple-dim; 用户头像改为 🧑💻,背景绿色green-dim,紫绿区分 - 用户消息气泡与 AI 回复统一为 surface + border 样式,视觉一致
- mimo 大模型更新为 2.5-pro
登录与个人资料
- 退出登录时清理
sessionStorage并使getMe()缓存失效, 避免头像仍显示登录态 - 登录成功跳转期间按钮保持禁用;保存个人资料后清除
csp_user_cache, 下拉菜单昵称/邮箱立即刷新
菜单对齐修复
- 问卷调查「新」标签改为 pill 形,移入
.user-action-content内绝对定位, 修复用户名短时与菜单文字重叠、破坏对齐的问题
其它
- 禁用 Astro dev toolbar,消除
net::ERR_ABORTED控制台报错 - 「关于」「更新日志」页容器统一为
max-width:1200px,与错题本一致 - AI 助教侧边栏「历史对话」标签水平居中
v0.4.7
2026-08-13 15:40:21
下拉菜单对齐修复
- 为所有菜单项统一包裹
.user-action-content层, 「图标+文字」作为唯一 in-flow flex 子项,红点作为独立绝对定位兄弟节点, 彻底解决因红点占位导致的文案居中偏移问题
UI 美化
- AI 助教页「模型选择」下拉框去除原生外观,注入 SVG 自定义箭头, hover/focus 配色与全局表单控件对齐(绿色外发光 focus 态)
- 导航栏图标 16→19px、文字 14→15px / 字重 600、胶囊尺寸同步放大; 首页搜索框放大镜 ⌕ 15→23px
v0.4.6
2026-08-12 17:05:48
问卷功能增强
- 问卷表新增
updated_at字段(migration 0026),自动记录最近更新时间 - 已提交提示条展示「最近更新于 X」,仅在真正更新过时显示
- 点击「更新问卷」成功后立即用接口返回的最新时间刷新提示条
- 问卷时间按东八区(Asia/Shanghai)显示,修正原本按本地时区解析 UTC 时间导致的偏差
界面优化
- 用户下拉菜单去掉头像,仅保留角色徽章 + 用户名 + 邮箱,header 与菜单项水平居中
- 下拉菜单宽度自适应内容(min-width 150px),减少右侧留白
- 错题本、收藏夹空状态行和加载行 hover 背景保持透明,避免误以为可点击
v0.4.5
2026-08-12 14:22:16
问卷调查功能增强
- 问卷支持提交后修改:已提交用户再次进入时自动回填所有答案,按钮文案变为「更新问卷」,更新后表单保持显示并提示成功
- 已提交用户顶部显示紫色提示条,展示上次提交时间并引导修改
- 提交 API 改为 UPSERT 逻辑(已存在时 UPDATE,不存在时 INSERT)
- 问卷新增第 10 题「你是从哪里了解到我们的?」(必填单选,7 个选项:搜索引擎/朋友推荐/老师推荐/社群/内容平台/学校机构/其他),原建议题顺延为第 11 题
- 修复问卷 Q9 多选题因数据库字段类型为 CHAR(1) 导致提交 500 错误的问题
界面优化
- 错题本、收藏夹统一为表格布局,宽度 1200px,行高 54px,时间精确到秒
- 错题本、收藏夹加载状态改为居中旋转动画,操作后直接 DOM 移除行不刷新列表
- 排行榜等级选择器样式与错题本/收藏夹筛选标签统一,水平居中
- 管理后台标题、搜索栏、工具栏水平居中
- 「查看答案」按钮去除权限限制,学生也可查看,默认隐藏答案解析
v0.4.4
2026-08-12 10:33:52
统计概览全面增强
- 新增
/api/admin/stats聚合接口,返回 24 项核心指标 + 近 7 天趋势数据 - 统计分为 5 大分组卡片:用户概览(总用户/今日/本周/本月新增)、活跃度(DAU/WAU/MAU/周月留存)、学习行为(知识点完成/答题/正确率/错题/收藏/水平测试通过)、AI 助教(总使用/今日/覆盖用户/人均使用)、模考成绩(参加/通过/通过率/平均分/作弊)
- 新增近 7 天 SVG 多系列趋势图:活跃用户、答题数、新增用户、知识点完成 4 条曲线,独立归一化便于观察波动,悬停显示具体数值,图例带 7 天累计量
- 新增响应式分组卡片布局与样式,移动端自适应(4列→3列→2列)
管理后台优化
- 用户管理从"前端当前页筛选"升级为后端全局搜索:支持昵称 / 邮箱 / 手机号多字段 LIKE 模糊匹配
- 用户搜索框右侧新增「搜索」按钮和「×」清除按钮,改为用户主动触发(点击或回车)才开始搜索,避免误触发频繁请求
- 问卷统计 Q9-F 选项文案从"移动端体验差"调整为"缺手机app"
试卷内容优化
- 新增 CSP-J 2026 模拟卷(基础五),难度略高于基础四,覆盖栈/队列/位运算/递归复杂度/循环队列/完全二叉树/容斥/前缀和/邻接矩阵/const指针/二分左边界/排序稳定性等核心考点
- 补充动态规划必考题目:完善程序(2)改为最长上升子序列(LIS)DP 经典题,完整考察状态定义、转移方程、最优子结构五个填空
- 全面校准基础五试卷四维质量:
- 效度:补充 CSP-J 考纲缺失模块——单选1十六进制含小数换算、单选2 ASCII+二进制换算综合、单选3负数补码(原反补码操作)、单选9组合计数(志愿者分配/第二类斯特林数应用)、单选14快排第一趟分区过程模拟
- 难度:删除送分冗余的浮点数精度、简单容斥、简单递归追踪题,难题占比由 14% 调整至 21%
- 区分度:阅读(2)从回文判断替换为高精度加法+进位次数统计(题27陷阱修改条件后 cnt 值区分度极高);完善(1)从归并排序模板替换为逆序对计数(题35 mid-i+1 填空显著拉开中等生与优等生差距)
- 信度:删除递归类重复题 2 道,题目同质性降低,难度阶梯更平滑
v0.4.3
2026-08-11 17:18:31
题目修复
- 修复 CSP-J 2026模拟卷(基础二)第6题:原题将"栈"误写为"队列",已更正为栈的出栈序列判断题
- 修复 CSP-J 2026模拟卷(基础二)第26、27题:由2选项判断题改为4选项选择题,已重算9条相关考试记录的得分与总分
UI 优化
- 导航栏当前模块按主题色高亮显示,当前模块导航项不可点击
- 考试卡片 CSP-J/S 徽章改为右上角绝对定位,释放垂直空间
- 「查看成绩」按钮改为直接跳转成绩详情页,取消中间界面
- 身份切换确认按钮增加全局加载遮罩
v0.4.2
2026-08-11 14:47:09
问题修复
- 修复考试成绩在详情页与列表页显示不一致的问题
- 统一成绩计算规则:满分按实际题目分值累加(如阅读程序判断题1.5分、选择题3分),通过线为满分的60%
- 已重算并修正全部45条历史考试记录的得分、总分和通过状态
v0.4.1
2026-08-11 11:05:18
功能增强
- 未登录访问错题本、收藏夹、个人中心、助教、模考等页面,登录成功后自动返回原页面
- 知识点详情页登录弹窗也支持登录后返回当前页面
v0.4.0
2026-08-11 09:32:40
新功能:水平测试解锁
- 新增水平测试功能,高手用户可通过答题跳过前置练习门槛
- 从所有前置依赖知识点中按比例抽取 10 道题,答对 8 道即可解锁
- 首页思维导图锁节点和知识点详情页均可触发水平测试
- 水平测试弹窗支持多步骤流程:开始说明 → 逐题答题 → 结果展示
- 通过后自动刷新 UI,解锁节点并继续学完流程
- 正确答案仅存服务端 session,防止前端篡改
v0.3.9
2026-08-11 08:10:02
界面美化
- 收藏夹、错题本从表格改为卡片式列表,统一视觉风格
- 错题本答案对比块移至标题右侧,卡片内容垂直居中对齐
- 管理后台列表全面美化:反馈列表排版、反馈详情弹窗、加载遮罩居中
- 分页页数窗口扩大为 7 页(±2)
功能增强
- 模考、助教、错题本、收藏夹统一为需要登录才能访问
- 考试「查看成绩」按钮增加加载状态,避免页面跳转卡顿
- 考试成绩列表项点击跳转答题详情页
- 老师/管理员专属:考点解析显示切换按钮
- 考试管理、问卷统计增加通用加载遮罩
Bug 修复
- 修复数学公式中字符串引号显示异常(左右均为右引号)
- 修复选项中数学公式
$...$不渲染的问题 - 修复中文输入法选词回车误触发提交
- 修复加载遮罩显示时页面仍可滚动
- 修复管理后台样式覆盖导航栏头像按钮的问题
- 修复阅读程序计分规则(判断题 1.5 分 / 选择题 3 分)
部署修复
- 修复 rsync 尾斜杠导致 dist 目录层丢失、PM2 入口找不到
- 修复 migrations 尾斜杠导致 SQL 散落根目录、迁移静默跳过
- CSRF 同源放行,支持任意部署域名/IP
v0.3.8
2026-08-10 16:42:17
工程清理
- 移除 Pagefind 静态搜索工具及依赖,构建时间减少约 1.3s
- 移除 wrangler.jsonc 中遗留的 D1 数据库绑定(运行时已全量使用 MySQL)
会话优化
- Session 滑动续期:剩余有效期 ≤ 6 天时自动刷新,每天最多触发一次 UPDATE,保证连续使用不掉线
Bug 修复
- 修复 KaTeX 数学公式中双引号被 marked 转义为
"导致渲染异常的问题
v0.3.7
2026-08-07 17:51:39
排行榜预聚合表改造
- 新增 user_stats 表预存积分数据,积分榜冷查询从 16-40s 降到毫秒级
- 新增 user_daily_activity 表预存每日活动,活跃榜冷查询从 3s+ 降到 1-1.6s
- 答题/标记完成时实时同步两张预聚合表,保证数据准确
- 移除 KV 缓存,单表查询命中索引,数据实时且无需缓存失效管理
v0.3.6
2026-08-07 11:28:55
排行榜性能优化
- SQL 去除 CONVERT_TZ 与 RANK() 窗口函数,改用 UTC 边界 + ORDER BY LIMIT
- 补齐 8 个时间与复合索引,用户排名独立缓存(1 分钟 TTL)
- 数据库连接请求级复用,省去多次 TCP 握手
- 用户排名查询拆为「取自己 + COUNT 比我好」两步,不再全量窗口排序
- 活跃天数计算移至应用层,Top50 累计字段按 IN 批量补全
- 缓存从进程内 Map 改为 KV,跨 isolate 共享,所有用户都能命中
- SWR 策略:缓存过期先返回旧数据秒开,后台异步刷新,用户无感知
性能优化
- me 接口三级缓存,单页调用从 4 次降至 1 次
- 通知接口跨页 sessionStorage 缓存(5 分钟 TTL),消除首页刷新重复调用
功能与修复
- 练习题支持键盘 ABCD 快捷选择答案
- 调查问卷第 9 题改为多选,后台统计图表同步适配
- 修复问卷统计排版问题
v0.3.5
2026-08-06 15:03:08
用户问卷调研
- 新增用户问卷功能(10 题,含满意度评分和 NPS)
- 首页右下角问卷引导浮窗,7 天免打扰
- 后台问卷统计 Tab,SVG 环形图/柱状图/NPS 图表
v0.3.4
2026-08-05 13:22:44
模拟考试系统
- 新增模拟考试功能,严格按照 CSP 初赛真题格式(43题100分,限时2小时)
- 每个用户每场考试仅有一次机会,开考30分钟后方可交卷
- 防作弊机制:切换后台累计3次自动终止考试并判为作弊
- 考试成绩记录作弊状态,管理员后台和用户成绩页均可查看作弊标记
- 管理员可控制考试启用/禁用,禁用的考试对学生不可见且无法参加
后台管理
- 新增「考试成绩」Tab,查看所有学生的考试成绩、通过率、作弊标记
- 新增「考试管理」Tab,一键切换考试启用/禁用状态
问题修复
- 修复代码块空行不显示的问题
- 修复阅读程序/完善程序题目序号被包裹在代码块内的问题
- 修复局域网IP访问提示"非法请求来源"的问题
v0.3.3
2026-08-04 16:19:27
体验优化
- 学完知识点后可立即点击练习,无需刷新页面
- 模拟考试页面代码块样式与知识点页面统一(行号、圆角、复制按钮)
- 模拟考试开始时正确重置进度显示
v0.3.2
2026-08-03 10:45:13
排行榜优化
- 新增「今日最早」排行榜,展示当日最早活跃的用户
- 活跃榜刷新时保持当前 tab 状态
- 活跃榜活跃时间筛选逻辑优化,确保只显示当日活跃用户
问题修复
- 修复回看历史题目时 AI 讲解和反馈按钮缺失的问题
- 修复文件操作练习题答案错误
备案信息
- 底部增加公安备案链接
v0.3.1
2026-08-01 14:02:36
练习体验优化
- 支持回看上一题,题目顶部始终显示"上一题"按钮
- 回看已答题目时只读显示答案和解析
v0.3.0
2026-07-30 11:30:51
练习题反馈功能
- 练习题AI讲解旁新增「反馈」按钮,用户可一键反馈题目错误
- 反馈弹窗自动预填题目上下文(题目、选项、答案、知识点路径、题目编号)
- 反馈弹窗支持ESC键关闭,点击遮罩关闭
- 反馈按钮采用amber实心风格,与相邻按钮样式统一
问题修复
- 修复代码块复制功能会把行号也复制的问题
- 修复反馈弹窗中HTML实体(如 < )未解码导致代码显示异常的问题
v0.2.9
2026-07-29 15:48:22
站点备案与搜索引擎优化
- 添加ICP备案号(粤ICP备2026004379号-3)至页脚中间位置
- 添加搜狗站点验证meta标签及验证文件(sogousiteverification.txt)
- 添加Content-Type meta标签声明gb2312编码
练习逻辑优化
- 练习只展示错题和未做过的题,已答对的题不再出现;全部答对时恢复随机模式
后台管理优化
- 管理员头像新增小红点提示,有待处理反馈时自动显示
- 处理完反馈后自动刷新小红点状态
- 分页加载loading遮罩优化,覆盖整个页面(含标题和标签页)
性能优化
- 优化首页重复请求,首次加载跳过pageshow中的updateProgress调用
v0.2.8
2026-07-28 10:21:07
代码块样式统一与行号
- 讲解tab和练习tab的代码块样式完全统一(背景、边框、字体、行高)
- 所有代码块支持右上角复制功能
- 代码块新增行号显示,行号与代码行一一对应
- 修复代码块行间多空行的排版问题
- 修复条件语句代码缩进显示问题(else与第二个if对齐)
练习交互修复
- 修复练习页面回车快速连按导致跳过答案反馈直接跳转下一题的竞态条件
题目修正
- 修正while循环题目答案
- 修正格式化输出题目答案(setw/setfill填充规则)
v0.2.7
2026-07-27 16:06:49
活跃榜重构
- 日榜排名规则改为按最后活跃时间倒序(越近越靠前),显示最后活跃时间
- 活跃行为新增"浏览页面",用户访问任意页面即算活跃
- 时间范围计算改为使用东八区时间,确保时区边界正确
- 统一使用 UTC_TIMESTAMP() 存储时间,查询时转换为东八区
v0.2.6
2026-07-26 18:03:41
活跃榜修复
- 修复活跃时间计算逻辑,现在包含登录时间、答题时间和学习知识点时间的最小值
- 修复选项中空格显示问题,确保格式化输出题目中的空格正确显示
题目质量优化
- 修正输入输出题目中"考察格式化输入输出与取模运算"的错误描述,改为"考察格式化输入输出"
v0.2.5
2026-07-26 14:47:13
活跃榜单功能
- 新增活跃榜,支持今日/本周/本月时间范围选择
- 今日榜单:按活跃时间(越早越靠前)> 答题数 > 学习知识点数排序,显示当天最早活跃时间
- 本周/本月榜单:按活跃天数 > 答题数 > 学习知识点数排序,显示活跃天数
- 活跃行为包含:答题、学习知识点、登录
- 积分榜支持 CSP-J/CSP-S 级别切换,活跃榜不区分级别
- 榜单移除分页,只显示一页(最多50名)
- 加载状态管理:禁止切换榜单和上下滑动,显示加载动画
题目质量优化
- 批量修正1117道题的考点描述,确保题目内容与考点一致
- 修正素数筛法题目内容,确保符合主题
其他改进
- 修复排行榜 tab.dataset.level 默认值错误问题
- 添加登录时间字段 login_at 用于活跃统计
v0.2.4
2026-07-26 09:12:30
移动端导航适配
- 修复首页底部导航栏在手机模式下显示不全的问题,添加左右滚动按钮和滑动提示
答题排序修复
- 修复 question-status API 未按时间排序导致练习题排序错误的问题
思维导图优化
- 思维导图过宽时显示"左滑查看更多"提示
- 调整算法模块思维导图中双指针和二分答案的位置
知识体系文档修正
- 修正知识体系依赖关系图中的4处错误(数据结构、搜索、数学、字符串算法)
v0.2.3
2026-07-24 17:22:08
练习答题优化
- 答题改为先选择再提交,防止误点击
- 选中答案后按回车提交,提交后按回车进入下一题
反馈交互优化
- 反馈输入框回车提交,Shift+回车换行
- 管理员回复同样支持回车提交,回复区域宽度占满、高度增大
热力图修复
- 修复日期时区问题,使用 GMT+8 计算活动数据
v0.2.2
2026-07-24 13:15:56
热力图优化
- 修复热力图显示问题,优化视觉效果(居中对齐、圆角单元格、颜色对比度)
- 简化界面,移除星期标签和图例
API 缓存优化
- 为进度相关 API 添加 Cache-Control 头,确保数据实时性
v0.2.1
2026-07-24 10:08:24
前置练习门槛
- 新增练习门槛机制:完成知识点前,依赖知识点的练习需完成≥67%且正确率≥67%
- 未达标时在页面底部显示提示,并提供"去练习"跳转链接
- 标记完成时服务端二次校验,防止绕过前端检查
练习体验优化
- 答题反馈即时显示,答题记录后台异步保存,消除等待感
- 练习题智能排序:优先错题和未做题,全对后随机
- 再练一次后自动切到练习标签
v0.2.0
2026-07-23 15:41:02
数据库迁移
- 从 Cloudflare D1 迁移到 MySQL,提升性能和可扩展性
- 新增数据 dump/restore 工具链
练习体验优化
- 练习题智能排序:优先练习错题和未做过的题,全部做对后随机排序
- 修复首页练习进度显示为 0 的问题
后台管理
- 翻页移至列表下方居中,与排行榜风格统一
- 反馈详情弹窗打开时先显示加载态,避免闪现旧内容
其他改进
- 提交反馈后自动刷新「我的反馈」列表
- 练习标签题数文字改为暗色,提升可读性
v0.1.0
2026-06-19 11:00:00
首次发布
- 100+ 知识点,覆盖 CSP-J/S 初赛全部考点
- 3500+ 精选练习题,配有答案和解析
- 15 年真题精讲
- 学习进度追踪、排行榜、错题本
- AI 辅导(基于 MiMo/DeepSeek)
- 管理员后台