xuyue and Claude Opus 5.5
d2fc0382ec
feat(流程图): 没走对的图,AI 对照答案说出错在哪个框、该怎么改,并把那个框标红
...
原来只有程序拼出的现象(「输出 a」输出的是 2,应该是 8),指的是出结果的框,
错的根子常在前面,学生和老师都看不出该改哪里。跑完以后再请 AI 看题目、图、
没走对的几组和老师的答案,写「哪里错了 / 可以这样改」两句,指出真正要改的框;
提交列表右栏的图和题目页画布上标红它。等级照旧只由跑出来的结果定,
点评失败或像代码就不要,退回只显示逐组结果。老提交不补。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:52:05 +08:00
xuyue and Claude Opus 5.5
8bd3d998ae
fix(提交列表): 筛选栏折成两行时「统计」单独掉下去会跑到最左边
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:41:47 +08:00
xuyue and Claude Opus 5.5
0f75fd1bd0
fix(提交列表): 流程图右栏窄时题目名被「查看大图」「重新评分」挤成一个字
...
右栏不到 760 宽时这两个按钮只留图标,字放进悬停提示。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:41:47 +08:00
xuyue and Claude Opus 5.5
5c997b6276
fix(提交列表): 窗口窄时筛选栏的学生、题号框被压扁,「统计」被挤出屏幕
...
排不下就折成两行,各个框保持原宽;1280 以上照旧一行、高度不变。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:38:53 +08:00
xuyue and Claude Opus 5.5
a24bb6c80b
feat(提交列表): 底栏加一个按钮把左边列表收窄,代码区留宽一点
...
收窄后每条排成手机上那样的两行(名字 + 结果、时间 + 题目 + 语言),
翻页换成「页码 / 总页数」;收没收着记在本机。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:37:00 +08:00
xuyue and Claude Opus 5.5
c6458eb373
fix(提交列表): 屏窄或浏览器放大时,右栏顶上的按钮和底栏「本页第几条」被切掉
...
右栏宽度不到 600 时顶行固定拆成两行(名字和按钮一行、题目一行),
底栏收起方向键提示;不到 440 再收起「本页第几条」,让给两个复制按钮。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:37:00 +08:00
xuyue and Claude Opus 5.5
d1b47e268e
fix(提交列表): 停在第一页时右栏每 15 秒重载一次,放大看的流程图被自己关掉
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:23:51 +08:00
xuyue and Claude Opus 5.5
5f1c9072eb
fix(课堂看板): 布置题目时题号打到一半,每 15 秒被清空一次
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:21:07 +08:00
xuyue and Claude Opus 5.5
67b13a9345
fix(流程图): 老提交重新评分后四项明细全显示「0 / 0」
...
Deploy / deploy (push) Canceled after 0s
老办法(四项打总分)的 prompt 只写了 "criteria_details":{},模型换成 deepseek-flash
之后直接给 {"逻辑正确性": 32} 这样的裸数字,详情页读不到 score / max。prompt 里把
四项的形状写全,存之前按 { score, max, comment } 收好(缺满分按 40/30/20/10 补);
0036 把线上已经存进去的 4 条改回来。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:11:35 +08:00
xuyue and Claude Opus 5.5
d8e0efd05e
feat(课堂看板): 做对的格子写第几次做对,点开看他今天交的每一次和代码
...
- 格子:一次就对的还是「✓」,第 9 次才对的写「✓ 9」
- 点做对的格子弹出方块串(一格一次、从早到晚),停在哪格看哪次的代码,
默认停在做对前最后错的那次;下面能开这次提交、去提交列表看全部
- 方块配色和代码缓存从统计页的 AttemptSquares 抽到 statistics/attempts.ts 两边共用
- 点开一道题后面板里的题名可以点,新标签打开题目
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:09:35 +08:00
xuyue and Claude Opus 5.5
940895f643
feat(课堂看板): 接口给做对了的格子带上今天每一次代码提交和第几次做对
...
原来今天最后一次提交只给没做对的格子;现在同一条查询取今天全部,做对了的格子
多带 trail(从早到晚的 id / 结果 / 时间)和 acceptedTry(今天第几次做对,
以前就做对了的为 null)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 21:09:35 +08:00
xuyue and Claude Opus 5.5
38360e8668
perf(流程图): 流程图改用 pele 渲染,懒加载从 200 kB 降到 44 kB(gzip)
...
Deploy / deploy (push) Canceled after 0s
mermaid 换成 obsidianmd/pele:同一套 Mermaid 语法、同步渲染、没有依赖。
库里 2170 张图(题目参考图 36、学生提交 2134)两边逐张对过,能画的和报错的完全一致。
配色按 pele 的 DOM 重写选择器,颜色不变;版本锁死在 1.6.0。
顺带按 modernPolyfills: true 重新探测了 polyfill 清单(50 项),并改正注释里
「DEBUG 会打印全集」的说法 —— 写死清单时它只回显清单。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 20:50:17 +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
ef7d065419
refactor(课堂看板): 布置题号、请假框拆成组件,格子的显示规则挪成纯函数
...
board.vue 从 1480 行减到 1283 行:
- components/LessonForm.vue:布置这节课的题(顶上一行的小条和刚上课时的大框是同一个组件的
两种样子,语言默认、推断的题带进框里这些规则跟着走)
- components/LeaveModal.vue:请假框(谁能算请假的规则还在看板,框里只管勾)
- boardCells.ts:格子的字、颜色、悬停说明和「卡住」的次数线,同 errorKind.ts 的做法
纯搬家。看板、选中一道题、请假框、勾了请假、顶上编辑、刚上课的大框(电脑 / 手机)改前改后
截图一致(唯一不同是测试学生的「在线」五分钟后过期变成「5 分钟前在」);顶上一行布置 /
清掉、大框布置、请假确定后「请假 1 人」并排到最下、再打开勾选还在、全部取消都正常。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 20:37:13 +08:00
xuyue and Claude Opus 5.5
871861220e
refactor(提交列表): 选中翻阅、实时更新、「这节课」、带条件去统计拆成四个 composable
...
list.vue 从 1834 行减到 1604 行,拆出 oj/submission/composables/ 下的
rowCursor(↑ ↓ 换条、页头页尾自动翻页)、listLive(正在评分的 3 秒刷新、第一页的
「有 N 条新提交」)、lessonFilter(「这节课」一键筛)、statsLink(和统计之间来回带条件)。
注释原样跟着走。
纯搬家。七个状态(列表、↓↓、↑、流程图、我的、手机列表、手机详情)改前改后截图一致;
连按 31 下 ↓ 翻到第 2 页,别人交一条后 18 秒内出「有 1 条新提交」,「这节课」筛到
班级 + 题号 + 今天。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 15:48:43 +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
465dbfd42f
refactor(后端): 权限判断收到一处,路由文件之间不再互相 import
...
- services/permissions.ts:「超管或创建者」原来在比赛、题单、比赛题目(4 处)、
services/contest.ts 各抄一遍,「题目全部权限」在题目和标签两个路由各写一份
- services/submission-filters.ts:提交列表的用户名 / 班级 / 题号筛选,原来
submission.ts、flowchart.ts 从 submission-statistics.ts 这个路由文件里拿
- services/class-activity.ts:课堂做题记录的口径和「正在上课的班」,原来后台
conf.ts 从 classroom.ts 路由里拿
- services/problem-tags.ts:标签名去重、按名查标签,原来 tag.ts 从 admin/problem.ts 拿
纯搬家。三种身份(超管 / 老师 / 学生)打了 26 个受影响的接口,改前改后状态码和响应体
逐字节一致,包括「不是自己的比赛 / 题单 / 题目报不存在」那几条。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 14:53:24 +08:00
xuyue and Claude Opus 5.5
5787efe023
refactor(前端): 角色判断改用契约里的白名单,不再在 user store 里逐个列角色
...
契约 roles.ts 写明 ADMIN_ROLES / TEACHER_ROLES 是全仓唯一的定义处,前端 user store
却用 === 把角色又列了一遍;将来加角色只改契约就会两边对不上。判断结果不变。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 14:53:24 +08:00
xuyue and Claude Opus 5.5
fb11e86151
perf(排名): 一个班同时打开排名、班级对抗、按人数排的题目列表时只查一次库
...
这几样谁来看都一样,原来每次请求现算:全服全部时间的排名本机 16 核就要 250ms,
服务器两核还要判题。services/cache.ts 进程内缓存 10 秒,同时到达的相同请求等同一个结果:
- 排名榜面的原始数据(「我」排第几、前后一名照旧每次现算):250ms → 6ms
- 班级对抗 / 详情 / PK 共用的这学期数据:40ms → 1ms
- 题目列表按做对、做过人数排序的全表人数:45ms → 20ms
40 个人同时打开全服排名(缓存是冷的)一共 342ms。代价是做对之后最多晚 10 秒上榜。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 14:47:24 +08:00
xuyue and Claude Opus 5.5
307b0725d0
perf(判题): 判题机上同时跑的程序从最多 8 个压到 4 个,挤的时候不再把不超时的判成超时
...
原来四道闸各管各的(worker 判题 2、api 试运行 2、提交前编译检查 2、worker 里流程图
评分的试运行又 2),api 和 worker 两个进程互相看不见,峰值 8 个程序压在服务器两个核上;
判题机按墙钟判超时,挤到一定程度会冤枉学生。
judge/slots.ts 在 Redis 里按池数名额(每个站点各数各的):
- 后台池(正式判题、诊断重跑、流程图评分)上限 JUDGE_CONCURRENCY
- 交互池(运行例子、自己输入、生成测试点、编译检查)上限 TRIAL_CONCURRENCY
两池不互相借,正式判题排再长也挤不掉学生的「运行例子」。名额是带到期时间的租约,
进程被杀了到期自动作废;Redis 出错直接放行。正式判题的超时从拿到名额才开始算。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 14:47:24 +08:00
xuyue and Claude Opus 5.5
64994b9499
perf(判题结果): 全班一起交、判题排队时不再每人每 2 秒问一次结果
...
Deploy / deploy (push) Canceled after 0s
原来交上去 5 秒没结果就每 2 秒(流程图 3 秒)拉一次,分不清 WebSocket 断了还是队列长:
50 人一起交、队列排一分钟时每秒二十几个请求,全在和判题抢那两个核。
- 收到这一条的任何推送(服务端订阅时就回一帧当前状态)就认定 WebSocket 是通的,
轮询退到 20 秒一次,只防推送丢失;连接断了才回快档,2 秒起按 1.5 倍退到 10 秒
- 拉失败不再永久停掉(掉线那几秒拉失败是常事),连着失败 5 次才放弃
- 页面在后台时不拉;比赛题目页、榜单、班级页的定时刷新也一样,切回来立刻补一次
- 代码判题和流程图评分共用 shared/composables/fallbackPoll.ts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 14:37:08 +08:00
xuyue and Claude Opus 5.5
593a409fca
chore(部署): 服务器上课高峰时网页先于判题拿到 CPU,内存挤满时不先杀数据库
...
Deploy / deploy (push) Canceled after 0s
服务器 2 核 7.5G、没有 swap,和二十多个别的服务共用(空闲可用 3.5G):
- postgres:shared_buffers 512MB(全库 249MB 能常驻)、work_mem 16MB、shm 256m、
oom_score_adj -500;事务空闲 60 秒断开 + TCP 保活,机房断网时锁不会挂两小时
- postgres、api 的 cpu_shares 加倍(按比例分、不封顶)
- 判题沙箱、worker 内存上限 512m → 1g:最多六份同时编译、SQL 判题两个子进程都能顶满 512m
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 14:21:02 +08:00
xuyue and Claude Opus 5.5
55038cc78b
fix(判题): 判题机卡住不再让全班一直「等待评分」,重判和同时交对也不再把做对题数算多
...
Deploy / deploy (push) Canceled after 0s
- 正式判题、样例重跑、运行时错误诊断都加了超时(默认 120 秒,时限放宽的题按比例放宽),
超时记系统错误、提示是中文;回包和试运行一样边读边数,超过 16MB 就掐断,
免得一个疯狂打印的错误程序把 worker 撑爆
- 做对题数、中等、困难、一次就对改成在锁里按定义现数:原来逐次 +1,两条挨着判完或重判
一条做对的提交都会多加,库里 372 人多了 1–4 道。0035 把存量一次订正
- 重判不再给提交次数、凌晨/早起计数 +1,编译错误按前后差值改;「错了几次才对」只数这条之前的
- 已拿到的成就数只 jsonb_set 那一个键,不再整块写回冲掉并发判题刚写的指标
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 14:15:08 +08:00
xuyue and Claude Opus 5.5
5aafcf172b
chore(前端): 删掉没人引用的旧网站图标(红色 D)
...
页面用的是 noto--dog-face.ico,这个 favicon.ico 是从 ojnext 搬过来时留下的。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 13:51:10 +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
b757e2ac38
fix(题目): 机房电脑上 ☀️ ✂️ ⬆️ ⚠️ ☯️ 🅰️ 这些 emoji 还是黑白的
...
Deploy / deploy (push) Canceled after 0s
它们中文字体里也有字形,Chrome 105 按字体栈顺序先用了中文字体。同一套 emoji 字体
再挂一个只含纯 emoji 码位的名字,排在字体栈最前面;数字、© ™ ↔ ▶ ♠ 这些正文符号不受影响。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 14:59:08 +08:00
xuyue and Claude Opus 5.5
1dcabff8ce
fix(课堂看板): 表头的题名只露五个字,名字那列却空着一大块
...
名字、在线、做对、最后交按内容收紧,剩下的宽度题目列平分;题名写全,长的折成两行。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 14:59:08 +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
e7b6e27b85
feat(课堂看板): 标出谁在线、谁今天没上过线,请假框里没上线的人分在前面一堆
...
机房有两人共用一台电脑的,同桌只有一个登着,只看「此刻在不在线」会把旁边的人
当成没来。所以每次记在线时按天再记一笔「今天最后一次上线」:
- 看板「在线」列(原「在写」):开着题的照旧写题号,其余写 在线 / N 分钟前在 / 今天没上线
- 还没交过的人里,今天没上过线的排最前
- 请假框分「今天没上线」「今天上过线」两堆,前一堆可以一键全勾上
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 13:50:59 +08:00
xuyue and Claude Opus 5.5
395be1a19b
fix(自学): 手机上代码折行看着像另起了一行,改回整行横着滑
...
正文的代码块、填空、排序、找错四处都不折行了,和桌面一样。排序和找错是整组一起滑,
每行卡片一样宽(= 最长那行)。题目页编辑器的折行不动。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 13:39:27 +08:00
xuyue and Claude Opus 5.5
18b11e3730
fix(题目): 机房电脑上题目名里的 emoji 全是方块
...
Deploy / deploy (push) Canceled after 0s
网站自带一套彩色 emoji 字体(Noto Color Emoji 的 COLRv1 版,按区段分 11 包,用到哪包才下哪包),
不再依赖系统字体。Caddy 对字体文件永久缓存。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 13:14:26 +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
a5d5c39411
fix(手机): 收起键盘后「提交」按钮不回来;比赛领奖台第一名被挤出屏幕;iPhone 点输入框整页放大
...
- 题目页:安卓按返回键收键盘时编辑器不失焦,符号键一直贴底、「运行例子 / 提交」不回来。
改成看键盘真弹着没有(可视视口变矮),不只看焦点
- 比赛排名:结束后的领奖台三块共 646px,手机上第一名被切掉、第三名看不见;改成平分一行
- iPhone:点 14/15px 的输入框和代码编辑器,Safari 会整页放大且不缩回;只给 iOS 加 maximum-scale=1
- 登录:手机上选完班不再自动聚焦搜索框(键盘弹出来盖住半张名单)
- 题单:窄屏上题目拆成两张没标题的卡片,像分了两组;放不下两栏时合成一张
- 「中等」在题目页是蓝色、在题目列表是橙色,统一成橙色
- 零碎:自学四列表格在 360 宽上收窄格子;统计「错得最多的题」表头不再挤成竖排;
「第 N 名」「14 道」不再把最后一个字甩到下一行
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 12:36:33 +08:00
xuyue and Claude Opus 5.5
90ce1ab0f5
fix(手机): 点开提交、班级详情、自学目录这类整屏的东西,按返回直接退出了整页,现在是先关掉它
...
Deploy / deploy (push) Canceled after 0s
- 提交列表:手机上点开一条,地址带上 ?id=,返回键就是关详情回到列表;刷新、转发链接
也还停在这一条;上一条 / 下一条、翻页、滚动位置都在;详情里点「只看他」先关详情再筛选
- 看板讲错误、排名班级详情、自学目录、题目页底部抽屉:手机上按返回只关它(useBackClose);
在自学目录里选一课,返回是回到上一课,不多一站
- 分页列表(提交、题目、比赛、后台几个列表)用浏览器后退翻回前一页时会多压一条历史,
前进的记录被冲掉、返回要多按一次 —— 电脑上也是,一起修了
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 11:55:30 +08:00
xuyue and Claude Opus 5.5
c149b0a194
fix(课堂看板): 手机上「讲错误」弹层挤成一团,人名和按钮叠在一起;表格横着滑就看不出是谁的格子
...
- 讲错误弹层在手机上拆成三行:题目和关闭、一排人(横着滑,换到的人自动滑进来)、两个按钮;
不写「← → 换人」;展开题目时叠在代码上面,不再左右并排
- 错法面板标题行:题名一行,人数挪到第二行,「人」字不再被挤到下一行
- 表格名字列和分组标题钉在左边,横着滑也知道是谁、哪一组
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 11:55:25 +08:00
xuyue and Claude Opus 5.5
68fae03165
style(做对了): 烟花细调:火星和尾焰大一点,在题目列表上也看得清;风火轮转慢、飞远,看得出四条臂;礼花瀑布真往下流;炮竹齐鸣的碎响更密
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 13:21:18 +08:00
xuyue and Claude Opus 5.5
4d6df4ab0c
fix(做对了): 点评弹窗等烟花放完再出来,不再放到一半就被盖住;星星雨、彩虹喷泉收短一点,十种都在两三秒内放完
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 13:17:27 +08:00
xuyue and Claude Opus 5.5
655af07ca7
feat(做对了): 换了十种烟花:齐射、彩虹喷泉、螺旋上升、风火轮、炸出对勾和爱心……每次随机放一种;烟花盖在点评弹窗上面接着放,不再后半段被遮罩挡住
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 13:12:21 +08:00
xuyue and Claude Opus 5.5
cff989bf19
perf(提交): 格式化前送判题机编的那一下改成排队,一个班同时交也不会把判题机挤到人人超时
...
Deploy / deploy (push) Canceled after 0s
格式化前的编译检查不走判题队列,原来来多少份就同时往判题机上压多少份。服务器只有两核,
按两核实测 40 份 C++ 同时压上去,每份都撞 8 秒超时,正式判题也跟着变慢。现在同时最多
2 份,其余排队,8 秒是连排队带编译的总预算,排不上就当编得过、照常格式化。
同样 40 份,现在 5.2 秒全部编完、判断全对;压到 80 份时有 24 份等满 8 秒放弃。上一个提交
之后,编得过的代码只有 1~2% 还会走到这一步,平时基本排不起队。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 12:24:07 +08:00
xuyue and Claude Opus 5.5
797b41751e
perf(提交): 交 C / C++ 不用再干等:编得过的代码不再先送判题机编一遍,全班一起交时不会卡上好几秒
...
Deploy / deploy (push) Canceled after 0s
提交前的自动格式化原来每次都先在判题机上编一次(防止 clang-format 把编不过的几行并成
一行)。服务器只有两核、还要和判题抢 CPU,按两核实测:40 人同时交 C,这一步中位 1.8 秒、
最慢 2.7 秒;40 人同时交 C++(iostream),全部撞上 8 秒超时。而且等完之后判题还要再编一遍。
现在先跑 clang-format(十几毫秒),只有它真把学生原来分开的两行并成一行时才去判题机编。
大括号挪到上一行、} else 接上不算并行。拿本机库里的真实提交核过:编得过的 C 只有 1.2%、
C++ 2.1% 还会去编;编不过又被并了行的照样拦住、原样返回。
顺带:格式化不再给 #include 排序、不再把超长的 printf 字符串拆成两截(学生看不懂
"……" "……" 这种写法,它们也是误判的主要来源)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 12:19:48 +08:00
xuyue and Claude Opus 5.5
7881431fa9
fix(点评): 做对之后点完轮盘不再一闪就没:先停 2.5 秒给你看大家是怎么选的,再自己关;按钮挪到轮盘正下方居中,底边一条线缩完就关,急着走可以直接点
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 11:58:58 +08:00
xuyue and Claude Opus 5.5
cf57de4359
fix(提交列表): 「重新判题」不用再点「⋯」找了,右栏顶上直接一个图标按钮(和「新页面打开」挨着),判题中点不了
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 09:32:42 +08:00
xuyue and Claude Opus 5.5
c018c147c1
fix(提交列表): 手机上好用多了:筛选里补上「这节课」、班级、只看某个学生,顶上加了统计入口;点开详情名字、题目、按钮分三行排,代码字号改小;流程图的评分不再被压成一条缝;翻页不再顶出屏幕、翻完回到顶上;电脑上「复制回到题目」「复制到自测猫」挪到右栏底栏,老师不用再进「⋯」找,题目名也不再被按钮挤没
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 09:21:23 +08:00
xuyue and Claude Opus 5.5
dc89184488
fix(比赛): 「比赛信息」里老师贴的截图不会被压扁、点一下能放大;弹框改成点开,不再鼠标一挪就收起
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 08:54:01 +08:00
xuyue and Claude Opus 5.5
f0969f1458
fix(公告): 公告里的截图在窄屏上不再被压扁;点一下图片放大看,点任意处或按 Esc 关掉
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 08:44:11 +08:00
xuyue and Claude Opus 5.5
7e68e11371
feat(题目页): 手机上写代码顺手多了:键盘上面多一排常用符号(括号、引号、冒号、缩进…点一下就进去,括号自动配对),代码字号改小、长行折行不再看不见右半截;输入输出说明上下排、例子不再被左边两列标签挤窄;题单里那条不再超出屏幕
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 22:56:02 +08:00
xuyue and Claude Opus 5.5
3dbdc7cb1b
fix(自学): 手机上读课好读多了:长代码不再被截掉半行(折行接着缩进),表格不再一字一行,填空的注释不再折成像另一行代码、空也大了;往下读时底栏收起、读到课末不再有两个「下一课」;点下一课落在新课开头而不是末尾;输出预测不再把同一个问题问两遍
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 22:40:39 +08:00
xuyue and Claude Opus 5.5
4c47e9389b
fix(自学): 手机上「代码排序」「分组」写明先点一下、再点去处,电脑上分组仍提示拖动
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 22:27:23 +08:00
xuyue and Claude Opus 5.5
96a1c3808f
fix(自学): 手机上「代码排序」「分组」两种练一练拖不动、做不了,改成点一下选中、再点一下放下也行;填空不再被手机输入法把首字母改成大写
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 22:24:59 +08:00
xuyue and Claude Opus 5.5
93f80740ef
feat(公告): 公告页改成左边列表、右边全文,不用再一条条点开弹框;首页(学生和老师)的公告卡片点一条直接打开那一条,老师首页也改成最新三条
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 22:03:49 +08:00
xuyue and Claude Opus 5.5
06c679579c
fix(前台): 地址打错不再是一整页空白,题目、比赛、题单不存在时写明是哪样不存在、给一个回去的按钮
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 22:03:49 +08:00
xuyue and Claude Opus 5.5
f3956ad6a1
feat(首页): 公告不再只放置顶那条,改成最新三条(置顶的排最前、带标),右边写发布日期
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 21:53:40 +08:00
xuyue and Claude Opus 5.5
801d84c53b
feat(登录): 登录框改成点名字:打开就是这个班的名单,点自己再输密码;老师和往届写用户名,这台电脑上次怎么登下次就怎么开;注册完直接登上
...
Deploy / deploy (push) Canceled after 0s
- 学生登录 / 管理员登录两个页签和「没有我所在的班级」合成一条「写用户名」,入口是名单底下的「名单里没有我」「老师登录」
- 名单按拼音排、可打拼音缩写筛,只剩一个人时回车就选中;这台电脑没登过时先列出全部班级
- 密码错就地标在密码框下面(「密码不对,再试一次」),错太多次按钮灰掉写清 15 分钟
- 注册保留邮箱,错在哪个框标在哪个框下面,按钮改「注册并登录」
- name / autocomplete 原来写在 n-input 上、落在外层 div,没到真正的 input;改走 input-props,点名字时的密码框才真的不会让浏览器填上一个人的密码
- 登法和班级一样跨退出登录保留;authModal store 只管开关,表单回到组件里
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 21:48:30 +08:00
xuyue and Claude Opus 5.5
127bd6e5ce
fix(部署): 搬家脚本把线上的旧 postgres 误认成「已经搬过了」,一步没做就退出
...
Deploy / deploy (push) Canceled after 0s
旧栈 compose 原名 docker-compose.debian.yml,按容器标签里的文件名包含 compose.debian.yml
来认会撞上。「已经搬过」改为只靠「旧库必须是 16」和「postgresql/ 不存在」两道判断。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 21:17:16 +08:00
xuyue and Claude Opus 5.5
625bd49801
chore(部署): 服务器的数据库和 Redis 改由 OJ2 自己起,不用再改 OJDeploy 下的 compose;附一次性搬家脚本
...
Deploy / deploy (push) Canceled after 0s
compose.debian.yml 去掉外接形态,postgres / redis 固定由本栈起(PostgreSQL 18、Redis 8)。
docker/move-db-into-oj2.sh 把服务器上旧栈的 16 / 7 倒进来:先编镜像、确认机房已断开、
备份、恢复时剥掉 dump 里的 md5 口令(18 只认 SCRAM)、核对行数和网络登录,最后交给 deploy.sh。
生产库口令原来是默认的 onlinejudge(超级用户、5445 对公网开着),脚本要求换成强口令才执行。
本机按线上「之前」的状态完整演练过:停机到恢复 36 秒,行数一致,登录态保住,提交照常判题。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 21:10:09 +08:00
xuyue and Claude Opus 5.5
fad43f513f
chore(部署): ruff 升到 0.17.0,学生提交前的自动排版结果不变
...
Deploy / deploy (push) Canceled after 0s
生产库全部 Python 提交去重后 62522 份,0.15.12 与 0.17.0 逐个文件比对输出一字不差。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 20:48:32 +08:00
xuyue and Claude Opus 5.5
67590597f1
chore(部署): PostgreSQL 升到 18、Redis 升到 8,附生产库升级步骤
...
线上的库和服务器的 Redis 不归这几份 compose 管,要按 docs/deploy.md「PostgreSQL 升级」
在服务器上手工换;机房的 Redis 随下次部署换成 8。
本机拿 10-13 的生产备份演练过:恢复后生产库口令是 md5 哈希,18 只认 SCRAM,
不重新存一遍口令的话 api 和机房从网络连都会 password authentication failed。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 20:48:32 +08:00
xuyue and Claude Opus 5.5
a085351a2f
style(代码配色): True / False / None 和 NULL 改成关键字蓝;SQL 的 COUNT、AVG、ROUND 这些函数是函数色;编辑器的选区、行号、当前行、括号配对也换成 VS Code 的样子
...
Deploy / deploy (push) Canceled after 0s
True / None 原来和数字一个绿色,VS Code 里是 constant.language,和关键字同色。
SQL 的解析器把 COUNT 当关键字、把 avg 当普通名字,现在后面跟着括号的常用函数一律是函数色。
编辑器的框原来沿用 smoothy / One Dark(亮色选区是淡黄),现在照 VS Code 的默认值:选区淡蓝 /
深蓝、行号青色、当前行是一圈边框。当前行只在有焦点时画,免得自学一课十几个代码块每块第一行都框着。
暗色的底色仍用网站的。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 20:35:34 +08:00
xuyue and Claude Opus 5.5
60e96f311e
feat(代码配色): 代码里的全角标点(print(“你好”)、!=、全角空格)标红加波浪线;Python 的 int / str / list 一律青绿色,print 一律是函数色,"%.f" 也认了
...
Deploy / deploy (push) Canceled after 0s
12 万条 Python 提交里,代码里带全角标点的 1947 条全部编译出错,占 Python 编译错误的五分之一,
原来的配色下 “你好” 被认成变量名,看着和正常代码一样。
int 原来是 int(input()) 里棕色、map(int, …) 里深蓝;print 碰上 print"yes"、print(c) 会变成
关键字蓝。现在都照 VS Code。C 的解析器碰到全角标点会把后半行当成没有引号的「字符串」,
这种不算字符串,里面的全角标点照样标。
补的这几种标记合在 shared/codeMarks.ts 一处(原 formatPlaceholder.ts),编辑器和静态代码共用;
Python 解析器的补丁挪到 extensions/pythonLanguage.ts,免得 language → codeMarks → highlight 绕圈。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 20:27:03 +08:00
xuyue and Claude Opus 5.5
3b04afc275
style(代码配色): printf 里的 %d、%.2f 和 Python f-string 的 { } 有了自己的颜色;Python 的 from / as / with 和 import 一个颜色,跟 VS Code 一样
...
lezer 把整个字符串当一个词,占位符另外扫一遍(shared/formatPlaceholder.ts),编辑器挂装饰、
静态代码拆 span,用同一份正则。Python 解析器补了几条 styleTags,编辑器和静态代码共用。
CodeEditor.vue 原来自己抄了一份语言选择,改成用 languageExtension。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 20:18:29 +08:00
xuyue and Claude Opus 5.5
a559af0aa9
style(代码配色): 全站代码换成 VS Code 的 Light+ / Dark+ 配色;if / return / #include 单独一色,变量名、\n 也有颜色了
...
Deploy / deploy (push) Canceled after 0s
色值照 VS Code 内置主题(light_plus / dark_plus 等)。高亮器多分了三类词:管流程的关键字、
变量、转义字符;运算符不再上色。编辑器的底色、光标、选区、行号没动。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 20:13:30 +08:00
xuyue and Claude Opus 5.5
b2459b5b8a
style(代码配色): 全站代码换成 Catppuccin 配色(亮色 Latte、暗色 Mocha),注释改成斜体
...
Deploy / deploy (push) Canceled after 0s
色值照官方 palette.json,哪类词用哪个色照官方 style guide:关键字紫、函数蓝、字符串绿、
数字橙、类型黄、注释灰。编辑器的底色、光标、选区、行号没动。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 20:04:35 +08:00
xuyue and Claude Opus 5.5
df3b4f0dfd
style(代码配色): 全站代码换成 Dracula 配色(亮色用官方浅色版 Alucard);编辑器、题面和教程的代码块、练一练、提交详情的颜色一模一样了
...
Deploy / deploy (push) Canceled after 0s
原来三套配色各管一块:编辑器是 smoothy / One Dark,正文代码块和练一练是仿 GitHub,
提交详情是 Naive 自带的,同一段 printf 在一课里就有两种颜色。现在静态代码也走编辑器
那套 lezer 解析器,颜色只在 shared/highlight.css 写一份,highlight.js 删掉。
填空题顺手修好:空会把语法搅乱,(humidity ____ 40) 被认成类型声明、humidity 染成类型色,
现在空里先填上答案再解析,答案不输出。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 19:49:20 +08:00
xuyue and Claude Opus 5.5
27210eac1b
feat(自学): C 教程里没写 main 的片段也能运行——上下套一层灰色的 main,灰的几行改不了;其余没 main 的片段不再给一按就报错的「运行」按钮
...
Deploy / deploy (push) Canceled after 0s
教程正文里写 ```c main 的片段才套。套的行就在编辑器里,报错行号和看到的一致,复制出去是完整程序。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 19:20:45 +08:00
xuyue and Claude Opus 5.5
dae10d0813
style(班级 PK): 「AI 分析」按钮和旁边的「这周 / 这学期」一样高
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 19:20:45 +08:00
xuyue and Claude Opus 5.5
1d669d2ef3
fix(登录): 「没有我所在的班级」挪到班级下拉框最前面,往届学生不用翻到底找
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 19:04:17 +08:00
xuyue and Claude Opus 5.5
c1cd908fa2
chore(文档): CLAUDE.md 里几处和代码对不上的说法改成现状
...
Deploy / deploy (push) Canceled after 0s
- 格式化行宽早就回到 Oxfmt 默认的 100,去掉「printWidth: 80 别删」
- 前端不再是「从 ojnext 原样搬来」,大部分页面已重写
- 判题镜像已没有 Node;时间列、入参校验处数这两个会变的数字去掉
- 前端路由 meta 补上 requiresTeacherAdmin,composables 补上 problemJump / teacherHelp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 19:00:23 +08:00
xuyue and Claude Opus 5.5
e10a7791a2
fix(演示模式): 演示模式下提交列表和提交详情不再露出别人的代码——投屏装成学生时,和学生看到的一样是「别人的代码看不到」
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:58:35 +08:00
xuyue and Claude Opus 5.5
10d2638c23
feat(首页): 学生上课时首页最上面就是这节课和「接着做」,课后先看上次没做完的;老师有了自己的首页,看今天哪些班在上课、点进课堂看板
...
Deploy / deploy (push) Canceled after 0s
去掉和顶栏重复的找题框、常年空着的比赛卡、底部快捷入口,公告只留置顶那条。
修了当天上午上课、下午再登录时写「上次(今天的日期)还有几道没过」。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:53:38 +08:00
xuyue and Claude Opus 5.5
c8c38553ec
feat(首页): 新接口给老师首页列出今天在上课的每个班——这节课的题、几人交过、全做对几人、最后一次交题的时刻
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:53:38 +08:00
xuyue and Claude Opus 5.5
46b043999b
feat(顶栏): 顶栏导航加回「公告」,排在排名后面——首页只放置顶那条了,其它公告从这里进
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 14:49:25 +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
20a6f667d8
refactor(设置): 站点配置去掉从来没人读的网址、简称、页脚三项和 AI 小助手开关
...
库里 options 表那几行旧值留着,没有代码再读。
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
c33b084788
fix(后台成就): 成就指标的名字改成大白话(「AC 题目数」→「做对的题数」这类)
...
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
b93d4d83a1
fix(后台公告): 后台公告列表置顶的排在最前,和学生在首页看到的顺序一样
...
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
1d406a50e4
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
09e5e0bfcf
feat(后台 AI 报告): 报告列表带上学生是哪个班的
...
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
591c7bcab9
feat(后台比赛): 比赛列表带上每场几道题、几人参加,按开始时间排,复制出来的旧比赛不再跑到最前面
...
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
ba823ecb7d
feat(后台用户): 用户列表能按班级筛、按用户名排、看出几人从没登录;批量建号前能查重名,新班级建好自动加进班级列表
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 13:56:03 +08:00
xuyue and Claude Opus 5.5
48738f74d9
fix(题目列表): 老师账号看题目列表也有「状态」列了,自己做对的题打勾
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 13:46:34 +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