第 2 阶段:账号与班级,作品保存在服务器
- SQLite(bun:sqlite,编号迁移):班级、用户、会话(只存令牌哈希)、作品 - 登录取代统一访问口令:老师账号由配置设定;接口和 WebSocket 都要登录;按 IP 限制输错次数 - 班级管理页:建班、改名、删除(有学生时不能删);上传 CSV 名单导入(兼容 GBK / UTF-8, 识别表头,标出被 Excel 变成科学计数法的学号),密码留空生成 6 位数字;查看、重置密码, 导出带密码的名单 - 学生作品自动保存到服务器(按账号和实验),显示保存状态;离开页面前立即保存 - 前端加路由:登录页、实验页、班级管理页 - 部署:TEACHER_PASSWORD 必填,数据库放在数据卷 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a00622be15
commit
7cec273d58
31 files changed
+1776
-382
No files matched your search
@@ -28,7 +28,10 @@ export const config = {
|
||||
maxRuns: Number(env.SIM_MAX_RUNS ?? 150),
|
||||
/** 一次运行最长多少分钟,到时自动结束 */
|
||||
maxRunMinutes: Number(env.SIM_MAX_RUN_MINUTES ?? 60),
|
||||
/** 访问口令;不设置表示不需要口令(本机开发) */
|
||||
accessPassword: env.ACCESS_PASSWORD ?? '',
|
||||
/** SQLite 数据库所在目录(账号、班级、学生作品);部署时放在数据卷里 */
|
||||
dataDir: resolve(ROOT, env.DATA_DIR ?? 'data'),
|
||||
/** 老师账号(只有一个)。开发时不设置密码就用 admin / admin */
|
||||
teacherUsername: env.TEACHER_USERNAME ?? 'admin',
|
||||
teacherPassword: env.TEACHER_PASSWORD ?? '',
|
||||
timeZone: env.TZ ?? 'Asia/Shanghai',
|
||||
}
|
||||
Reference in new issue
Block a user