Files
danyang-match/docs/PHASE26-GO-LIVE-CHECKLIST.md
WorkBuddy e740cbf403 docs(phase26): 上线清单 ⛔ 结论更正为仅第 2/5 项阻塞(第 4/6 项已闭环)+ 覆盖率数字更新
commit 44f75ac 已闭环推荐恒空(第 6 项)与资料/择偶条件保存失败(第 4 项),
但清单头部 ⛔ 结论仍写着「第 2/4/5/6 项为硬阻塞」,与当前代码事实不符
——会直接把已修项误判为阻塞,或反之让人以为清单已过时而不读。
本次更正为「第 2、5 项仍为硬阻塞」,并把已闭环项与仍阻塞项分列,避免再次过时。

同时把自动化覆盖率数字更新为当前真实值:
后端 757 → 795、UI 契约 22/22 → 23/23(新增 ui-tests/miniapp-profile-contracts.mjs)。
2026-09-23 14:46:03 +08:00

7.7 KiB
Raw Permalink Blame History

Phase 26 — 上线前 13 项手动验证清单

用途:V1.1 进入 UAT / 生产上线 前,由 运营 / 产品 / 运维 人工逐项确认的清单。 本清单只覆盖「上线前必须肉眼或真机确认」的项;自动化回归已由 CI 覆盖 (后端 mvn verify 795 绿 / E2E 65 passed / UI 契约 23/23 / 真编译 WXSS 88+WXML 86)。

判据纪律(沿用项目一贯要求):断言 ≠ 证据。✅ 已完成 类文档声明一律以 「当前代码 + 测试 + 人工验收」为准。本清单每项都给出 可执行的验证方式, 不靠口头确认。

关联决策:docs/PENDING_DECISIONS.md(13 项产品待确认)、docs/governance/open-questions.md。 冒烟脚本:infrastructure/scripts/smoke-test.sh(自动化子集)。

⛔ 2026-09-23 走查结论:本清单第 2、5 项仍为硬阻塞,当前不具备上线条件。 详见 docs/UAT-WALKTHROUGH-2026-09-23.md(源码证据 + 本地栈运行时实测 + 容器异常栈;修复进展见该报告第八节)。 仍阻塞:① 微信登录无真实 code2session(全库仅 Mock Provider);② 照片直传后不落库、不可见。

已同日闭环(commit 44f75ac,CI run 35827369458 7/7 绿): ③ 推荐列表恒空(calculateScore 为桩恒 50 < 阈值 60)→ 新增 MatchScoringService 真实评分; ④ 资料 / 择偶条件保存即失败(409/500)→ 改 upsert + 由实名派生 NOT NULL 字段; ⑤ 遗留端点 interests/confirm 可单方直建 Match → 改走阶段二同意链路(INV-014/015)。 走查另发现跨端字段名 / 取值契约不符(4 类取值违反 DB CHECK 直接 500)→ 已随同修复。

上述缺陷此前均逃过 757 后端测试 + 65 E2E + 22 UI 守卫(测试盲区);现已补行为型用例 + 负向注入自证。 第 2、5 项修复并复测前不得按本清单放行。


验证总表

# 验证项 验证方式 通过标准 负责方 关联决策 / 配置
1 部署栈存活 bash infrastructure/scripts/smoke-test.sh live/ready/version 全 200;postgres/redis/seaweedfs 就绪 运维 —
2 微信小程序登录链路 真机「善缘丹阳」小程序微信授权登录 返回 accessToken+refreshToken,进入首页;token 过期触发重新登录 产品+运营 微信 appid/secret 生产配置;WECHAT_APP_SECRET 已填
3 运营端登录与越权隔离 管理后台 /admin/ 用 seed 账号登录;尝试越权访问用户端资源 登录成功;运营 token 不能进入用户端(hasRole("USER") 兜底) 运营 运营账号仅 seed 创建(迁移无 operator 种子)
4 用户资料与择偶条件读写 小程序「我的 → 编辑资料 / 择偶条件」保存并回读 保存 2xx 且落库正确;下拉选项全中文简体(本次中文化成果) 产品 见第 9 项
5 照片上传(SeaweedFS 直传) 小程序上传头像/相册,上传后打开查看 presigned PUT 直传成功、GET 下载字节一致;MINIO_PUBLIC_ENDPOINT 对外可达 运维 prod MINIO_PUBLIC_ENDPOINT(ingress 域名)
6 推荐 / 匹配核心链路 首页推荐 → Like / Pass → 互选双确认 → 开聊 推荐列表中文标签正确;Match/会话建立;Block 优先 产品 推荐阈值 matching.recommendation.minScore(技术默认 60,OQ-MATCH-001);照片上限 profile.photo.maxCount(技术默认 6,OQ-PROFILE-001)
7 即时聊天(WebSocket) 互选成功后双方发文本消息 握手鉴权、消息实时下行、历史可拉取;图片经安全检测 产品 —
8 活动全链路 浏览多类型活动 → 报名 → 运营审核 → 签到码核销 报名/审核/签到全通;互选活动双确认建 Match+会话 运营 服务站开放时间(待确认);活动意向端点语义(见 OQ)
9 婚恋咨询 / 婚前辅导 申请 → 分配 → 排期 → 跟进 → 完成(四态) 状态机合法迁移;counselor 仅见指派数据;manager 见摘要不见正文 运营 咨询资质要求、预约时段规则(待确认)
10 公益红娘转介 红娘建立服务关系 → 推荐 / 转介 归属校验生效;不能替非本人负责用户操作、不能自荐 运营 —
11 内容 / 反诈 / 课堂 / 服务站 运营端 Banner+文章 CRUD、服务站公告;用户端展示 内容发布/下架正确;Banner 不外链;服务站公告可见 运营 Banner 最大活跃数量(OQ-BANNER-001,代码暂无限制,需定值)
12 管理端驾驶舱口径真实 管理后台数据统计页 漏斗/安全卡显示真实值(非硬编码 0);与汇总表同源 产品 有效交友匹配报送口径(待确认)
13 合规与备份 ① 未认证 401 / 越权 403 / 非法枚举 400;② 敏感访问有审计;③ 注销后数据保留 ≥36 个月;④ 数据库备份可恢复演练 4 项均达成;保留期配置 account.data-retention-months=36 运维+产品 数据保留期(2026-09-19 产品确认下限 36 个月);本地资格佐证保留期限(待确认)

执行说明

1. 部署栈存活(自动化)

export BASE_URL="https://你的生产域名"
bash infrastructure/scripts/smoke-test.sh

脚本断言 live / ready / version 与关键匿名接口应 401;任一 FAIL 即退出 1。 带 token 的子集(推荐/匹配/聊天等需登录链路)在提供 OPERATOR_TOKEN 后展开, 未提供时明确打印「需人工真机验证」,不做假绿。

2~13. 人工链路(真机 / 管理端)

  • 小程序:用真机微信账号走「善缘丹阳」小程序,逐项核对页面文案全中文简体 (重点:我的页 → 择偶条件 → 子女下拉;详情页学历/职业/婚姻/子女状态标签)。
  • 管理端:浏览器开 /admin/,用 seed 运营账号逐模块走查;数据统计页核对数字真实性。
  • 合规:抽查 /api/v1/operator/audit-logs(或对应审计接口)确认敏感访问被记录; 数据库做一次备份恢复演练。

上线前配置核对(必填,部署时)

配置项 位置 说明
WECHAT_APP_SECRET 后端环境变量 / secret 生产微信 secret,不得留空
MINIO_PUBLIC_ENDPOINT infrastructure/docker-compose.prod.yml 对外可达的 SeaweedFS 网关域名(presigned URL host),缺省 http://seaweedfs:8333 仅容器内通
JWT_ACCESS_SECRET / JWT_REFRESH_SECRET 后端环境变量 生产必须用强随机值,且与微信登录验签密钥分离(2026-09-22 已修复 refresh 用错密钥)
ENCRYPTION_KEY 后端环境变量 身份证等敏感字段加解密密钥
HTTPS 证书 ingress / 反向代理 证书到期须纳入监控(部署文档第七十五章)
限流(若启用) 后端配置 RATE_LIMITED/429 已就位,是否启用及阈值待产品确认

不计入本清单(需产品拍板,非技术阻塞)

  • 人脸核验 Provider 选型(identity.liveness.provider 默认 none,Feature Flag 控制)
  • 本地资格佐证触发策略 / 文件保留期限(需合规审核)
  • 匹配报送口径、Banner 活跃上限、咨询资质/预约时段、服务站开放时间
  • 第三方开放(API Key / OAuth / 限流配额 / OpenAPI 发布)—— 范围扩张,待决策

以上在 docs/PENDING_DECISIONS.md 逐项跟踪;未确认不影响「核心功能可上线」, 但相关默认值(阈值 60、照片 6 张等)应以产品正式确认值替换并落 decision-register.md。