跳转至

03-测试环境准备(本机预生产 + 阿里云 UAT + Docker 四容器)

【重建推定版 V1.0】 / DOC-BT-03 / 版本 V1.0(2026-08-21 听写重建) 依据:DIP1-UAT-业务测试启动指南.md §一 §二 + COLLAB §听云部署 10 步


一、环境分层(3 层)

环境名 域名 / URL 用途 维护方
本机预生产(pre-local) 后端:http://127.0.0.1:8001(不占用 8000)运营 Web:http://127.0.0.1:3000 听写代码验证专用(静态基线+功能验收复跑),独立端口 听写 DT
阿里云 UAT(uat-cloud) api-uat.weavely.hk / admin-uat.weavely.hk OL 运营真实联调(S5~S7 三轮),与生产库完全隔离 听云 OCM
生产(prod) api.weavely.hk / admin.weavely.hk V2.0.0 运行中(待 V3.3.0 替换) 听云 OCM

二、Docker 四容器(所有环境基础)

容器 镜像 / 规格 端口 / 映射 说明
dip1-postgres postgres:16-alpine,POSTGRES_DB=dip1 5432:5432,卷 dip1-pgdata UAT DB 需单独 dip1_uat schema(避免污染生产)
dip1-redis redis:7-alpine,requirepass <UFCS_SECRET前8位> 6379:6379 共享 UFCS Token 存储 + QSV 缓存
dip1-mailpit axllent/mailpit:latest 1025(SMTP)/ 8025(Web UI) 所有邮件(报价确认/预约提醒/质保卡)拦截 UAT 验收
dip1-jaeger jaegertracing/all-in-one:1 16686(UI)/ 4317(OTLP) 跨服务链路追踪,用于 S7-3 LGD ETA 超时排障

三、UAT 阿里云环境(听云部署前置,10 步骤)

与听云 10 步部署流程对齐(COLLAB-20260820-01 §部署步骤),听云独立执行并写 OCL。

# 步骤 检查点 验收输出
1 git pull 听写打包推送的代码包 commit hash 与听写通知一致 OCL 记录
2 数据库备份(3-2-1 原则) prod → 本地 dump 2 份 + 对象存储 1 份,文件名 dip1-prod-<YYYYMMDD-HHMM>.sql.gz OCL 记录 dump 路径+hash
3 alembic upgrade head(head=0011_v33_ext) 输出 29 张新表(0006~0011)全部 CREATE;alembic current 显示 head OCL 记录 head 编号
4 v3 种子执行(v3_seed.py) UFCS 21 表单 + VQR 16 + MFR 演示 1 + LGD 运费模板 1 + 17 demo 账号(ON CONFLICT DO NOTHING,幂等) OCL 记录插入行数
5 7 项环境变量设置(阿里云容器 / 系统 env) 见 §四 环境变量清单 7 项 OCL 记录 env 键(不得记录 value,仅记是否 Set)
6 deploy-backend --force + deploy-frontend backend 容器 health=200 OK、version=3.3.0 OCL 记录部署时间
7 demo 账号登录验证(17 账号 × 2 端) 全部登录成功,RBAC 权限正确 截图留档
8 健康自检:BD-01 health + BD-02 config + BD-03 schema BD-01 overall=ok + BD-03 head=0011 OCL 记录结果
9 写 OCL(阿里云部署日志 L-YYYYMMDD-NN) OCL 完成
10 通知听写(含 1~9 全部留痕) 启动 10-§三 前置检查

四、7 项环境变量清单(UAT 与生产各 1 套,值不同)

规则:任何文档中不得明文写生产 value,仅记录 key + 格式说明 + 验证方法。

# Key 格式示例(UAT) 验证方式(听写/听云)
1 UFCS_SECRET HS256:<base64 32B> 生成 UFCS-01 表单提交 JWT 可 decode
2 UFCS_TOKEN_TTL_HOURS 72(3 天) 创建 token 3 天后失效测试
3 UFCS_MAX_ATTEMPTS_PER_IP 5(每 IP 5 次锁定) 错误 5 次返回 429
4 DT_BACKDOOR_ENABLED true(UAT 开启,生产需 TL 临时审批) GET /api/dt/health 不返回 404
5 DT_BACKDOOR_TOKEN Bearer <32字符UUID>(生产每 24h 轮换) BD-01~06 均需 Header 携带
6 OQS_ORL_BASE_URL https://orl-uat.hk-dip.example/api/v1(第三方报价 ORL) OQS-01 接口返回 http 200
7 PDF_OUTPUT_DIR /data/dip1/pdf/uat/(阿里云 NAS 挂载 UAT 子目录) QSV 报价 PDF 生成成功可下载

五、环境验收模板(每项通过打 ✓)

【环境验收单 UAT-Cloud-<YYYYMMDD>】
□ Docker 四容器:postgres(up 24h+) / redis / mailpit / jaeger 全部 Running
□ 阿里云域名解析:api-uat.weavely.hk 200 OK / admin-uat.weavely.hk 200 OK
□ Alembic head = 0011_v33_ext_ufcs_oqs_mfd
□ v3_seed:17 demo 账号 ON CONFLICT 幂等测试通过
□ 7 env:key 全部存在(value 不填,仅打存在标记)
□ BD-01 GET /api/dt/health → overall=ok
□ BD-03 GET /api/dt/schema → head=0011,29 V3 新表全部命中
□ UFCS 登录:demo 账号 × JWT decode:exp 在 TTL 内
□ OQS 报价试算:返回 numeric,非 5xx
□ Mailpit UI:8025 端口可访问,报价邮件在收件箱
验收人签名:__________ 日期:__________

本文档为【重建推定版】,§三 听云部署 10 步来源于 COLLAB-20260820-01 §部署依据;§四 7 环境变量来自 COLLAB-20260820-02 §代码基线要求 S-B4。