Files
danyang-match/docs/demo/DEMO-RELEASE-BASELINE-2026-10-19.md
T

6.6 KiB
Raw Blame History

V1.1 演示版基线(2026-10-19)

范围

本批次目标是形成可重复启动、可验证的本地演示版本。允许使用 Mock 微信登录和演示账号;不把演示结果当作正式生产发布证据。

本批次明确不验收:真实微信账号、生产证书、正式域名、真实用户 UAT、外部备份介质。

当前基线证据

门禁 当前结果
后端 Maven 全量 PASS:919 tests,0 failures,0 errors,17 skipped
Admin type-check PASS
Admin build PASS,但有 CSS URL 解析警告和大 chunk 警告
Miniapp type-check PASS
空壳测试守卫 PASS
本地 Compose 解析 PASS
生产 Compose 解析 PASS:使用临时演示变量验证通过
活栈 Compose PASS:danyang-demo 隔离栈健康,PostgreSQL/Redis/SeaweedFS/Backend/Nginx 均就绪
E2E PASS:全新卷迁移/seed 后真实本地 PostgreSQL 活栈 72 passed(2026-10-19 重新验证)
UI 契约与空壳守卫 PASS:TabBar/页面/WXML/WXSS/API 行为契约通过
H5 浏览器冒烟 PASS:活栈 /h5 下未登录守卫、演示用户登录、6 个核心页、Like、红娘工作台均通过(2026-10-19 重新验证)

演示候选范围

  • 后端 Java、数据库迁移、后端测试和 E2E fixture。
  • infrastructure/docker-compose.yml、staging 配置、Nginx 和演示环境变量示例。
  • admin-web 构建产物和类型检查范围。
  • miniapp 类型检查及演示路径相关代码。
  • 必要的演示验收、部署和运行文档。

明确排除

  • .mimosa/、.trae/、.wb_tmp_bcrypt/ 等机器本地临时目录。
  • 未经本批次审查的 H5 或演示新增文件。
  • 真实微信 Provider、生产证书、正式域名、真实用户数据和外部备份介质。
  • 与演示闭环无关的功能扩展和大范围重构。

演示验证命令

mvn -B -f backend/pom.xml test
pnpm --dir admin-web type-check
pnpm --dir admin-web build
npm --prefix miniapp run type-check
python scripts/check-no-empty-tests.py
docker compose -p danyang-demo -f infrastructure/docker-compose.yml config --quiet
$env:E2E_BASE_URL='http://localhost:8085/api/v1'
$env:E2E_OPERATOR_PASSWORD='演示环境密码'
python -m pytest tests/e2e -q
$env:DEMO_H5_BASE_URL='http://localhost:6689/h5'
npm --prefix h5-demo run smoke

本次全新卷验证还确认:首次迁移与 Demo seed 成功,seed-demo.ps1 -E2E 第二次重跑幂等成功。当前 danyang-demo 数据卷使用创建时的临时凭据(PostgreSQL demo-db、Redis demo-redis);重建 backend 时必须向 Compose 注入同一组卷凭据,并使用长度至少 32 字节的 JWT 临时密钥。该凭据仅用于本机演示,不得用于生产。

部署到其他演示服务器

此流程适用于隔离的演示服务器,不适用于生产。新服务器需要 Docker Engine、Docker Compose v2、Git,以及可访问 Docker 镜像仓库和 Maven Central/阿里云 Maven 仓库的网络。后端镜像在目标机从源码构建,因此首次构建会下载依赖。

  1. 拉取本次提交或演示标签,并在仓库根目录准备本机环境文件:

    git clone http://120.27.207.134:13000/admin/danyang-match.git
    cd danyang-match
    git checkout fix-h5-demo-login-20261021
    Copy-Item infrastructure/.env.example infrastructure/.env
    
  2. 编辑 infrastructure/.env,为演示环境生成并填写 DB_PASSWORD、REDIS_PASSWORD、MINIO_ACCESS_KEY、MINIO_SECRET_KEY、JWT_ACCESS_SECRET、JWT_REFRESH_SECRET 和 ENCRYPTION_KEY。JWT 密钥至少 32 字节;ENCRYPTION_KEY 使用 64 位十六进制值。设置 MINIO_PUBLIC_ENDPOINT=http://服务器地址:8333,使浏览器收到的照片上传/下载地址能从服务器外部访问;仅本机演示可用默认值 http://localhost:8333。不要将 .env 提交到 Git。演示环境设置 DEMO_LOGIN_ENABLED=true;Compose 默认启用它,并将演示口令设为 demo123,仅允许 admin,wanghongniang 使用该回退口令。正式生产配置不启用此能力。

  3. 在仓库根目录构建并启动完整服务栈:

    docker compose -f infrastructure/docker-compose.yml up -d --build
    docker compose -f infrastructure/docker-compose.yml ps
    

    等待 PostgreSQL、Redis、SeaweedFS 和 Backend 显示健康,再初始化一次演示业务数据:

    .\scripts\seed-demo.ps1
    

    初始化脚本写入用户档案、预置运营账号及 V1.1 首页/内容/服务数据,可重复运行;不要删除已有数据库卷。仅首次部署的空白数据库执行完整基础 seed。已有数据库不会被脚本清空或重置。

  4. 访问本机端口(远程演示时将 localhost 替换为服务器域名或 IP,并按需配置 HTTPS/防火墙):

    • H5 用户端和红娘工作台:http://服务器地址:6689/h5/
    • 管理端:http://服务器地址:6688/admin/
    • 浏览器照片上传/下载还需要服务器防火墙开放 8333,且 .env 中 MINIO_PUBLIC_ENDPOINT 与外部访问域名/IP 一致。
    • H5 用户端选择“晓燕”等预置账号直接登录,无需真实微信;预置登录码对应 demo_openid_f02 等 seed 用户。
    • 管理员:admin / demo123;红娘:wanghongniang / demo123。

    只有完成演示数据初始化且账号为 active,预置账号才能进入完整页面流程。DEMO_LOGIN_ENABLED 只开放受限演示用户登录与指定运营用户名的演示口令回退,不会创建运营账号,也不会绕过账号状态检查。

  5. 升级本次提交后重新构建应用服务:

    docker compose -f infrastructure/docker-compose.yml up -d --build backend h5-web admin-web
    

本流程不配置真实微信、正式证书或生产域名;线上生产部署应使用 docker-compose.prod.yml,独立配置真实身份凭据,并保持演示登录关闭。

演示数据初始化

在 Compose 栈健康后执行一次即可;脚本可重复运行,不会清空数据库:

.\scripts\seed-demo.ps1

需要同时准备 E2E 运营账号时:

$env:E2E_OPERATOR_PASSWORD='DemoPass123!'
.\scripts\seed-demo.ps1 -E2E

当前判断

演示版达到 CONDITIONAL GO (DEMO ONLY):可在本机 Docker 环境演示核心用户、运营、红娘、咨询、服务站和活动互选流程。该结论不覆盖真实微信、生产证书、正式域名、真实用户 UAT 或外部备份介质,也不等于正式生产 GO。

正式生产仍保持 NO-GO,待上述排除项完成后另行执行生产部署、真实集成、UAT、恢复演练和发布审批。