56b5dc2e36
dota2 like
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-06 11:50:45 -06:00
39f9bb9d38
update
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-06 10:15:16 -06:00
34aff29048
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-06 08:44:35 -06:00
d7b57074d3
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-06 08:36:04 -06:00
280e360506
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-06 08:25:53 -06:00
5b8e0f866b
refactor(reaction): 收敛单选提交交互
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-06 07:53:06 -06:00
9f89be3876
feat(reaction): 评价改为先勾选再提交,提交后不可修改
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 06:15:34 -06:00
1fb93e6b16
refactor(reaction): 后台反馈统计独立成 reaction 目录,去掉排序、加最近评价时间
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 06:15:34 -06:00
b3d0c3fcc7
题目点评按钮改成大图标按钮
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
七个按钮放大到 48px 高、图标 28px,去掉按钮内的中文标签(移到 hover
tooltip 里),计数改成 ×N 形式。不再用 n-button,改成原生 button 自己写
样式。窄面板下从横向滚动改成换行,避免按钮被滚动条藏起来。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 05:55:29 -06:00
c4d55bb88e
fix(reaction): fix disabled-tooltip hover and post-AC dialog copy
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
- SubmitCode.vue: AC dialog title still told students to '打星
评分' after the reaction UI moved to emoji buttons. Rewritten to
match the emoji-based interaction, with no star/rating language.
- ProblemReaction.vue: n-tooltip's hover trigger merges its
mouseenter/mouseleave onto the single root element of the trigger
slot. That root was an n-button, and disabled form controls never
dispatch mouse events, so the two disabled-state tooltips ('完成本题后可以评价'
and the max-selection message) never appeared. Wrap each button in
a non-disabled <span> and make that the tooltip root so hover
events fire regardless of the button's disabled state.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 04:12:55 -06:00
c91c923fd6
refactor(reaction): 清理旧的评论代码
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 03:55:11 -06:00
9c6c6e1784
fix(reaction): dedupe sort request when not on page 1
...
handleSorter previously mutated query.page then called listStats()
synchronously, while a separate page/limit watcher also fired on the
page reset, producing two identical requests whenever sorting was
triggered from page 2+. ordering is now part of the watched sources
so page+ordering mutations from handleSorter batch into a single
watcher run.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 03:47:19 -06:00
a8cc7c855a
feat(reaction): 后台题目反馈统计页
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 03:42:25 -06:00
e153064d87
fix(reaction): guard toggle against out-of-order responses
...
用请求代号确保只有最新一次点击的响应会写回本地状态,乐观更新的
回滚路径同样受保护,避免旧请求晚到覆盖新状态。不引入防抖、不禁用按钮。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 03:38:24 -06:00
0af91b1e20
feat(reaction): 学生端表情条组件
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 03:27:45 -06:00
d16e3dddb8
feat(reaction): 前端表情常量、类型与 API
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 03:19:39 -06:00
8a46bae27d
feat(admin): 班级号位数校验,规则收敛到 constants
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
后端现在会拒绝位数不对的班级号,前端提前拦一道并给出明确提示。
- generate.vue 导入前校验班级号范围
- config.vue 校验班级列表每一项,输入框下方补说明
- 位数规则收敛到 utils/constants 的 CLASS_NAME_* 常量,
三个使用方都改为引用
顺带两处修正:
- config.vue 和 list.vue 的保存都没有 try/catch。http 拦截器只对
login-required / permission-denied 自动弹提示,其余业务错误不接住
就什么都不显示,连"用户名已存在"这类老错误也是静默的
- ButtonWithSearch 原来用 startsWith("ks") 决定显不显示按班级筛选,
kstest 这类账号会显示按钮但点了没反应;改用同一个正则判断
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 00:15:52 -06:00
0e2cc28235
refactor(signup): 去掉注册验证码
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
后端已移除验证码功能。
- Signup.vue 删表单项、验证码图、getCaptchaSrc、打开弹窗拉图的 watch、
"Invalid captcha" 错误分支和 .captcha 样式
- authModal store 删 signupForm.captcha、captchaSrc、setCaptchaSrc
- api.ts 删 getCaptcha(),signup() 参数去掉 captcha
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 23:48:13 -06:00
e777a94568
refactor(admin): 去掉 two_factor_auth 残留
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
后端已删除该 model 字段,2FA 功能整体移除。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 23:00:48 -06:00
56f1431a10
update
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 14:01:14 -06:00
7b2a4a9094
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:59:31 -06:00
b559c93476
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:57:31 -06:00
42de79ee60
revert(achievement): 去掉进度条动画
...
保留奖章的题单来源,只回退 0 → 真值那套触发动画的处理和拉长的过渡时长,
圆环和进度条回到直接显示终值。
2026-08-05 13:56:13 -06:00
8cfa90ca16
feat(achievement): 奖章标出来自哪个题单 + 进度条动画
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
奖章卡片只有名字和描述,看不出是哪个题单发的,补上题单名并链到详情页。
进度是异步加载的,卡片挂载时百分比已是终值,naive 自带的过渡触发不了,
先按 0 渲染一帧再填真值,同时把时长从 .3s/.2s 拉到 .9s,
圆环数字换成 n-number-animation 同步滚动。
2026-08-05 13:52:58 -06:00
4b796650ff
fix(achievement): 拉开青铜和黄金的配色
...
青铜和黄金原来都落在橙棕区(色相 30 / 44),扫一眼分不出来。
青铜往红铜偏、黄金往纯黄推,边框色和明暗两套文字色一起调整,
对比度全部保持 4.5:1 以上。顺带修浅色模式白金只有 4.10:1。
2026-08-05 13:52:58 -06:00
ade6034316
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:44:16 -06:00
a1bea7182f
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:43:21 -06:00
425bab1c15
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:38:52 -06:00
17dbd7a4a7
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:34:46 -06:00
8db26ef7a4
rewind
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:33:32 -06:00
508267bb59
fix(成就): 圆环百分比在移动端撑出 + 卡片边框加粗
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
- 圆环改用默认插槽渲染百分比,字号跟断点走(naive 自带指示器字号固定,76px 圆环放不下)
- 卡片边框 1px → 2px
- 置灰从整张卡挪到内容上,未获得的卡片不再把稀有度边框一起洗成灰
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 13:30:51 -06:00
a4fdd377f2
update
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:23:45 -06:00
da2334ed3a
update
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:15:01 -06:00
a626160f29
update
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 13:13:07 -06:00
bf028b3fb1
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 11:50:51 -06:00
b7f82adb7c
fix(achievement): 抬头四条稀有度进度固定单列
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
auto-fit 两列在宽屏会折成 2x2,进度条被压短看不出差别。
改成一列四行,和定稿一致。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 11:45:15 -06:00
05ce9cbb9e
revert(achievement): 抬头回到环形进度版,保留白金优先的排序
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
PSN 那版奖杯陈列观感不佳,回退到环形 + 四色进度条。稀有度顺序
沿用 PSN 的做法:白金、黄金、白银、青铜,稀有的排前面。
顺带保留卡片网格的 min() 修复,避免 320 宽机型横向滚动。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 11:40:55 -06:00
4072abe199
feat(achievement): 抬头改成 PlayStation 奖杯陈列
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
参照 PSN 的奖杯系统重做:六边形铭牌放完成度,四个奖杯按稀有度
倒序陈列(白金在最左),同一个杯型只换颜色,某档一个没有就置灰。
底部一条总进度分成四段,每段宽度是该档已获得占总数的比例,
拼起来正好等于总完成度——条的长度和构成都对得上数据。
移动端走全站的 useBreakpoints(tailwind md),竖排;顺手修了
卡片网格 minmax(300px) 在 320 宽机型上撑出横向滚动的问题。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 11:34:49 -06:00
0d7336bce8
refactor(achievement): 稀有度配色收进 constants,文字色适配浅色模式
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
四份重复的 RARITY_COLOR / RARITY_LABEL 合并到 utils/constants。
拆成两套:边框色块继续用饱和的原色,文字改走 useRarityColor,
按明暗主题切换,两套都压到 4.5:1 以上——原色是照深色底调的,
白底上白金只有 1.7:1、黄金 2.2:1,卡片上的稀有度 tag 看不清。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 11:24:04 -06:00
4db0dc7e83
fix(achievement): 抬头稀有度配色适配浅色模式
...
原色值是照深色底调的,白底上白金 1.7:1、黄金 2.2:1 看不清。
改成按 useDark 切换明暗两套色值。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 11:21:03 -06:00
56d06eb456
style(achievement): 成就页抬头改为环形进度 + 四色稀有度条
...
左侧环形显示总完成度,右侧四行稀有度各配一条对应颜色的进度条,
配色复用 AchievementCard 的 RARITY_COLOR。窄屏自动塌成一列。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 11:19:57 -06:00
b79dd6c721
feat(admin): 成就管理标题显示条数
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
有下架的成就时一并显示下架条数——列表里只有"上架:否"那一列能看出来,
扫一眼容易漏。数据未加载完时退回纯标题,避免闪一下"0 条"。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 11:13:48 -06:00
15d823aa20
refactor: 个人主页移除徽章卡片
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
徽章已在成就页的"题单奖章" tab 展示,主页重复且与旁边的成就摘要
风格不一致。连带删掉无引用的 GroupedUserBadge 组件。
成就图标那排补上"最近获得"标签,避免被误读成成就总数。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 10:27:42 -06:00
4ae25b09c0
perf: skulpt 改为按需加载,client-zip 换成 fflate
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
skulpt 此前被 SubmitCode.vue 静态引用,945K 的 chunk 落在做题页首屏,
学生打开任何一道题都要下 233KB gzip,只为提交时拿一个语法错误行号。
改成 import() 懒加载并在语言切到 Python3 时预取,加载失败放行提交、
交给后端判题兜底。构建产物确认该 chunk 只剩一处 import() 引用,
index.html 不再引用。
client-zip 的能力 fflate 已经覆盖(utils/functions.ts 本就在用 zlibSync),
新增 createZipBlob 统一两处测试用例打包,删掉该依赖。压缩方式由 store
变为 deflate,Python zipfile 透明解压,后端不受影响。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-05 09:11:58 -06:00
ea691834b0
fix
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 06:46:44 -06:00
344e9734b6
feat: 标签管理页点击标签查看对应题目
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
2026-08-05 06:11:46 -06:00
7694db7d41
feat: 新增标签题目弹窗组件
2026-08-05 06:04:46 -06:00
a191bd78d4
feat(admin): 题目列表支持批量添加/移除标签
...
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-08-05 04:28:26 -06:00
842c4796c0
feat(admin): 标签管理页
...
支持搜索、重命名(撞名自动合并并提示影响题数)、删除(二次确认)。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-08-05 04:25:36 -06:00
15aaec4384
feat(admin): 标签管理与批量打标签的 API 封装
...
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-08-05 04:23:17 -06:00