3.1 KiB
3.1 KiB
PK Lab 上线架构
三仓关系
pk-lab-xhs (综合小程序 + :3001 公网预览) ─┐
├─ HTTPS ─ pk-lab-server (:18082) ─ PostgreSQL 16
rice-pk-xhs (饭类小程序 + :3002 公网预览) ───┘
小程序源码不是由 Nginx 托管的 H5。两个前端容器是功能一致的浏览器验收入口;正式小程序仍由小红书开发者工具或后续接入 xhs-mp-cli 上传。
身份
- 前端调用
xhs.login(),把一次性code发到服务端。 - 服务端获取应用调用凭证并调用
code2Session,只在服务端使用session_key,数据库保存(app_key, open_id) -> internal_user_id。 open_id仅在一个小程序内唯一。综合版用户生成 6 位绑定码,独立版用户主动输入确认;服务端检查两个用户没有同 app 身份后,以事务方式迁移身份和历史。- 公网预览只在
TEST_AUTH_ENABLED=true时接受dev:code。真实 App ID/Secret 生效后必须关闭。
数据模型
users:内部用户,不保存小红书密码或 session key。app_identities:两套小程序各自的open_id映射。tests/candidates:题库和候选项;首批 7 套、288 项。test_runs:冠军、亚军、Top 排名、每轮左右选项与胜者、来源 app。link_codes:SHA-256 后的一次性绑定码、10 分钟过期时间与使用时间。
第一次 CI 配置
pk-lab-server
Secrets:
GITEA_TOKEN:CI 下载精确 commit 归档。POSTGRES_PASSWORD:长随机密码,首次部署后不要随意更换。TOKEN_SECRET:至少 32 字节随机值,变更会使现有登录失效。XHS_HUB_APP_ID/XHS_HUB_APP_SECRET:综合版。XHS_RICE_APP_ID/XHS_RICE_APP_SECRET:饭类独立版。
Variables:
DEPLOY_PORT=18082PUBLIC_BASE_URL=https://你的-api-域名CORS_ORIGINS=https://综合预览域名,https://饭类预览域名TEST_AUTH_ENABLED=true(公网预览阶段);小程序真实登录验收后改为false。
两个前端
每个仓库配置 GITEA_TOKEN Secret、API_BASE_URL Variable;综合版默认 DEPLOY_PORT=3001,独立版默认 DEPLOY_PORT=3002。
永久运行保证
- API 与 PostgreSQL 均为
restart: unless-stopped。 - PostgreSQL 使用固定具名卷
pk-lab-postgres-data。 - 后端部署固定 Compose project 为
pk-lab-production,只执行docker compose up -d --wait。 - 前端以固定容器名更新并设置重启策略;CI 结束不会删除新容器。
- PostgreSQL 不映射公网端口,只有 API 容器能访问。
上小红书前
- 为 API 配置可信 HTTPS 证书;小程序
xhs.request必须使用 HTTPS。 - 在两套小程序后台分别加入 request 合法域名。
- 把两个
app.js的apiBase改为最终 HTTPS 域名。 - 配置 App ID/Secret,确认真实
xhs.login -> code2Session后关闭测试登录。 - 在开发者工具和真机检查 Canvas 海报、相册权限、长名称、轮空赛程与网络失败重试。
- 根据平台审核要求补齐隐私政策、用户数据删除入口和客服联系方式。