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
xuyue and Claude Opus 5.5
952edbf86f
feat(后台题目): 题目列表带上做对 / 做过的人数和「学生看得到 / 藏着的」各几道,能一次放出或藏起好几道题;比赛题目也能按题号搜
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 13:27:39 +08:00
xuyue and Claude Opus 5.5
567c745432
feat(课堂看板): 讲错误的弹层多一个「题目」按钮,点了左边出题目、右边是他的代码,演示错误时不用来回切
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 13:09:34 +08:00
xuyue and Claude Opus 5.5
1fcd12f6f4
feat(举手与协作): 顶栏「N 人举手」点开按题分组带错法;看板多一列「在写」点了就能看他的代码;帮完了回看板、还有人就「下一个」
...
学生那边按钮写「xuyue 在帮你 / 在看你的代码」。顺带修了老师接单后编辑器里留着自己的
草稿或模板、学生的代码插在前面、两边从此不一致的问题。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 13:04:57 +08:00
xuyue and Claude Opus 5.5
573a0f967f
feat(举手与协作): 老师能在看板上直接打开学生正在写的代码,同一道题好几个人举手能「讲完了,都放下」,举手面板写着每人错在哪
...
学生编辑器报「在写哪道题」,看板接口带 editing;新增 peek / dismiss 两条协作消息,
求助记录带这道题最后一次提交(判完新的一次会刷新)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 13:04:57 +08:00
xuyue and Claude Opus 5.5
5c9d0ca501
feat(课堂看板): 「这节课」那排题号后面写上几点布置的,之后改题不变
...
Deploy / deploy (push) Canceled after 0s
class_lesson 加 created_at(0034,老数据用 updated_at 回填),「改」只动 updated_at;
清掉再布置算重新开始。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 10:21:39 +08:00
xuyue and Claude Opus 5.5
5c1f1d2bf8
feat(课堂看板): 看板重做——顶上当场填题号,一排题卡片点开看这道题错在哪,全班一张表按没交/卡住/在做排,点红格子弹出代码讲错误、← → 换人
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 10:02:50 +08:00
xuyue and Claude Opus 5.5
0a4f528c44
feat(课堂看板): 看板接口给没做对的格子带上今天最后一次提交,按错法归堆、点开讲错误要用
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 10:02:50 +08:00
xuyue and Claude Opus 5.5
754a9d7caf
fix(提交详情): 代码不用再左右滚了——改成一栏到底,代码占满整宽在前、例子对比在后;交的几次横着排,← → 一次次翻
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 01:17:42 +08:00
xuyue and Claude Opus 5.5
e923965f70
fix(提交详情): 「这道题交了几次」是竖着排的,翻上一次、下一次改用 ↑ ↓,和提交列表一样
...
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 01:07:46 +08:00
xuyue and Claude 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
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
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