test(release): verify Android production routes read-only
This commit is contained in:
@@ -360,6 +360,12 @@ Android 人工验收每完成一个步骤,用 `.\scripts\capture-android-accep
|
||||
--approval 'ROLLBACK_BACKEND:<完整备份JAR-SHA256>'
|
||||
```
|
||||
|
||||
发布前后均可重复运行下列无登录安全探针。它只对 APK 依赖的 20 个入口发送 GET:1 个公开首页必须返回业务 `200`,6 个鉴权 GET 必须返回 `401`,13 个仅允许 POST 的入口用 GET 必须返回 `405`。`/api/knowledge/answer-feedback` 同时存在员工 POST 和运营 GET,因此归入鉴权 GET。脚本明确排除短信验证码入口,不登录、不上传、不提交业务请求;通过只证明路由存在且无登录访问失败关闭,不能替代认证态业务验收:
|
||||
|
||||
```bash
|
||||
./scripts/verify-aug1-production-api-readonly.sh
|
||||
```
|
||||
|
||||
## MVP 页面验证
|
||||
|
||||
登录后侧栏应只展示以下入口:
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
| Android 统一取证 | 新增只读脚本并通过状态变更命令回归;实跑确认前台原生隐私弹窗标题与拒绝/同意按钮可见、登录不可见、四项敏感权限为 `false`、退出记录无 Crash/ANR,证据在忽略目录 `output/aug1-rc/android-acceptance/` |
|
||||
| 首次隐私弹窗 | 最新包已在虚拟机干净启动显示原生弹窗;前一候选包的两个 HTTPS 链接已在 vivo 系统浏览器打开,仍需用户亲自执行拒绝/同意反例 |
|
||||
| 法务静态页 | `https://peilian.njzhmj.top/legal/terms.html` 与 `https://peilian.njzhmj.top/legal/privacy.html` 已部署并可访问;发布前站点备份为 `/opt/wygj/backups/www-20260728224710` |
|
||||
| 生产 API 只读契约 | 线上与候选包的 9 个关键控制器 class 哈希逐一相同,短信登录、移动首页、查/练/问、直通车和 ASR/TTS 路由均存在;未登录探针得到公开首页 `200`、5 个鉴权入口 `401`、13 个仅 POST 入口 `405`,全程未发送业务 POST、未创建账号或数据 |
|
||||
| 生产 API 只读契约 | 线上与候选包的 9 个关键控制器 class 哈希逐一相同,短信登录、移动首页、查/练/问、直通车和 ASR/TTS 路由均存在;可重复 GET-only 探针覆盖 20 个 APK 入口,得到公开首页 `1×200`、鉴权入口 `6×401`、仅 POST 入口 `13×405`。`answer-feedback` 因同路径另有运营 GET 归入鉴权组;脚本排除短信验证码,不登录、不上传、不发送业务 POST |
|
||||
| 定向发布预检 | `566f222e` 已支持只核对后端 + schema;`feece9bb` 进一步允许以冻结提交和解压后的候选 JAR 为准。两次实际只读运行均跳过管理端/H5,根站、租户、移动首页和生产禁 DDL 门禁通过;后端 + schema 模式另通过 64/64 schema。冻结物模式确认本地 JAR SHA-256 为 `8c676f2f…`,最终均仅因现网/候选模块哈希 `15f5513a…` / `c93460e8…` 不同而按预期失败 |
|
||||
| 后端发布/回滚计划 | `release-backend.sh` 固定生产 JAR 与 systemd 服务,默认只读,部署/回滚分别要求完整哈希授权串和干净工作区;备份、原子切换、发布后预检、失败恢复及并发改包保护均有回归。冻结 JAR 实跑只读计划通过:候选 `8c676f2f…`、现网 `46c99cff…`,服务 active、空间充足、三个公开入口和 64/64 schema 通过,全程未备份、上传、重启或改库 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user