feat: add production readiness checks

This commit is contained in:
Codex
2026-06-29 10:34:12 +08:00
parent d89f77e9af
commit e587a0c955
10 changed files with 564 additions and 32 deletions

View File

@@ -1,41 +1,31 @@
# 阿里云短信服务配置(脚本/服务端使用,前端不读取此文件)
# 复制此文件为 .env 并填写实际值
#
# 生产环境说明:
# - 学生端 https://tiku.tjszsb.com
# - 超管后台 https://tikuguanli.tjszsb.com
# - 服务器 39.107.64.207PocketBase 运行于 127.0.0.1:8090由 Nginx 反代)
#
# 前端Vite运行时 PocketBase 地址会根据 window.location 自动判断:
# - 本地开发 → http://127.0.0.1:8090
# - 线上部署 → 与页面同源Nginx 代理到后端)
# 因此前端代码无需配置服务器 IP本文件仅供 Node 脚本使用。
# Supabase/PostgreSQL SaaS 题库后端配置(服务端/worker 使用,前端不读取此文件)
# 复制此文件为 .env 并填写实际值
# 生产上线前运行:
# npm run readiness:production
# npm run readiness:production:db
# PocketBase 地址(本地脚本连接用)
POCKETBASE_URL=http://127.0.0.1:8090
# 运行环境。生产必须是 production本地开发可用 development。
NODE_ENV=development
# 阿里云 AccessKey
ALIYUN_ACCESS_KEY_ID=your_access_key_id_here
ALIYUN_ACCESS_KEY_SECRET=your_access_key_secret_here
# API 服务端口
PORT=8787
# 阿里云短信配置
ALIYUN_SMS_SIGN=天津专升本
ALIYUN_SMS_TEMPLATE=SMS_123456789
# 服务端口
PORT=3000
# 新 Supabase/PostgreSQL 重构 API
# Supabase/PostgreSQL 重构 API
DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:54322/postgres
DEFAULT_TENANT_SLUG=master
# 生产必须只写真实 HTTPS 域名,不能包含 *
CORS_ORIGIN=http://127.0.0.1:5173,http://localhost:5173
MAX_JSON_BODY_BYTES=1048576
MAX_IMPORT_JSON_BODY_BYTES=10485760
# 认证迁移期配置:生产环境必须替换为高强度随机值
# 认证迁移期配置:生产环境必须替换为高强度随机值,并配置 Supabase Auth JWT
AUTH_SMS_PROVIDER=mock
AUTH_CODE_PEPPER=replace_with_a_long_random_secret
AUTH_SESSION_SECRET=replace_with_another_long_random_secret
AUTH_JWT_ISSUER=
AUTH_JWT_AUDIENCE=authenticated
AUTH_JWT_SECRET=development-jwt-secret-change-me
AUTH_JWT_JWKS_URL=
AUTH_CODE_TTL_SECONDS=300
AUTH_SMS_COOLDOWN_SECONDS=60
AUTH_SESSION_TTL_SECONDS=604800
@@ -67,6 +57,11 @@ WORKER_ASSET_MIN_AGE_SECONDS=300
WORKER_ASSET_RECHECK_INTERVAL_SECONDS=86400
WORKER_ASSET_REQUEST_TIMEOUT_MS=10000
# Worker 配置:大批量内容导入
WORKER_IMPORT_BATCH_SIZE=5
WORKER_IMPORT_ID=imports-1
WORKER_IMPORT_BACKOFF_SECONDS=30,120,600,1800
# Worker 配置:公共题库自动同步。冲突会保留租户自改题目并等待后台处理。
WORKER_PUBLIC_BANK_SYNC_BATCH_SIZE=5
WORKER_PUBLIC_BANK_SYNC_COPY_LIMIT=1000
@@ -97,3 +92,6 @@ TENCENT_COS_SECURITY_TOKEN=
SUPABASE_STORAGE_URL=
SUPABASE_STORAGE_SERVICE_KEY=
# 国内短信/OAuth/支付的租户级密钥不建议放在 .env。
# 正式使用时请通过租户后台写入 app_private.tenant_secrets并只在 config_public 暴露非敏感配置。