Files
ClassHelper/packages/server/.env.example
T
LoveChengke 20fcca0388 feat(server,web,shared,desktop): 上传超限正确报错 + 两个登录入口都限流 + 作业按天深链,文档与验证脚本同步
服务端加固:
- express.json 上限 2mb → 12mb:表格导入把文件以 base64 放进 JSON(约 4/3 倍),
  8MB 的声明上限原先到 1.5MB 就被拦掉;超限现在由 error 中间件映射成
  413 IMPORT_TOO_LARGE(中文提示"请拆分后分批导入"),不再落进 500 兜底分支抛英文原文;
- loginRateLimiter 同时挂 /auth/login 与 /auth/class-login(班级密码默认 123456,
  班级登录曾是唯一没有暴力破解防护的入口),两个路径共享同一计数器;
- CORS_ORIGIN=* 时启动告警(不拦截启动,避免挡住教室机 file:// 的合法部署);
- 删除已无用的 DEFAULT_STUDENT_PASSWORD;班级 termWeeks 上限 40 → 30,
  与 MAX_TERM_WEEK / weekNumberSchema 对齐(原先对外承诺了系统兑现不了的学期长度)。

Web 端:
- 作业页 ?date= 深链在同路由再推 query 时也生效(watch route.query.date);
- 表格导入对话框适配 8MB 上限与 413 提示。

冒烟与文档:
- 新增 scripts/lib/smoke-class.mjs:验证用临时班级,避免探针通知弹到用户自己的客户端与灵动岛;
- README 与 AGENTS.md 同步本轮全部行为变更(含 schedule source、学生账号清理、凭据门禁)。
2026-10-02 00:25:21 +08:00

61 lines
2.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ---------------------------------------------------------------------------
# 班级小助手 - 后端服务环境变量
# 复制为 .env 后按需修改:cp .env.example .env
# ---------------------------------------------------------------------------
# 运行环境:development | test | production
NODE_ENV=development
# HTTP / WebSocket 监听端口
PORT=4000
# 数据库类型:sqlite | mysql
# 说明:sqlite 用于本地开发;mysql 用于云端统一存储(见 docs/mysql.md)
DATABASE_PROVIDER=sqlite
# SQLite:相对路径以 packages/server 为基准
DATABASE_URL="file:./prisma/dev.db"
# MySQL 示例(切换时替换上面一行,并执行 pnpm db:switch:mysql):
# DATABASE_URL="mysql://classhelper:your-password@127.0.0.1:3306/classhelper"
# JWT 签名密钥:必须修改,建议 `node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"`
JWT_SECRET=change-me-to-a-random-48-bytes-hex-string
# JWT 有效期,例如 7d / 12h
JWT_EXPIRES_IN=7d
# 允许跨域的来源,多个用英文逗号分隔;* 表示全部允许(开发环境)
CORS_ORIGIN=*
# bcrypt 加密强度
BCRYPT_ROUNDS=10
# 教师新增学生账号时未指定密码所使用的初始密码
# 学期配置:第 1 教学周的周一日期(YYYY-MM-DD),用于“当前周次”换算
TERM_START_DATE=2026-02-23
# 日志级别:debug | info | warn | error
LOG_LEVEL=info
# ---------------------------------------------------------------------------
# 生产部署相关(本地开发保持默认即可)
# ---------------------------------------------------------------------------
# 监听地址:本地开发用 127.0.0.1;服务器/容器用 0.0.0.0
HOST=0.0.0.0
# 反向代理层数:使用 Nginx / 云负载均衡时填 1,用于正确识别客户端 IP(限流依赖)
TRUST_PROXY=false
# Web 管理端构建产物目录;留空则自动探测 packages/web-admin/dist 或 ./web
WEB_DIST_DIR=
# 接口限流开关(压测时可临时置 false)
RATE_LIMIT_ENABLED=true
# 启动时校验数据库连通性(生产建议 true:连不上直接启动失败,避免带病对外服务)
STARTUP_DB_CHECK=true
# 数据库为空时自动执行迁移(SQLite 场景;安装程序首次启动用)
AUTO_MIGRATE=false