xuyue and Claude Opus 5.5
67fcd11907
feat(题目): 参考流程图不用再点开,摊在例子后面,画法和学生自己画的图一样
...
Deploy / deploy (push) Canceled after 0s
原来折成一条「老师给的参考流程图」要点开,用 Mermaid 画、整张缩进左栏后字只剩十来像素。
现在默认摊开、放在例子后面(长图不把例子挤出第一屏),用画流程图那套排版和符号画
(FlowchartView,颜色形状和画布共用 paint.ts);只有手写 Mermaid 的老图照旧走 Mermaid。
出题页预览和说明文字一起改。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 16:56:44 +08:00
xuyue and Claude Opus 5.5
a1d14a06bc
refactor(卡点分析): 右栏一道题的详情拆成 StuckDetail 组件
...
Deploy / deploy (push) Canceled after 0s
Stuck.vue 从 1006 行减到 544 行,右栏(做过几人、一次就对、错在哪、各班、交了几次才对、
历年、还没做对的人)连同它的计算和样式挪到 components/StuckDetail.vue;取数、三栏联动、
手机上整屏盖住的那层还在 Stuck.vue。两边都用的百分比和平均次数放 stuckMath.ts,
两边都用的几条小样式(muted / num / track …)各留一份。
纯搬家。全部班级、选一个班、手机打开一道题的详情,各自的顶部和滚到底改前改后截图一致。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 20:40:27 +08:00
xuyue and Claude Opus 5.5
ff3fdc0b1d
refactor(出题页): 编程题和 SQL 题两个出题页抄了两份的零件收到一处
...
Deploy / deploy (push) Canceled after 0s
admin/problem/components/problemForm.ts:判空富文本 isBlankHtml(原来三份,CodePreview 里还有
一份)、难度选项、返回列表的路由、保存失败的提示、标签超长校验、新建页的草稿
(useCreateDraft:停 0.8 秒存、什么都没填就清、编辑页不存)。
纯搬家。新建 / 编辑 × 编程 / SQL 四个页面改前改后整页截图逐像素一致;两种新建页填个
标题、刷新能恢复,「清空草稿」之后本地存储清掉。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 15:43:25 +08:00
xuyue and Claude Opus 5.5
e8a20d12f9
refactor(前端): shared / utils 不再 import oj 和 admin 下的任何东西
...
依赖方向原来是反的:顶栏、登录框、举手列表这些 shared 组件从 oj/ 里拿东西。
- 跨端的接口挪进 shared/api.ts(按 apps/web/CLAUDE.md 的分法):学生端题目列表、
出题人列表、这节课的题、待弹的成就
- 这节课的 store → shared/store/lesson.ts;头像 RankAvatar → shared/components
- 纯函数挪进 utils/:举手列表的错法归类 errorKind、它依赖的答案错误分类 wrongAnswer
和 Python 报错翻译 pythonError、题目列表行的 toProblemRow
- 只有后台在用的出题人下拉 AuthorSelect 挪回 admin/components
纯搬家。首页、题目列表、题目页、排名、课堂看板、后台题目列表打开无报错,
顶栏题号框敲 1001 回车直达题目页。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 15:11:21 +08:00
xuyue and Claude Opus 5.5
d4aadc7722
fix(后台列表): 加载失败有提示、慢的时候表格转圈、旧请求晚回来不再盖掉新结果
...
Deploy / deploy (push) Canceled after 0s
后台八个列表(题目、比赛、用户、公告、题单、AI 报告、从题库加题、标签下的题)原来是
`const res = await getXxx(); rows.value = res.results`:接口 500 或断网时什么都不提示,
表格停在旧数据上;关键词防抖和翻页一交错,先发的晚回来会把新结果盖掉。
shared/composables/listLoader.ts 的 track() 把请求包一层:带请求序号、出错按后端文案提示
(登录过期、没权限这几种全局拦截器已经提示过,不弹第二遍)、表格挂 loading。
实跑:六个列表各 10 行正常;拦掉题目列表的接口再翻页,弹「网络异常,请检查网络后重试」
(原来没有任何反应)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 15:07:10 +08:00
xuyue and Claude Opus 5.5
4dfd14f95b
refactor(契约): 前端 60 个写请求的请求体接上契约类型,前后端对不上编译期就报
...
Deploy / deploy (push) Canceled after 0s
- 前端 oj/api.ts、admin/api.ts、shared/api.ts 的 post / put 请求体一律 `satisfies XxxRequest`,
只在编译期检查,不加运行时校验(和「只在三处挂运行时闸门」的规矩一致)
- 契约里的 XxxRequest 从 z.infer 改成 z.input:请求类型描述的是「客户端可以发什么」,
带默认值的字段可以不传。后端从不用这些类型(它用 parse 出来的 data),不受影响
- 补了四个漏导出的请求类型(比赛题目排序、题单题目排序、标签分类、检查用户名)
- 接上之后对不上的几处:编辑用户的角色和题目权限经 toAdminType / toProblemPermission
收窄,导入用户的行改成四元组,练习题数据改成 Record,格式化的语言只收后端认的四种
(isFormatLanguage)。出题页和成就的请求体是「表单校验兜底、出站补默认值」,
用 Partial<…> 只核键名和值的类型
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 15:03:58 +08:00
xuyue and Claude Opus 5.5
309ca0ece2
refactor(前端): 全站共用的班级下拉、胶囊配色挪出提交列表目录,编辑器不再偷读题目页的 store
...
Deploy / deploy (push) Canceled after 0s
- classLabel / groupClassOptions / classSelectOptions 挪到 utils/classes.ts,useTone 挪到
shared/composables/tone.ts:原来放在 oj/submission/ 下,被前台、后台、shared 引了 50 多处
- 流程图编辑器的草稿键改由题目页传进来(键名不变,学生存着的草稿照样读得到)。原来编辑器
自己读题目页的 store 和路由拼,后台出题页也用这个组件,那边 store 是空的
- SQL 表名补全改由题目页传表进来。原来补全直接读题目页的 store,自学页的 SQL 代码块会
补出上一道看过的题的表名
实跑:提交列表、题目页、排名、后台题目页、SQL 题、流程图题打开无报错;SQL 题输入 stu
补出 students;流程图加一步,草稿照旧存在 flowchart-v2-problem-<题号>。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 14:59:55 +08:00
xuyue and Claude Opus 5.5
3bb74171c3
perf(加载): 排名、看板、班级 PK、智能分析第一次打开少下两百多 KB
...
这几页的 Markdown 只在点开抽屉 / 弹层、或 AI 报告出来时才用得上,
却连着整套代码高亮(CodeMirror 和三种语言的解析器)一起静态打进了页面。
改成用到才加载:排名 356→133KB、看板 380→157KB、PK 311→88KB、
智能分析 308→86KB(gzip 后)。
网站图标原来塞了 16 到 256 像素九张图共 192KB,只留标签页用得上的
16 到 48 像素四张(原图像素不变),17KB。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 13:48:35 +08:00
xuyue and Claude Opus 5.5
a814776fb9
feat(教程): 改练一练时可以顺手清空学生的作答——改了答案,按旧答案做对的人不再算做对
...
Deploy / deploy (push) Canceled after 0s
练一练是原地改的,作答记录跟着题走:改了答案或选项,按旧答案做对的人仍然显示做对、
「最后错在 选了 B」说的也是旧选项。编辑框底下多一个「同时清空学生的作答(N 人做过)」,
没人做过时不出现;勾上保存,学生那边这道题回到没做。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 12:28:47 +08:00
xuyue and Claude Opus 5.5
1ebb23cdac
feat(自学情况): 看得到配套题做没做——每人一列、每课一个页签、学生明细里逐题列出
...
Deploy / deploy (push) Canceled after 0s
- 方块格多一列「配套题」:他打开过的那些课挂的题,做对几道 / 一共几道;格子提示里也带上
- 右栏分「练一练 / 配套题」两个页签:每道题读过这课的人里几人做对,点开看谁没交、谁交了没对,
一键跳到这个人这道题的提交
- 学生明细每课多一段配套题:做对没有、交了几次、最后哪天交的
- 做对不论早晚,读教程之前在课上做对的也算;口径同学生端课文里那个勾(代码 AC 或流程图 A / S)
- 1366 宽下 C 语言 20 课也不用横着滑了:「最后学习」只留日期,几列收窄
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 12:21:34 +08:00
xuyue and Claude Opus 5.5
7839a65f59
feat(自学情况): 每个学生练一练做到哪了——格子分出做了一部分、点名字看逐题明细
...
- 方块格多一档「做了一部分」:按做对的比例从下往上涨绿,一道没做对的底下压一条橙;
鼠标停上去是「练一练 3/5,错了 4 次」
- 「练一练」列改成 做对/应做(应做 = 他打开过的课的练一练总数)
- 点学生名字从右边滑出明细:每课一段,逐题写第几次做对、交了几次、最后错在哪;
手机上返回键关它
- 点开一道练一练,底下多一串「读了这课还没做」的人
- 顺手修:那个弹框七列加起来比弹框宽,「最后作答」被挤没了;改成一列用户名
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 11:40:30 +08:00
xuyue and Claude Opus 5.5
859a537804
feat(用户): 选一个班就能下载全班的用户名和密码(表格)
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 11:22:10 +08:00
xuyue and Claude Opus 5.5
02e2fa7d9b
feat(后台): 手机上也能用了——菜单收进左边抽屉,列表一行一张卡,不用再横着滑
...
- 侧栏手机上不再占一列图标,顶栏左边 ☰ 拉出整张菜单,按返回键先关菜单
- 题目、比赛、用户、公告、题单列表手机上一项一张卡:名字一行、小字一行、按钮一行,
「学生看得到」开关单独一列靠右
- 卡点分析、AI 报告手机上点开一项整屏看,返回键关掉;年度趋势、自学情况、首页改成上下排
- 出题页、教程编辑、题单编辑、标签、设置手机上排成一列;测试数据「删掉」手机上常驻
- 弹框一律收进屏幕宽度
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 11:21:58 +08:00
xuyue and Claude Opus 5.5
0ffc405a20
feat(前台): 各页直达后台对应功能——编辑这一课、新建比赛、编辑这条公告……
...
Deploy / deploy (push) Canceled after 0s
题目页「编辑题目」从只给超管放宽到有权改这道题的人(含学生管理员改自己出的题);
题目、比赛、题单列表加「新建」;自学首页加「自学情况」「管理教程」,课文加「编辑这一课」;
公告加「编辑这条」「发公告」;成就加「管理成就」;智能分析加「AI 报告」,看某个学生时
带着用户名过去直接筛到他。按钮统一走 shared/components/AdminLink.vue。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 14:02:29 +08:00
xuyue and Claude Opus 5.5
cea2c7f102
fix(手机): 比赛排名表看不出能往右滑;班级 PK 每周图日期字太小;后台题目列表「藏着的」被切掉
...
Deploy / deploy (push) Canceled after 0s
- 比赛排名:手机上名字、做对、用时就占满一屏,每题的格子全在屏幕外。列收窄,前一两道题的格子露出来
- 班级 PK:每周人均横轴在手机上是 10px 的「10月12日」,改成 12px 的「10/12」
- 后台题目列表:手机上「全部 / 学生看得到 / 藏着的」换小号按钮,放不下就横着滑
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 12:44:57 +08:00
xuyue and Claude Opus 5.5
30bff2acc4
style(后台): 后台各张列表都改成斑马底纹(题目、用户、比赛、公告、练一练记录、标签、AI 报告、成就)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:45:22 +08:00
xuyue and Claude Opus 5.5
3987ce0ff6
feat(后台设置): 设置页改了就存——开关一拨、班级一加一删立刻存上,网站名停手半秒再存,右上角写「已保存」
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:45:22 +08:00
xuyue and Claude Opus 5.5
0ee5444ede
feat(后台设置): 设置页重排成网站、班级、开关、判题机几块,保存挪到右上角;班级按年级分组不用再拖;判题机写出多久没动静;AI 小助手(MaxKB 挂件)整个删掉
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:37:35 +08:00
xuyue and Claude Opus 5.5
ee649b81b1
feat(后台成就): 成就按指标排成阶梯,一组一行从低到高,每档写解锁人数和占全部学生的比例,下架的变淡;点一档就编辑,删除挪进编辑框
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:32:33 +08:00
xuyue and Claude Opus 5.5
6470f56f87
fix(后台): 用户、题目、比赛、公告、标签几张列表的操作不再收进 ⋯,直接摆在行尾;名字和题目那列不再吃掉整行的空,创建日期不再折成两行
...
1366 宽的屏上题目列表、比赛列表的按钮都放得下;题目的知识点多于两个时只摆一个加「+N」。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:29:56 +08:00
xuyue and Claude Opus 5.5
bd3a57468f
feat(后台公告): 公告列表一行一条,「编辑」常驻、置顶和删除收进 ⋯;改公告时标题、类型、置顶、学生看得到排一行,保存挪到右上角
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:21:49 +08:00
xuyue and Claude Opus 5.5
56071c71bd
feat(后台首页): 后台首页改成看板——判题机、今天提交、在线、正在上课一排,全站的数一排,最近 30 天每天交了几次一张图;抽签改成选班级
...
拿掉要手输班级前缀的班级排名表(前台排名页有)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:17:00 +08:00
xuyue and Claude Opus 5.5
6e6816436e
feat(后台 AI 报告): 左边一份一行、点哪份右边就是全文,不用再弹框、关框、点下一份;从没用过的「PIN」收成一个「固定给他看这份」开关
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:11:07 +08:00
xuyue and Claude Opus 5.5
32f7bcaf8b
feat(后台比赛): 比赛列表一行看全——开始时间和多长、几道题、几人参加、学生看得到;期中期末挂标,操作只剩「编辑」「成绩」和 ⋯
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:07:24 +08:00
xuyue and Claude Opus 5.5
c59e31eeb2
feat(后台标签): 标签页改成知识点、主题左右两栏,一眼看出每个标签挂了几道题;改名、换分类、删除收进 ⋯,没归类的单独放最上面
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:04:06 +08:00
xuyue and Claude Opus 5.5
5561e0bc3a
feat(后台用户): 用户列表按班级看、「重置密码」常驻;批量建号粘进名单当场列出会建成的账号,重名和已有的先点出来,建好能下载名单、打印账号条
...
用户列表去掉 ID、真名、占位邮箱和四颗彩色按钮。下载的名单开头带 BOM,Excel 打开中文不再乱码。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 13:56:03 +08:00
xuyue and Claude Opus 5.5
97049d562b
feat(后台题目): 题目列表重排——1366 屏上不用横滚就看得到「学生看得到」开关;一行只剩「编辑」和 ⋯,有人交过的题删除直接灰掉;勾几道一次放出、藏起、加减知识点
...
去掉内部 ID、难度、看不懂的「功能」图标和反馈表情几列;题目名点了就是编辑。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 13:27:39 +08:00
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude 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
xuyue and Claude Opus 5.5
c17f88cdbb
feat(题单): 题单页重做——布置中的放最上面,详情顶上一条进度和奖章阶梯,没加入看得见题点不进;老师看全班、后台一屏编辑
...
Deploy / deploy (push) Canceled after 0s
- 列表:布置中的大卡片(做对几道、布置到哪天、再做对几道拿哪个奖章),其余小卡片,加入过的在前
- 详情:进度 + 奖章阶梯(下一个金圈「再做对 n 道」),题目两列写几点做对 / 交过几次;
以前做对过的标「旧代码先藏着」;做完整条变绿,烟花只在做完那一刻放
- 老师多一个「全班情况」页签;题目页从链接直接进来没加入时,条上给「加入题单」
- 后台一屏编辑:布置一周 / 两周 / 四周 / 选日期,公开开关,粘贴多个题号一次加,拖动排序,奖章只剩两种条件
- 旧代码藏着的地方都说清楚是哪个题单、哪天之后能看
- 修掉列表卡片把选做题数说成「新加了 N 题」
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 22:01:39 +08:00
xuyue
2224478294
fix
Deploy / deploy (push) Canceled after 0s
2026-10-09 21:35:34 +08:00
xuyue and Claude Opus 5.5
dd10e64b38
style(出题页): 左边写的地方放大、右边「学生看到的样子」缩小,右边能收起来专心写
...
Deploy / deploy (push) Canceled after 0s
编程题、SQL 题两张出题页一起改:两栏 3 : 2,右栏头上「收起 ›」,收起后剩一条竖着的「学生看到的样子」点了再展开;收没收记在本机
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 21:03:50 +08:00
xuyue and Claude Opus 5.5
151bbdcb50
feat(比赛): 比赛页一页看题目和自己的名次;排名竞争感做足、结束有领奖台;老师考试中看全班、考完看成绩;新建比赛一屏做完
...
Deploy / deploy (push) Canceled after 0s
- 学生比赛页(设计稿 B):左边题目带几人做对、谁最先做对;右边我第几名、5 分钟里升了几名、再做对 1 道能到第几名、我前后的人
- 期中、期末考试中只有自己的进度,写明「排名考完公布」,题目页的排名入口也藏起来
- 排名页:按班筛、名次变化、最先做对的深绿格、自己那行钉住;结束后前三名领奖台 + 我的成绩卡;排名曲线和学生的「导出数据」去掉
- 老师的「全班情况」:卡在一道题、15 分钟没交的放最上面,没进来的人对上看板的请假;考完变「成绩」,点格子看代码、标看过了(代替后台审核页),导出成绩
- 比赛列表:进行中的一大块「接着比」,已结束的写我第几名,前三带奖杯
- 新建比赛:默认 10 分钟后开始,时长点按钮,搜题号把题加进来自动编号、拖动排顺序
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 20:58:59 +08:00
xuyue and Claude Opus 5.5
b94e028ff4
feat(比赛): 榜单一次给全,带名次变化和每题谁最先做对;期中、期末考试中学生看不到排名;老师能看全班情况
...
- GET /contests/:id/scoreboard 代替 /rank:整张榜、5 分钟前的名次、每题做对 / 做过人数和学生里最先做对的人(不再用 is_first_ac,老师赛中试做会占掉它)
- 期中、期末进行中:学生只拿到自己那一行,人数清零、「全班最先」也不给,考完一起公布
- GET /contests/:id/class-view(老师):真名、每人最后一次交、没进来的人 —— 比赛不绑班,来了一半以上的班才算这场的班
- 比赛列表带题数、参赛人数、我的名次和做对数,能筛「我参加过的」「期中 · 期末」
- PUT /admin/contests/:id/problems/order:比赛题按顺序重编 1、2、3,比赛结束后不让动
- 后台「审核」列表接口去掉,并进前台老师的成绩页;「看过了」的写接口留着
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 20:58:59 +08:00
xuyue and Claude Opus 5.5
4ef2794552
fix(后台): 出题页读回来的测试数据每组多一行空白;导入大包后原来的例子丢了
...
Deploy / deploy (push) Canceled after 0s
- 测试点文件末尾的换行读回来时去掉(上传时补回去),比对改没改过也按去掉后的比,没改的题不会白白重传
- 导入超过 100 组的 zip 时先把例子拿下来再切成「不展开」,例子不再丢
- 「不展开」时保存栏改说「加一个例子」;刚导入还没保存时不给「下载 zip」(下到的是库里的旧数据)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 20:14:36 +08:00
xuyue and Claude Opus 5.5
ba5b9ada0e
feat(后台): 编程题出题页重做——左边写,右边是学生看到的样子;例子和测试数据的输出都由标准答案跑出来,改老题能直接看、改测试数据
...
- 例子就是测试数据里勾了「当例子」的几组,不再手抄输出;老题的例子不在测试数据里的补到最后
- 改了答案,输出变了的那组标黄、写清原来存的是什么;答案在某组上报错就挡住保存
- 没存标准答案的老题输出手写;太大的测试数据(>100 组或单文件 >32KB)只能导入 / 下载 zip
- 预制代码只写学生看得到的那段,前后藏起来的代码收进折叠;语法要求先拿标准答案自测
- 流程图两个互斥开关改成三选一;时间 / 内存限制能改了;草稿只给新建页
- 后端:读回测试点原文、语法要求自测、AI 想测试输入三个接口
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 20:07:34 +08:00
xuyue and Claude Opus 5.5
033a245abb
feat(SQL 题): 增删改题除了第 1 组,其余测试数据可以一行都不改——用来抓学生多改(WHERE 写漏、写宽)
...
Deploy / deploy (push) Canceled after 0s
原来每组数据都必须有被标准答案改到的行,所以「这组里没有研发部,看学生会不会把别的部门也改了」
这种测试数据建不了。现在只有第 1 组(题面上给学生看的那组)还要求改到行;其余组一行都没改时
出题页写「一行都没改」、预览写「执行后所有表都没有变化」。删掉第 1 组、别的组顶上来时自动按
新位置重查。判题本来就不管这一条,不受影响。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 19:17:42 +08:00
xuyue and Claude Opus 5.5
2cb39fd96b
feat(后台): SQL 题有了自己的出题页——左边写,右边就是学生看到的样子,改答案、改数据马上重跑
...
- 「新建题目」先选编程题还是 SQL 题,选了就不能改;编辑时按题目本身进对应的页
- SQL 出题页(设计稿「SQL 出题页」方案 B):测试数据一组一行,改完自动重跑,
跑不通的用中文说原因;保存时才打包上传测试点,不用再手动「预览」「上传」
- 新建时存草稿,误关页面不丢
- 编程题出题页去掉 SQL 那一堆分支(以前勾上 SQL 会静默清掉语法要求和流程图)
- 题目列表能按题型筛,SQL 题标题后面挂标签
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 18:59:15 +08:00
xuyue and Claude Opus 5.5
25d3296410
feat(SQL 题): 增删改题的期望结果标出执行后变了的格子,删掉的行写清是哪几行
...
学生原来只能拿两张表逐格对,看不出要改的是哪几行。现在改过的格子、新插的行标黄,
删掉的行在表下面写「删掉了 2 行(id 是 2、3)」。按第一列配对,对不上就不标。
数据表和期望结果抽成一个组件,后台出题页的预览也用它。
题型判断统一走契约的 isSqlProblem()。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 18:59:15 +08:00
xuyue and Claude Opus 5.5
30f34f0e36
fix(老师权限): 老师在自己比赛里点题目「可见」没反应、看不到学生的智能分析入口等一批权限错位
...
- 比赛题的可见开关按题目作者判归属,从题库加进比赛的题作者是别人,老师点了 404 且无提示;
改成和编辑、删除一样按比赛创建者判(canEdit)
- 学生主页「智能分析」和「查看指定用户」只给超管,后端本来就允许老师;改成老师可见
- 排名页班级详情的「AI 分析」学生也看得到,点了权限不足;只给老师显示
- 班级 PK 页解构 store 丢了响应性,资料晚到时老师看不到「AI 分析」
- 学生管理员能给任何人的流程图重新评分且不限流;别人的提交只有老师能重评,免限流也只给老师
- 超管没退登就过期的机房电脑上,下一个登录的老师继承演示模式、看不到后台和看板且关不掉;
演示模式只对超管生效
- 老师的出题权限能设成「无权限」,设了比赛题目页全是权限不足;后端兜成「仅自己」,
编辑框里老师不再给这个选项
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-08 14:00:04 +08:00
xuyue
bde387e8bc
fix
Deploy / deploy (push) Canceled after 0s
2026-10-08 12:29:35 +08:00
xuyue and Claude Opus 5.5
0bcc981e6f
fix(提交列表/统计): 按方向键会顺手切掉「代码/流程图」、重判后右栏还是旧内容、没人交时统计说「全都做完了」
...
提交列表:
- 焦点在单选框、下拉框上时方向键不再一边切控件一边换条;跨页没回来前不再连跳一整页
- 重判、重新评分之后右栏重新拉,不再命中旧缓存;同一条新旧请求不再互相覆盖
- 从「我的提交」点顶栏「提交」、浏览器后退时,地址里没有的筛选回到默认
- 找回点用户名开个人主页;「只看他 / 只看这题」学生也能用;重判不用等代码拉下来
- 手机上老师也能重判、能按语言筛,流程图行有手机排版;学生界面带着的班级筛选显示成能点掉的标签
- mermaid 画不出来时先说中文、原始报错折起来
统计页:
- 没人交时说「这段时间没有人交」,不再说「全都做完了」;没填题号时各处统一叫「做对过题」
- 班级按 class_name 单独传;查询失败清掉旧数据并说清原因;标签跟着查出来的那一份走
- 「语法未过」的格子单独标「语」;正确率不算还在判的;截断提示说清哪些数字受影响
- 看板的请假隐藏只藏还没交过、没在举手的人,「恢复」只恢复这个班的
- 手机上筛选折行、上下排,不再挤出屏幕
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-29 18:52:58 +08:00