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

126 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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、生产证书、正式域名、真实用户数据和外部备份介质。
- 与演示闭环无关的功能扩展和大范围重构。
## 演示验证命令
```powershell
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. 拉取本次提交或演示标签,并在仓库根目录准备本机环境文件:
```powershell
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. 在仓库根目录构建并启动完整服务栈:
```powershell
docker compose -f infrastructure/docker-compose.yml up -d --build
docker compose -f infrastructure/docker-compose.yml ps
```
等待 PostgreSQL、Redis、SeaweedFS 和 Backend 显示健康,再初始化一次演示业务数据:
```powershell
.\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. 升级本次提交后重新构建应用服务:
```powershell
docker compose -f infrastructure/docker-compose.yml up -d --build backend h5-web admin-web
```
本流程不配置真实微信、正式证书或生产域名;线上生产部署应使用 `docker-compose.prod.yml`,独立配置真实身份凭据,并保持演示登录关闭。
## 演示数据初始化
在 Compose 栈健康后执行一次即可;脚本可重复运行,不会清空数据库:
```powershell
.\scripts\seed-demo.ps1
```
需要同时准备 E2E 运营账号时:
```powershell
$env:E2E_OPERATOR_PASSWORD='DemoPass123!'
.\scripts\seed-demo.ps1 -E2E
```
## 当前判断
演示版达到 `CONDITIONAL GO (DEMO ONLY)`:可在本机 Docker 环境演示核心用户、运营、红娘、咨询、服务站和活动互选流程。该结论不覆盖真实微信、生产证书、正式域名、真实用户 UAT 或外部备份介质,也不等于正式生产 `GO`。
正式生产仍保持 `NO-GO`,待上述排除项完成后另行执行生产部署、真实集成、UAT、恢复演练和发布审批。