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

126 lines
6.6 KiB
Markdown
Raw Normal View History

2026-10-19 20:36:22 +08:00
# 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 临时密钥。该凭据仅用于本机演示,不得用于生产。
2026-10-21 17:34:03 +08:00
## 部署到其他演示服务器
此流程适用于隔离的演示服务器,不适用于生产。新服务器需要 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`,独立配置真实身份凭据,并保持演示登录关闭。
2026-10-19 20:36:22 +08:00
## 演示数据初始化
在 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、恢复演练和发布审批。