518 Commits
Author SHA1 Message Date
xuyueandClaude Opus 5.5 df76e7f101 feat(提交详情): 单独打开的一条提交改成左边代码、右边为什么错 + 这道题交的每一次
Deploy / deploy (push) Canceled after 0s
- 原来不显示是哪道题、时间只到日、答案错误不说为什么,测试点表 5 行一模一样
- 右边摆题目页那块例子对比(输入 / 正确输出 / 他的输出,差的字标红),编译失败、运行时错误同提交列表右栏的说法,代码里标出那一行
- 「这道题交了 N 次」常驻右栏,← → 一次次翻,看他是怎么改对的;题单藏着的那几次点不进
- 老师:「他的全部提交」和「⋯」(复制两项、重新判题);测试点方块悬停看用时和内存;判题中自己刷新
- 别人的代码、链接不对原来一直转圈,现在说清楚是哪种;自己在题单布置期内的照样看得到是哪道题、什么结果
- 后端详情多给题目名、班级、题单,`?attempts=1` 带上同题的每一次;看不到别人的回 403 而不是 404;提交者本人也拿得到 contestId(比赛里的题号是比赛自己的)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:00:22 +08:00
xuyueandClaude Opus 5.5 4240a451e4 chore(站内信): 消息页、后台空壳页、两个接口和 message 表一起下线
Deploy / deploy (push) Canceled after 0s
历史上一共 6 条站内信(最后一条 2025-06),发信接口两代前端都没接过,后台页面只有一句
「未完待续」,OJ2 顶栏也没有入口。

0033 是 DROP TABLE,部署要显式放行:OJ2_ALLOW_DESTRUCTIVE=1 docker/deploy.sh,
或 CI 手工触发时勾 allow_destructive。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:51:12 +08:00
xuyueandClaude Opus 5.5 734f4aed05 fix(成就): 成就线的进度线不再从徽章中间透出来
Deploy / deploy (push) Canceled after 0s
徽章底色是半透明的稀有度色,压在线上面挡不住;底下垫一层卡片底色

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:32:37 +08:00
xuyueandClaude Opus 5.5 36f2a45c5e fix(成就): 题单奖章名字不再被截成「物联网专业…」;没有班级时「快拿到了」横排占满整宽
- 奖章名最长 9 个字,竖排格子只放得下 4 个,改成图标 + 全名横排、放不下就换行
- 老师、自己注册的号没有班级就没有「本班」,原来「快拿到了」只占左半边、右边空着

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:31:03 +08:00
xuyueandClaude Opus 5.5 cbeb0737ef feat(成就): 成就页改成「快拿到了 + 本班」加一条条成就线,不再是一墙灰卡
Deploy / deploy (push) Canceled after 0s
- 顶上「快拿到了」三个只说还差什么,旁边「本班」:最近谁拿到了什么、成就最多前五(自己不在就钉在底下)
- 38 个成就按指标收成一条条线、分五组,同一串几档排在一根进度线上,下一档标「差几」;
  悬停看说明、哪天拿到、本班几人有、全站几人有
- 还没找到的隐藏成就只露问号;本班动态里也只说「彩蛋」,不漏名字
- 题单奖章并进「题单和比赛」那组;看别人的成就只有成就线
- 去掉「仅 X% 的人获得」(分母是全站历届账号)和完成度圆环

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:26:37 +08:00
xuyueandClaude Opus 5.5 85108df9d8 feat(成就): 下架三个拿不到的成就、理顺稀有度和图标;接口多给本班几人有和「本班」卡片
- 0032:下架六边形战士(判题机只剩 3 种语言)、坚持三天/一周(按天算基本拿不到);
  不撞南墙改白银、屡败屡战改黄金;百发百中换 💯、屡败屡战换 💪,不再和别的撞图标;
  代码行数只算做对的、空行不算,并按新口径重算所有人;已经拿到的一个不收回
- 奖杯收藏家只数上架的成就(判题结算、补发重算、0032 存量一起改)
- GET /achievements:每个成就带全站几人有、本班几人有;看自己时带「本班」(最近拿到、成就最多前五、自己第几);
  隐藏成就同一串拿到一档就整串亮出来;连续几周给「现在连着几周」而不是历史最长
- 删掉只有旧成就页在用的 /achievements/summary

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:26:37 +08:00
xuyueandClaude Opus 5.5 689d40b116 chore(顶栏): 注释里去掉已经没有的 /setting
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:05:01 +08:00
xuyueandClaude Opus 5.5 e368ed3eca feat(个人主页): 主页改成名片 + 两栏,做对的题按天带题名;设置并进主页,点头像换头像、点笔改签名
- 名片:头像、班级、签名、做对几道 / 本班第几 / 成就,底下一排四个时间(第一次提交、最近一次提交、距上次提交、学习天数)
- 做对的题按日期或按知识点,能搜;最上面一行是交过还没做对的
- 知识点本人和老师看得到;同学看多一张「你和他」
- 老师看学生:看他的智能分析 / 看他的提交 /「⋯」不计入排名、清空签名
- 换头像弹框:拖圆圈选一块,看领奖台和排名里多大,可退回名字的字
- 去掉「我的设置」页和下拉菜单里那一项;手机三个页签

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:03:37 +08:00
xuyueandClaude Opus 5.5 cbf5b9d922 feat(个人主页): 后端一个接口给齐主页要的东西:做对的题带题名和日期、四个时间、本班第几、成就,老师和本人多拿知识点和没做对的题
- GET /profiles/:username/overview:同学看拿不到知识点和没做对的题,多一份「你和他」
- DELETE /me/avatar:不用图片,退回名字的字
- 知识点地图抽成 knowledgeMapOf,老师看学生也能用
- 删掉没人用了的 /users/:id/metrics

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:03:37 +08:00
xuyueandClaude Opus 5.5 afbc240a19 fix(点评): 做对之后的点评弹窗点一块就关,不用再点一次「好的 / 下一题」
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 23:34:33 +08:00
xuyueandClaude Opus 5.5 3ca3b42997 fix(排名): 老师点「本班」不再随手挑个交题最多的班,改成布置过作业的班、上次选的班,都没有就停在全部
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 23:28:55 +08:00
xuyueandClaude Opus 5.5 e4abbc1645 feat(智能分析): 页面改成每节课一行,一眼看出哪道一次就对、哪道交了很多次、哪道还没做对
Deploy / deploy (push) Canceled after 0s
一年热力图、半年月度图、难度分布、时间活跃度这些对多数学生大半空白的图都去掉了;
右边是差一点的(接着做)、错在哪、知识点;老师看学生能 ‹ › 翻同班下一个人。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 23:20:34 +08:00
xuyueandClaude Opus 5.5 3430028ea8 style(题目列表): 「全部类型」下拉里每种题型的说明改短
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 22:04:00 +08:00
xuyueandClaude Opus 5.5 28a09831b5 feat(排名): 个性签名直接写在名单上,不用再指着小引号才看得到
- 桌面:写了签名的同学名字下面多一行,把签名写出来(一行二十来个字,长的指上去看全文);两栏按高度对半分
- 手机:签名从名字后面(只剩三五个字)挪到名字下面一行
- 自己还没写的,名单里自己那行有「写一句个性签名」,和「你」卡点开的是同一个框

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 22:02:15 +08:00
xuyueandClaude Opus 5.5 6e946c99fb feat(出题): 参考流程图改用画布画,「让学生自己画」不再要参考图
Deploy / deploy (push) Canceled after 0s
- 学生画的图现在按例子和测试数据评(拼成程序跑),参考图用不上了:「让学生自己画」
  只剩一句说明,保存前改成检查有没有例子;「给学生的提示」那一栏去掉(学生从来看不到,
  16 道题也都没填)
- 「给学生看一张参考流程图」改用学生画图的同一个编辑器,存结构树(problem.flowchart_data,
  原来是死列),Mermaid 由后端照它生成,题面里的图和学生交的图同一套形状
- 「AI 照 Python 答案画一张」改成出结构树,直接摆在画布上接着改;for 循环画成
  计数变量 + 当型循环
- 老题手写的 Mermaid 照旧给代码框,旁边「改用画布画」

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:39:50 +08:00
xuyueandClaude Opus 5.5 b9ece7d38f feat(统计): 流程图统计列出「最常见的错」,不再显示新评法下没意义的平均分
新评法(走例子)没有四项分、几乎没有评语,雷达图、各项平均分、词云都拼不出来,
页面上只剩一个等级圆环。改成:
- 「最常见的错」:每张图第一组没走对的原因原样数一下(「『一级果』多输出了一行
  『一级果』2 张」),最多 8 条;全是新数据时放在等级分布旁边,新老混着时顶替词云
- 只有新数据时「每人最好的一次」铺满一行、分几栏
- 去掉「平均分」:新评法的分数只是走对的比例,看它不如看「拿到 A / S」;
  「每人最好的一次」也只写等级
老数据(2026-10 之前)照旧是四项分和词云。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:31:18 +08:00
xuyueandClaude Opus 5.5 04c90e3f89 feat(流程图): 手机上也能画流程图了
原来手机上不给画(节点库是 HTML5 拖放,手机上拖不动),只能在结果页签里多一段只读的
「流程图点评」。换成插入式编辑器之后只用点,手机上照样能画:
- 「代码」页签的工具栏里有「写代码 / 画流程图」、撤销、重做
- 屏幕底部那条在画流程图时换成「交给 AI 点评」
- 结果页签就是电脑上那一套(逐组结果、亮路径、载回画布),只读的那一段删了

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:28:20 +08:00
xuyueandClaude Opus 5.5 e4905fcec1 fix(流程图): AI 点评不再让模型在脑子里走图——拼成程序在判题机上跑,同一张图两次结果一样
Deploy / deploy (push) Canceled after 0s
上一版让模型拿例子在图上「走一遍」,真模型一试:同一张错图两次一次全对一次 C
(看得到应该输出时它会照抄),365 圈的循环多算一圈也判对。现在:
- 结构照学生的结构树拼,AI 只把每个框里的字翻成一句 Python,改不了结构、补不了漏的步骤
- 拼好的程序在本站判题机上跑例子和测试数据,逐行比输出:空格、标点、全角半角不算错,
  题目输出里固定的提示文字(「较大的数是: 」)框里没写也不算错
- 走过哪些框、每行是哪个框输出的在程序里记下来,画布照旧亮路径、标出错的框
- 没走对的原因由代码说:多输出了一行「一级果」、输出的是 38.16 应该是 37.78、
  「输入有无瑕疵 f」读到的数据不对、走不到结束(死循环)
- 结构树挪进契约(flowchart-doc.ts),前端画图、后端评分用同一份

用真模型(deepseek-v4-flash)对 9 张图各评两次,结果两次一致、对错都判对,每张一秒左右。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:22:15 +08:00
xuyueandClaude Opus 5.5 099c6d7ba6 feat(流程图): AI 点评改成拿例子和测试数据在图上走一遍,同一张图不能再原样重交抽等级
原来让 AI 按逻辑 40 / 完整 30 / 规范 20 / 清晰 10 打总分:同一张图交两次能差 35 分
(有一张 C 再交变 S),22% 的提交和上一次一模一样;评语里写 node_9 这种学生看不到的编号。
照画布稿 FlowResFail / FlowResPass:
- AI 拿题目的例子和最多 3 组测试数据,从开始照着图走到结束,逐组说输出什么、对不对、
  最先错在哪个框;全对 A,全对且写法挑不出毛病 S,走对一半以上 B,否则 C
- 结果页签:「3 组走对 2 组」,逐组 ✓ / ✗,点开看「你的图输出 / 应该输出」,画布上按先后
  编号亮出这一组走过的框、错的那个标红;图一改就不亮,载回那一版又能亮
- 画布和上次评完的那张一模一样时「交给 AI 点评」灰掉;后端也兜着:同一道题一模一样的图
  直接照搬上次走例子的结果,不再问 AI
- 题目一组例子、测试数据都没有时退回老的四项分;老提交照旧按四项分显示
- 历次等级、提交列表的胶囊只写等级,不写分数

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:08:42 +08:00
xuyueandClaude Opus 5.5 09f8a56913 feat(流程图): 画流程图不用再拖框连线——点箭头上的 + 加一步,判断自动分出是 / 否,排版全自动
原来要从节点库拖框、对准连接点拉线、自己摆位置,还能画出断线和孤立的框;
画布上全是彩色圆角块,交上去的却是平行四边形和菱形。现在照画布稿 FlowEdB:
- 图存成一棵结构树(顺序 / 判断 / 循环),开始、结束固定在两头,排版是纯函数
- 每根箭头上一个 +,点了选输入 / 输出 / 处理 / 判断 / 循环;点框直接改字,右上角「删除」
- 形状照国标流程图,画布、缩略图、交给 AI 的 Mermaid 是同一套;缩略图配色跟着画布改
- 已保存时间、撤销、重做挪到工具栏,「清空画布」收进「⋯」;空框交不上去
- 去掉 vue-flow 三个包(编辑器打包后 16 KB),删掉没人进的 /flowchart 页

2026-10 之前交的图是 vue-flow 格式,只能看缩略图、载不回画布;旧草稿键名不同,不去碰。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:56:45 +08:00
xuyueandClaude Opus 5.5 ce26925e79 style(提交列表): 右栏的代码字太小,调到和题目页编辑器一样的 20px
Deploy / deploy (push) Canceled after 0s
行高跟着从 30 调到 32,标红的报错行仍和行号逐行对齐。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:22:39 +08:00
xuyueandClaude Opus 5.5 d2b8a1ce4a refactor(编辑器): 去掉 vue-codemirror,代码编辑器、协作编辑器、教程编辑器改用自己的薄外壳
三个编辑器只用到它的 v-model、extensions、只读、缩进、占位文字、尺寸和 ready,
shared/components/CodeMirror.vue 照它的做法写了这几样,功能和手感不变:
- 它默认带的 basicSetup(行号、撤销、折叠、搜索、括号……)照样带上
- 各项配置的先后顺序和它一致;外部改代码仍是一次不带 userEvent 的 changes,
  提交时的编辑过程统计不受影响
- @codemirror/commands 现在直接 import,显式声明进依赖

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:22:39 +08:00
xuyueandClaude Opus 5.5 6216e1cf22 chore(依赖): 删掉三个没用到的 vue-flow 插件,代码高亮全站只注册一份
- @vue-flow/minimap、node-resizer、node-toolbar 一处引用都没有
- App.vue 给 n-code 另建了一份 highlight.js,还注册着判题机早就不认的 Java、
  JavaScript、Go;改成空闲时加载 shared/highlight.ts 那份。62 条这三种语言的
  历史提交改为不上色显示

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:22:32 +08:00
xuyueandClaude Opus 5.5 ea487bdc7b fix(题面): 图片点不开大图,而且半栏放不下的图会被压扁
Deploy / deploy (push) Canceled after 0s
换掉 md-editor 时把它自带的点图放大一起丢了;富文本存的图片带行内
style="width; height",宽被 max-width 压窄时高还是原值,height: auto 盖不住行内样式。

- 正文图片点一下全屏看大图,点任意处或按 Esc 关闭;包在链接里的图照旧走链接
- 图片高度用 !important 跟着宽度走,比例不再变形

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:16:36 +08:00
xuyueandClaude Opus 5.5 0e1784ba26 fix(自学): 练一练的填空框、拖拽卡片、连线项都没有边框,填空题看不出空在哪
Deploy / deploy (push) Canceled after 0s
填空、排序、找错、连线、分组、输出预测六种题的边框和底色写的是 --n-border-color、
--n-color、--n-text-color-3。这几个变量只在 Naive 组件内部才有,自学重设计把外层换成
自己的卡片之后就全没了:边框整个消失,填空题只剩一个看不见的输入框。

换成 learn.css 里自学自己的变量,补了一个可操作控件用的深一档边框和次要文字色,
亮暗两套都有。代码字体原来只写了 Monaco,机房 Windows 没有,换成 --learn-code-font。
顺手把填空框的上下内边距去掉,几行之间不再贴在一起。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:07:04 +08:00
xuyueandClaude Opus 5.5 e6c02dce33 chore(依赖): 前后端依赖升到最新,补上机房 Chrome 105 缺的两个 polyfill
几处随升级改的:
- VueUse 15 的 useNow 不再收 interval,不传 scheduler 默认逐帧刷新。比赛列表(1 秒)
  和后台建比赛(15 秒)改成用 useIntervalFn 当调度器,频率不变。
- 重新探测 modernPolyfills:mermaid 12 用了 Object.groupBy(Chrome 117),core-js 新数据
  把 URL.parse(Chrome 126)也算进来了,不补的话机房老机器上静默报 TypeError。清单 52 项。
- vue-router 5.4 弃用了导航守卫里的 next(),全局守卫改成返回值。
- web-tree-sitter 0.27:AST 规则在 dev 和编译后的二进制里各跑过一遍,判过、判不过都对;
  jieba 2.0.4 原生模块在仓库外起二进制能正常分词。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:03:34 +08:00
xuyueandClaude Opus 5.5 6f47ad8358 perf(Markdown): 题面、教程、AI 提示每次打开都去 unpkg.com 拉四个库,机房网络下又慢又不稳
md-editor-v3 的 MdPreview 不管正文里有没有代码、公式,都会从 unpkg.com 加载
highlight.js、katex、mermaid、echarts(mermaid 还是另一份 11.x)。而我们只用到最基础的
Markdown:题面 95% 是富文本存的 HTML,教程是标题、表格、图片,AI 输出是标题、列表、
表格、少量代码块,库里一处公式、mermaid 都没有。

- 显示:新组件 shared/components/Markdown.vue,直接用 markdown-it,代码高亮走本地的
  highlight.js(和练一练共用 shared/highlight.ts,补了 C++ / SQL)。9 处 MdPreview 全换掉。
  正文默认 16px,教程也统一成 16px。
- 编辑:后台教程编辑器换成项目已有的 CodeMirror,加一排格式按钮;图片可以按按钮选、
  粘贴、拖进来,都是先上传再插入。md-editor-v3 从依赖里删掉。
- AI 生成的内容(AI 提示、AI 分析、班级报告)不再放行原生 HTML:学生能在代码里诱导
  AI 吐出 <img onerror>,老师在后台一打开就执行。库里 1196 条 AI 输出没有一个 HTML
  标签,关掉不影响显示。题面、教程照旧放行。
- 长英文改成在单词之间折行,原来 break-all 会把 "I live" 断成 "I l / ive"。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:02:54 +08:00
xuyueandClaude Opus 5.5 c497ccadc8 fix(题目页): 例子输出长一点就在半格里横着滚,机房屏幕上一成的题看不全
机房两种屏上左栏只有 550px 左右,「例子 N | 输入 | 输出」每格只放得下二十来个字符,
而例子输出最长那行的 p90 有 28 个字符宽(中文按两个算),62 道题超过 32。

按这道题最长那行用实际字体量宽度:半格放得下照旧摆表;放不下就整道题的例子改成
上下排,输入、输出各占满宽;整宽也放不下的二十来道才横着滚,滚动条改成 6px 细条。
拖动分栏时实时重算。不自动折行:折出来的行学生分不清是不是真换了行。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:00:29 +08:00
xuyueandClaude Opus 5.5 cd75d42a64 feat(年度趋势): 后台年度趋势改成「这届和往届比」,比往届差的题排在最前面
Deploy / deploy (push) Canceled after 0s
- 选一届和往届(或另一届)比,两边都至少 20 人做过的题才比;分比往届差 / 差不多 / 比往届好三组,一题一根哑铃条
- 侧栏「历年概况」改回「年度趋势」,地址换成 /admin/problem/trend

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 13:10:18 +08:00
xuyueandClaude Opus 5.5 318ffac90f feat(年度趋势): 历年概况那张表只有一堆数、看不出趋势;改成按届比,这届和往届在同一批题上逐题比一次就对
- 新接口 /problem-analytics/grades:每道题在各届(班号前两位)的人数和一次就对人数
- 删掉 /problem-analytics/yearly 和只给它用的学年时间函数

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 13:10:18 +08:00
xuyueandClaude Opus 5.5 0980ea858a feat(卡点分析): 后台卡点分析按知识点 → 题 → 一道题重做,年度趋势改名历年概况只留逐学年总表
Deploy / deploy (push) Canceled after 0s
- 选班后只列这个班课上布置过的题,右栏换成「交了几次才对」和交得最多的人
- 历年概况可以导出表格;旧地址 top_ac_trend 跳到新页面

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 12:55:49 +08:00
xuyueandClaude Opus 5.5 b2c802174c feat(卡点分析): 「卡住」原来数的是错过一次的人,做的人多的题全排在前面;改成看一次就对、交几次才对,能按班级和时间段筛
- 卡点按「人 × 题」算:一次就对、做对之前交了几次、还没做对几人,带知识点;一道题给每个人的情况、错在哪、全站历年一次就对
- 年度趋势换成历年概况:学年按 9 月切(原来按自然年),进行中的学年和去年同期并排
- 删掉旧的 /problem-analytics/stuck 全站前 40 和 /ac-trend

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 12:55:49 +08:00
xuyueandClaude Opus 5.5 9e23d28f62 fix(自学): 教程代码块输入框空着就运行,报错说成「input() 用的次数超过了输入的行数」
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:55:45 +08:00
xuyueandClaude Opus 5.5 401c1bef7c fix(自学): 上一课 / 下一课下面空出一大截;学习目标里的加粗显示成两对星号
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:41:24 +08:00
xuyueandClaude Opus 5.5 845e41c060 feat(自学): 自学重做——首页课程地图、读一课按项目分目录、代码块就地运行、学完给题做
Deploy / deploy (push) Canceled after 0s
- 顶栏「自学」进新的自学首页 /learn:接着学(按服务端记录,不再串到上一个学生)+ 按项目分组的课程地图
- 读一课:左边目录按项目折叠,正文加宽,右边本课大纲带练一练标记;去掉了不能运行的示例代码栏
- 正文里的代码块能改能运行,报错用题目页那套中文解释;读输入的代码出输入框
- 课末:练一练做到几道 → 学完了 → 老师挑的几道题(必会标出来)→ 下一课
- 练一练统一成绿色提交、结果一行字;手机版目录从底部弹出
- 后台:教程列表按项目分组拖动排序,编辑页左写右看、练一练插到光标处、挑相关题;
  自学情况改成方块格 + 还没打开过的名单

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 09:40:34 +08:00
xuyueandClaude Opus 5.5 6d1bfc522d fix(题目列表): 知识点一多后面就被截成「选…」「循环…」
Deploy / deploy (push) Canceled after 0s
知识点一栏从 190px 加到 260px,挂 4 个以内的都能完整显示;更多的仍截断,鼠标停上去看全部。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:48:28 +08:00
xuyueandClaude Opus 5.5 cdd69764c4 fix(题目列表): 同样两个知识点,有的题写「取余 · 选择结构」,有的写「选择结构 · 取余」
Deploy / deploy (push) Canceled after 0s
知识点一栏改成按左栏的顺序(题数多的在前)排,不再跟着标签挂上去的先后走。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:42:48 +08:00
xuyueandClaude Opus 5.5 afb52ce0f8 feat(题目列表): C 语言课的题在题目名后挂「C语言」,不再混在知识点里
Deploy / deploy (push) Canceled after 0s
「C语言」标签已改成主题分类,像「必会」一样挂在题目名后告诉学生这是 C 语言课专门用的题。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:39:39 +08:00
xuyueandClaude Opus 5.5 da30ae1875 style(比赛/题单/班级PK/统计): 图例和规则说明跟排名页一样多,读起来像说明书
Deploy / deploy (push) Canceled after 0s
比赛排名表底下的图例和用时规则、比赛题目页的「做对人数随时更新」和计分规则、
老师比赛班级页的「学生看不到这一页 · 15 秒刷新一次」和键盘提示;
题单详情的「加入以后…才算进度」「做对一道会自动回到这里」、题单列表的
「老师现在布置的」「加入过的在前」、老师题单进度表底部的颜色说明;
班级 PK 里「格子里是…」「条 = …」「皇冠 = …」「一根柱一档…」「这学期,最近 N 周」、
只有一个班做过的题那行、「根据上面这些数字写,仅供参考」;
统计里「没选班级,先按班级列出来…」「点方块在新页面打开这一条」;
流程图节点库的「拖拽节点到画布中」,都拿掉。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:17:42 +08:00
xuyueandClaude Opus 5.5 c2e05d423f style(排名): 到处是图例和规则说明,读起来像说明书
卡片头上那排图例(做出的题数 / 你 / 前一名 / 后一名 / 你们班 / 进步最大)、
右上角「9月1日起 · 每道题按第一次做对算 · ↑↓ 比周一」、副标题里的
「一样多的,先做到的在前 · 只列前面 N 名」、班级对抗的「全服 · 点班名看详情」、
各卡片标题后的「每周日晚上 · 越高越好」「下周一清零」、签名框下的提示、
班级详情抽屉里几行小字都拿掉。前一名 / 后一名的颜色靠「你」卡里同色标签认。
老师卡里「不计入排名的人」只在本班且真拿掉过人时出现。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:10:54 +08:00
xuyueandClaude Opus 5.5 aba3767fc1 fix(排名): 题数一样时一列灰色短条像没加载完的占位块,看不出是什么
Deploy / deploy (push) Canceled after 0s
条后面加一道淡色的满宽底槽,读得出「离满格还差多少」;桌面图例补上「做出的题数」,
老师也看得到。手机上条本来就是整行底色,不动。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:07:31 +08:00
xuyueandClaude Opus 5.5 eaab224ba8 feat(出题): 测试数据最多 20 组,几百组的题提交详情截图截不下
上传 zip 超过 20 组直接报错(编程题、SQL 题都算);出题页加满 20 组后「加一组」
「AI 想几组输入」变灰,导入超过 20 组的 zip 在浏览器里就拦下,改老题超了不让保存。
上限在契约 TEST_CASE_MAX_CASES。线上超过 20 组的题已经手工缩到 20 组。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:07:30 +08:00
xuyueandClaude Opus 5.5 ab757553d4 style(首页): 「更多」不再半透明
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:09:02 +08:00
xuyueandClaude Opus 5.5 bb1585942a fix(顶栏): 暗色下个人菜单里「暗色」那一行是黑字,看不清;指上去也没有高亮
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:09:02 +08:00
xuyueandClaude Opus 5.5 8b8a9d89f0 fix(排名): 桌面上条太短,压在上面的「前一名」「进步最大」把条整个盖住;标签从条上拿掉,进步最大改成涨跌那一格的橙色徽章
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:09:02 +08:00
xuyueandClaude Opus 5.5 1330fc49af fix(排名): 「进步最大」的人条长时,条上只剩一块白、标签也看不见
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:00:56 +08:00
xuyueandClaude Opus 5.5 367cfc9d5d feat(班级下拉): 全站的班级下拉按年级分组,新年级在上,组里按班号排
Deploy / deploy (push) Canceled after 0s
登录框、提交列表、数据统计、排名、课堂看板、题单班级视图、班级 PK 七处统一走
groupClassOptions。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 12:54:26 +08:00
xuyueandClaude Opus 5.5 1e441411a5 style(前台): 页面整体放大一档,列表不再挤成一团;宽屏上内容居中,不再铺满到两边
Deploy / deploy (push) Canceled after 0s
- index.css 加一张 --oj-* 尺寸表和 .oj-page 外壳,二十几个前台页面改成引用它:
  正文 14→15、页标题 20→24、题目/提交列表行高 40→48、比赛/公告 56、筛选控件 28→34
- 阅读型页面限宽 1200 居中;题目/提交列表 1600、比赛详情 1400、排名 1280、班级 PK 1440
- 1280 宽的筛选条放大后放不下,题目/提交列表在 1366 以下退回 13px 的字
- 班级 PK 五个班起格子里不写「一次 x%」(只剩「一次 8…」);赛跑图线尾的数字不再被截掉
- 手机上比赛列表的「没参加」挪到比赛名下面;题单里「以前做对过 · 旧代码先藏着」缩成「做对过」
- 题目详情页(编辑器)和后台不在这一轮

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 12:43:12 +08:00
xuyueandClaude Opus 5.5 45d79ed366 feat(排名): 全服 100 名以外不报具体名次,写「100 名以外」并提示再做对几道进前 100;赛道每行加高,条不再被挤成一小截
Deploy / deploy (push) Canceled after 0s
- 全服排在 100 名以外:「你」卡和下面的小名次写「100 名以外」,不给前一名、后一名和名次走势,
  改成「再做对 N 道就进前 100」;名单上没有你这一行,图例和副标题也不再提「你」
- 赛道每行从 18px 加到 28px,头像、字、条都大一号(不必刻意塞进机房一屏);
  「前一名 / 后一名 / 进步最大」挂到条的末端,不再单占一列把条挤短;领奖台台阶恢复原来的高度

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 10:45:17 +08:00
xuyueandClaude Opus 5.5 2553c6ddfe feat(排名): 个性签名挂到排名上,领奖台上每人一句、「你」卡里就地改;全服排名只列到第 100 名,展开不再卡死
- 领奖台:头像旁边一个签名气泡(手机在头像上面),只露两行,长的指上去看全文
- 「你」卡:自己的签名带「改」,就地改不用跳设置页;没写的提示「写一句个性签名」;前一名、后一名名字下面带他们的签名
- 赛道:桌面有签名的名字后面一个引号,指上去看;手机直接写在名字后面
- 个性签名以后限 30 个字(老的长签名不动,榜上只露两行)
- 老师在名单「⋯」或台上气泡的「×」能清空不合适的签名(DELETE /rankings/mood/:userId)
- 全服名单最多列到第 100 名:原来展开会一次摊开一千五百多人把页面卡死

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:52:06 +08:00