fix(mp): 接通微信小程序登录并补齐生产配置

- 前端落地页调用 wx.login → /mp/login,保存 token,并在每次带 scene 进入时刷新登录(F-130 前端断点)
- 后端 /mp/login 的名册/任务查询放入 TenantScope,修复带 taskId 的 scene 必然 500(F-130 后端断点)
- 小程序生产 API 改为 VITE_MP_API_BASE(.env.production),不再写死 localhost
- 生产配置补全:七牛目录 shenxue、连接池/健康检查/优雅停机等;学生端只发小程序,移除 H5 段
- PC 生产 API 改到 admin.shenxue.jxit.com;新增 deploy/prod.env.example 并忽略 prod.env
- ⚠️ application-prod.yml 含生产凭据(按部署要求直接写入),仓库访问范围需收紧
This commit is contained in:
2026-10-20 07:25:57 +08:00
parent 17c92b29c3
commit 1e71c164af
10 changed files with 505 additions and 87 deletions
+74
View File
@@ -0,0 +1,74 @@
# ═══════════════════════════════════════════════════════════
# 生产环境变量模板(prod)
#
# 用法:
# cp deploy/prod.env.example deploy/prod.env
# chmod 600 deploy/prod.env
# # 按下面命令生成四个密钥并填进去,再填 PG / REDIS / QINIU / WX
# set -a; . ./deploy/prod.env; set +a
# java -jar xt-server.jar --spring.profiles.active=prod
#
# 1Panel:把每一条粘到「应用 → 环境变量」,**值不要带引号**。
#
# ⚠️ deploy/prod.env 已 gitignore。不要把真值写回本文件。
# ⚠️ 2026-10 曾把 1Panel 的库/Redis 密码直接写进 application-prod.yml
# 并提交。那些值应视为已泄露:要么轮换,要么确认仓库只有可信的人能看。
# ═══════════════════════════════════════════════════════════
# ── PostgreSQL ────────────────────────────────────────────
# 1Panel 里通常就是容器名;换成你的实例地址
PG_HOST=
PG_PORT=5432
PG_DB=
PG_USER=
PG_PASSWORD=
# ── Redis ─────────────────────────────────────────────────
REDIS_HOST=
REDIS_PORT=6379
REDIS_PASSWORD=
# ── 四个密钥(必填,ProdEnvCheck 缺一个就拒绝启动)─────────
#
# XT_JWT_SECRET openssl rand -base64 64 | tr -d '\n'
# XT_AES_KEY openssl rand -base64 32 | tr -d '\n'
# XT_HMAC_KEY openssl rand -base64 48 | tr -d '\n'
# XT_RSA_PRIVATE_KEY openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out prod-rsa.pem
# openssl pkcs8 -topk8 -nocrypt -in prod-rsa.pem -outform DER | base64 -w0
#
# ⚠️ XT_AES_KEY 一旦用来加密过证件号就不能直接换(旧密文解不开且不报错)。
XT_JWT_SECRET=
XT_AES_KEY=
XT_HMAC_KEY=
XT_RSA_PRIVATE_KEY=
# ── 对象存储(生产必须 qiniu)──────────────────────────────
XT_STORAGE_PROVIDER=qiniu
QINIU_ACCESS_KEY=
QINIU_SECRET_KEY=
QINIU_BUCKET=
QINIU_DOMAIN=
QINIU_REGION=auto
# 启动时真的走一遍 写入→存在→读回→删除;密钥/空间配错会当场暴露
XT_STORAGE_SELF_CHECK=true
# false = 只保留压缩后的规范件(默认)
XT_STORAGE_KEEP_RAW=false
# ── 微信:小程序 ──────────────────────────────────────────
WX_MP_APP_ID=
WX_MP_APP_SECRET=
WX_MP_PUBLIC_BASE_URL=
WX_MP_ENV_VERSION=release
# ── 微信:公众号网页授权(H5)─────────────────────────────
# 回调与页面都必须是 https 正式域名,且与 H5 站点同源
WX_H5_APP_ID=
WX_H5_APP_SECRET=
WX_H5_CALLBACK=
WX_H5_BASE_URL=
# ── 其他 ─────────────────────────────────────────────────
XT_LOG_DIR=/var/log/xt
# 按域名区分单位时才打开
XT_TENANT_DOMAIN_ENABLED=false
XT_TENANT_DOMAIN_BASE=