# --------------------------------------------------------------------------- # 班级小助手 - 后端服务环境变量 # 复制为 .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 # 新建班级 / 新增教师未指定密码时使用的初始密码 # (学生没有个人账号,因此没有 DEFAULT_STUDENT_PASSWORD —— 见 AGENTS.md §5 第 31 条) DEFAULT_CLASS_PASSWORD=123456 DEFAULT_TEACHER_PASSWORD=123456 # 学期配置:第 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