试用前准备:全班模拟压测、评分并发 6→16、手动备份与恢复
CI/CD / test (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s

- test/classroom.ts:45 个虚拟学生走一遍登录、运行、自测、提交,统计每个环节等多久
- 评分并发可配置(SIM_GRADE_CONCURRENCY,默认 16),提交队列同时评的份数跟着走;
  2 核实测项目 8 任务 3 全班自测从约 4 分钟降到约 1.5 分钟
- 检查的默认等待 2 秒→5 秒,机器忙时不再误判正确的程序
- 删除学生时删除他的数据库(编号会重新用给新学生)
- deploy/backup.sh、deploy/restore.sh:手动备份到宿主机 backups/,恢复前先备份

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-25 20:08:31 +08:00
1 parent e8058376dd
commit 982b1297aa
23 files changed
+479 -25

No files matched your search

+8
View File
@@ -13,6 +13,14 @@ export async function userDatabaseDir(userId: number) {
return dir
}
/**
* 删除用户的全部数据库(删除学生时)。用户编号在删掉最大的编号后会被下一个新用户重新使用,
* 不删的话新学生会看到前一个人的库
*/
export async function deleteUserDatabases(userId: number) {
await rm(resolve(config.dataDir, 'databases', String(userId)), { recursive: true, force: true })
}
/** 实验预置的数据库脚本(samples/<实验>/database.sql),没有时返回 undefined */
export async function experimentScript(sampleId: string): Promise<string | undefined> {
const file = Bun.file(join(config.samplesDir, sampleId, 'database.sql'))