release(android): close 0.1.17 device candidate

This commit is contained in:
key
2026-07-30 21:02:56 +08:00
parent c16a3e83d7
commit adedcb4200
14 changed files with 149 additions and 52 deletions
@@ -8,29 +8,31 @@
## 结论
**当前为 No-Go,暂不能把现有 APK 标记为 8 月 1 日可分发版本。**
**当前技术候选已可用于继续受控验收,但正式 8 月 1 日发布仍为 No-Go。**
`0.1.13` DCloud 云端证书 APK 已生成并通过深检,且在 vivo Android 15 真机完成真实页面登录、麦克风允许和生产 ASR;干净提交 `af8af2f6` 的统一 RC 曾达到 `releaseEligible=true`。随后生成的签名 `0.1.16 (116)` APK 也通过包名、API 35、明文流量和签名深检,但其内嵌 `app-service.js` 早于 2026-07-30 最终麦克风权限 Activity/窗口焦点修复,与当前 App-Plus 构建不一致,不能作为当前源码候选。当前源码已完成 Android 系统选择器、SAF 复制、上传路径和授权/选择器生命周期收口,并通过本地自动化与 App-Plus 构建;生产后端不再阻断,当前阻断点是用新版本号生成最终签名候选并同包复验、发布五通道配置能力后绑定经业务批准的处理人、正式业务内容与企业发布签认,以及真实断网、WebRTC、图片/视频/文档和受控下载等剩余真机门禁。
签名 `0.1.17 (117)` 已生成并通过包名、版本、API 35、禁止明文流量、DCloud 测试签名、登录法务与包内业务资源一致性深检;同一 APK 已覆盖安装到 vivo Android 15 真机,完成正式账号登录、学习中心、麦克风允许/拒绝/恢复、系统文件与媒体选择器取消、WAV 选择与生产 ASR、成果投稿确认保存,以及大喇叭到五通道直通车只读回归。生产五通道也已按服务端资格规则各配置 2 名有效后台处理人。当前阻断已从“没有当前签名包/没有处理人”收窄为正式内容、通道与负责人签认,受控分发/法务/签名决策,以及真实断网、WebRTC、实际图片/视频/文档和受控下载等剩余同包真机门禁。
## 已通过
| 检查项 | 当前结果 |
|---|---|
| 当前运行时冻结 | 干净提交 `af8af2f6dd169e4616a4ca0ca724e8b809502ab3` 的 `0.1.13 (113)` 统一 RC 已完成,`releaseEligible=true`;证据目录为 `output/aug1-rc/0.1.13-113-af8af2f6-frozen/`,候选后端 JAR SHA-256 为 `93AD272118F6A28F88C2BFA305F5C450E163CBE22577FF5BE3E85B3BD3958DAD` |
| 移动端自动化 | 当前 208 项单元测试通过;TypeScript 类型检查通过;新增 Android SAF、FileChannel、应用专属外部缓存、麦克风预检、权限 Activity 焦点恢复和系统选择器生命周期回归,相关页面继续覆盖取消/平台失败分流 |
| 构建 | 当前 App 发布资源预检与 App-Plus 构建通过;管理端生产构建与 28 项定向测试通过。已生成的签名 `0.1.16` APK 早于最终麦克风生命周期修复,包内业务资源与当前构建不一致,不能把它当成当前源码出包 |
| 移动端自动化 | 当前 209 项单元测试通过;TypeScript 类型检查通过;新增 Android SAF、FileChannel、应用专属外部缓存、麦克风预检、权限 Activity 焦点恢复、系统选择器生命周期,以及认证态 UI 审计不持久化手机号/验证码回归 |
| 构建 | 当前 App 发布资源预检、App-Plus 构建和 `0.1.17` APK 深检通过;本轮另复跑后端学习/成果投稿/直通车/语音定向测试 46 项及管理端直通车测试 4 项,均通过 |
| P0 后端语义 | `ruoyi-aihr` 708 项全量测试通过,0 失败、0 错误;本轮新增五通道处理人配置的超级管理员、租户和候选人资格契约覆盖 |
| 内容候选门禁 | 已生成 5 个禁用场景候选和 30 道待审政策题,机器校验通过;正式可发布场景 `0`、正式有据标准答案 `0`,不得导入或启用 |
| 最终业务就绪门禁 | `verify-aug1-formal-content.mjs --strict` 和 `verify-aug1-release-readiness.sh --execute` 已落地并覆盖正反例;当前机器签认准确返回场景 `0/5`、问题证据 `0/30`、通道验收 `0/5`、负责人签认 `0/5`、受控分发 `PENDING` 并失败关闭。签认完成后还会只读核对生产固定码模式、五角色各至少两名有效处理人和五个已发布场景的版本/哈希/审核链/SOP 引用;不请求验证码、不登录、不发短信、不写数据库 |
| App 资源门禁 | 正式法务 URL、登录页同意门禁、原生 `prompt=none`、API 35、图标和启动图检查通过 |
| 独立 APK | 最新生成文件为 `com.yincheng.wygj 0.1.16 (116)`,大小 `33,922,835` 字节,SHA-256 `183E67137CE9B73FC6D41A728779D40EB0122F8F62E1951B65DDC356203937F5`,`targetSdkVersion=35`、v2 DCloud 测试签名、明文 HTTP 关闭;但该包不含当前最终麦克风生命周期修复,不能作为当前候选。`0.1.13` 仍只保留为历史统一 RC |
| 独立 APK | 当前候选为 `com.yincheng.wygj 0.1.17 (117)`,文件 `mobile-uni/dist/debug/bangdao-0.1.17-dcloud-test.apk`,大小 `33,922,976` 字节,SHA-256 `0A8581D70A5988E4BDCF4BB3F0C88B4608FA8C6785FDCF1569DD56CE88E27F60`,`targetSdkVersion=35`、DCloud 测试签名、明文 HTTP 关闭;签名证书 SHA-256 为 `AB06ECC0DE544DE73C385F3F0690B22966EBC12887FB8BEE1830CDBEFDEBEF5D` |
| 双提交交付包 | `output/aug1-release/bangdao-aug1-0.1.13-113-af8af2f6-ops46f4616b.zip`;运行时 `af8af2f6`、operations `46f4616b`,大小 `192,948,093` 字节,SHA-256 `F6DF4AB2660A4D3523C7E9785C1F8B572770F1F795A841E2D95C88936A8AE9C0`,20 个条目和内部哈希复核通过;严格门禁覆盖正式场景、问题证据、五类负责人、五通道授权/越权/单次正式回复和受控分发/法务/签名决策,包内 Go/No-Go 已指向当前双提交包,旧 `ops9c53668c` ZIP 只作历史追溯 |
| APK 内容门禁 | `0.1.16` 的原生提示、登录法务、未勾选拦截、身份失败关闭、敏感值和网络安全扫描通过;但包内 `app-service.js` SHA-256 为 `24BC971FE8A13DDCF6C4C2640A8F6C2241299A8C5B24A6452DE4D58CCF33CFAC`,当前构建为 `1A13F998BB43F3298CD40FE28FC85EEDBE0A9E9EDF5F0C6B7AD1FD7519C20C5B`,资源一致性门禁失败 |
| 真机安装启动 | vivo V2443A(Android 15/API 35)完成当前 `0.1.13` 从 `0.1.6` 保留数据升级、同版本再次覆盖安装和 Launcher 冷启动;四项敏感权限保持未授权,未见 Crash/ANR |
| APK 内容门禁 | `0.1.17` 的包名/版本、原生提示、登录法务、未勾选拦截、身份失败关闭、敏感值、网络安全、签名和包内业务资源与当前 App-Plus 构建一致性均通过 |
| 真机安装启动 | vivo V2443A(Android 15/API 35)已从签名 `0.1.16` 保留数据覆盖升级到签名 `0.1.17`,Launcher 启动、前台 Activity 和页面渲染正常,未见 Crash/ANR;录音权限在负向测试后已恢复为授权,图片/视频权限继续保持未授权 |
| 虚拟机安装与生命周期 | 本机 `Medium_Phone` Android 15/API 35 已全新安装 `0.1.12`;启动原生隐私层不可见、四项敏感权限为 `false`、未见 Crash/ANR。AVD 为 `x86_64`、APK 仅含 ARM ABI,Weex 跨架构转译实际报 `spinWaitPeer`/IPC timeout;原生外壳证据有效,页面主体既不判失败也不判通过,不向发布包增加 x86 ABI或 H5 兜底 |
| Android 统一取证 | 当前 `0.1.13 (113)` 进程和前台 Activity 正常、原生隐私层 `not-visible`、四项敏感权限为 `false`、退出记录无 Crash/ANR;Home 后进程保持,热恢复约 `0.2s`。证据在 `output/aug1-rc/android-acceptance/20260729-140453-upgrade-0.1.13-cold-launch/` |
| Android 统一取证 | 当前 `0.1.17 (117)` 进程和前台 Activity 正常、原生隐私层 `not-visible`、未见历史 Crash/ANR;脱敏证据包括 `output/aug1-rc/android-acceptance/20260730-123230-aug1-0.1.17-authenticated-home/` 与 `20260730-123522-aug1-0.1.17-learning-center/` |
| 登录页法务策略 | 启动不再弹原生确认,包体门禁通过;vivo 真机实测协议默认未勾选、验证码/登录请求前失败关闭、勾选后进入验证码校验,两个链接分别打开线上服务协议和 2026-07-28 版隐私正文;脱敏截图不含手机号、验证码或令牌 |
| 真机登录与音频 | vivo 真机使用生产现有在职 APP 主体和固定码完成页面登录,签名 `0.1.13` 完成麦克风允许、原生录音和生产 ASR;当前 `0.1.16` 资源在 HBuilderX 5.22 标准调试基座完成系统选择器取消、重复打开、`100,542` 字节 WAV 精确复制、multipart 上传、生产 ASR 和成果草稿整理,未点击确认投稿。账号、固定码、令牌和业务正文未入库为证据 |
| 真机登录与音频 | vivo 真机使用生产现有在职 APP 主体和固定码完成 `0.1.17` 页面登录;麦克风已覆盖允许、长按录音上滑取消、系统“禁止”、拒绝后的文件降级和权限恢复。系统文件/媒体选择器取消均正常回到 App;另选择 `191,352` 字节合成中文 WAV,生产 ASR 返回有效文本并进入问师傅,测试文件随后从手机和电脑删除 |
| 真机核心业务 | 学习中心加载真实今日任务、岗位 SOP 和错题本,无系统错误;成果投稿完成两条补充追问、确认卡和正式确认,返回投稿编号 `#7`、`PENDING/待审核`;大喇叭与直通车显示总裁、财务、人力、审计、运营五通道。测试投稿明确标记为 8 月 1 日真机验收记录 |
| 五通道处理人 | 生产只读查询按服务端同一资格规则排除 APP 用户、停用用户和超级管理员后,`direct_president/direct_finance/direct_hr/direct_audit/direct_operations` 均为 `2/2`,达到主处理人和备份门槛;人员身份不进入证据 |
| 生产固定码认证 | 运行时确认固定码和生产显式开关同时启用;生产应用日志确认首次和重新登录前的两次验证码请求均命中“未真实发送短信”分支。只选择已存在 `app_user` 的双向唯一在职主体,不触发自动注册,不输出手机号、固定码或令牌 |
| 认证后非真机主路径 | `scripts/verify-aug1-authenticated-production.sh --execute` 通过身份/非空项目范围、认证首页、训练历史/画像、五通道、我的反馈、大喇叭、考试、案例/全网能力只读入口、退出、旧令牌业务码 401、防刷窗口后的再次获取、重新登录、重新读取身份和再次退出;五通道返回数为 5。未提交业务写入、附件、ASR/TTS 或 Agent 请求 |
| 法务静态页 | `https://peilian.njzhmj.top/legal/terms.html` 与 `https://peilian.njzhmj.top/legal/privacy.html` 已部署并可访问;发布前站点备份为 `/opt/wygj/backups/www-20260728224710` |
@@ -40,10 +42,10 @@
## No-Go 阻断项
1. **当前源码对应的最终签名候选包尚不存在。** `0.1.13` 的真实登录、麦克风允许和 ASR 已通过,但拒绝后的文件降级存在缺陷;`0.1.14/0.1.15` 仅为调查包且 APK 已删除。已生成的 `0.1.16` 签名包早于最终权限 Activity/窗口焦点修复,包内业务资源与当前构建不一致。必须使用新版本号生成、深检并真机复跑同一签名 APK,调试基座和旧 `0.1.16` 均不能替代该门禁。
2. **核心业务的非写入认证入口已通过,正式业务闭环仍受内容和处理人阻断。** 认证账号下身份、项目范围、首页、训练历史/画像、五通道列表、我的反馈、大喇叭、考试、案例和全网能力只读入口均已通过;五通道处理人配置已在本地实现并验证,但生产新接口仍为 404、五个角色有效绑定仍均为 0。正式“练”仍没有可发布的 5 个场景,图片/视频/文档、受控下载、WebRTC 和真实断网恢复仍待最终签名包真机验收。不得通过创建测试内容或绑定任意用户制造假闭环。
3. **内容与业务验收不足。** 当前仅收到 1/24 份生活顾问访谈。技术侧已把调研整理为 30 道政策题候选和 5 个场景候选,并提供统一签认单,但全部保持待审/禁用,正式可发布场景仍为 0/5,正式有据标准答案仍为 0/30。生产只读审计确认 `direct_president/direct_finance/direct_hr/direct_audit/direct_operations` 五个角色的有效用户绑定数均为 0,必须由业务负责人指定主处理人和替补后再验收。
4. **APK 分发与企业发布尚未签认。** 后端发布授权、备份、原子切换、发布后验证和回滚点已经闭环;最后一个签名 APK `0.1.13` 已关闭明文流量但不含当前选择器修复,`0.1.16` 尚未云打包。受控分发批准、测试签名接受、企业签名和公司法务正式签认仍是对应发布层级的门槛。
1. **正式内容与负责人签认仍为空。** 严格门禁当前仍准确失败:`releaseStatus`、正式内容版本和来源未批准,5 个场景、30 道题、5 个通道、5 类负责人签认均未完成,正式可发布场景仍为 `0/5`,有据标准答案仍为 `0/30`。已上传资料和测试投稿不能自动替代业务审核。
2. **剩余同包真机门禁尚未完成。** `0.1.17` 已覆盖登录、学习、麦克风正反例、文件/媒体选择器取消、音频选择和 ASR,但真实断网恢复、WebRTC、实际图片/视频/文档选择与上传、受控下载、主管/候选人角色同包回归仍需完成。
3. **通道业务验收尚未签字。** 五通道各 2 名有效处理人已配置,员工端入口已通过;仍需获批处理人分别完成正例、跨通道越权反例和一次正式回复,并由通道负责人记录批准,不能仅用数据库人数代替业务验收。
4. **APK 分发与企业发布尚未签认。** `0.1.17` 当前使用 DCloud 测试签名;受控分发批准、测试签名接受、企业签名/公司法务决策、分发证据哈希和发布负责人签字仍为 `PENDING`,因此不能称为 8 月 1 日正式可分发版本。
## 转为 Go 的最短路径
@@ -53,9 +55,11 @@
| 已完成 | 在干净提交上冻结 `0.1.13` APK 与候选后端 JAR,并执行生产只读发布计划 | `releaseEligible=true`,冻结目录 `output/aug1-rc/0.1.13-113-af8af2f6-frozen/`;候选 JAR `93AD2721…` 和当时现网 `46C99CFF…` 只保留为冻结/发布前基线 |
| 已完成 | 获得明确授权后使用 `release-backend.sh deploy` 发布内容语义、移动身份失败关闭和后续资料处理恢复;保留回滚点并完成发布后验证 | 生产 JAR `5376B67B…`、服务 active、三个公开入口 HTTP 200、媒体重试 schema 契约通过;管理端同步发布,移动 H5 未重发 |
| 已完成 | 使用生产现有在职 APP 主体和固定码完成非真机认证、退出、重新获取、重新登录及认证后只读主路径;固定码请求不真实发送短信 | `scripts/verify-aug1-authenticated-production.sh --execute` 全部通过,五通道数为 5,旧令牌按业务码 401 拒绝,两次验证码请求均有“未真实发送”日志;执行过程不输出手机号、固定码或令牌 |
| 1 | 业务方按统一签认单审核 30 道题和 5 个场景候选,补齐正式来源;同时指定五渠道主处理人和替补 | [业务内容与五通道签认单](帮道8月1日业务内容与五通道签认单-20260729.md)、正式内容版本、授权矩阵;正式可发布场景从 0/5 提升到 5/5、有据标准答案从 0/30 提升到 30/30,五个角色有效绑定均不少于 2 |
| 2 | 绑定获批处理人后完成五通道正例、跨通道反例和一次正式回复;用正式内容完成“查/练/问”业务写入闭环 | 每条用例的时间、角色、结果和脱敏证据;不记录手机号、验证码或反馈正文 |
| 3 | 使用新版本号(建议 `0.1.17 (117)`)生成并深检当前源码签名 APK,在 Android 真机复跑麦克风允许/拒绝、权限 Activity 返回、系统选择器取消/选择、音频 ASR,并继续完成真实断网、WebRTC、图片/视频/文档和受控下载 | 新 APK 版本、哈希、签名、包内业务资源与冻结构建一致,以及同一包对应的设备证据;当前标准调试基座和旧 `0.1.16` 均不得替代签名包验收 |
| 4 | 7 月 31 日复跑安装、升级、回滚和完整 Go/No-Go | RC APK 哈希、签认人、回滚点、最终结论 |
| 已完成 | 生成、深检并在 Android 15 真机安装当前 `0.1.17 (117)` 签名候选,复跑登录、学习中心、麦克风正反例、选择器取消、音频 ASR、成果投稿确认和五通道入口 | APK SHA-256 `0A8581D7…`、签名 `AB06ECC0…`、API 35、业务资源一致;录音权限测试后已恢复,测试音频已清理 |
| 已完成 | 为五个直通车角色配置符合资格的主处理人和备份 | 生产只读计数五个角色均为 `2/2`,不输出人员身份 |
| 1 | 业务方按统一签认单审核 30 道题和 5 个场景候选,补齐正式来源、五通道业务验收和五类负责人签字 | [业务内容与五通道签认单](帮道8月1日业务内容与五通道签认单-20260729.md)、正式内容版本、来源哈希、授权矩阵;场景 `5/5`、题目 `30/30`、通道 `5/5`、负责人 `5/5` |
| 2 | 在同一 `0.1.17` 包继续完成真实断网、WebRTC、实际图片/视频/文档、受控下载及主管/候选人角色,并完成五通道正例/越权反例/一次正式回复 | 每条用例的时间、角色、结果和脱敏证据;不记录手机号、验证码、令牌或反馈正文 |
| 3 | 完成受控分发、测试签名接受或企业签名、公司法务和发布负责人决策 | `distributionApproval=APPROVED`、分发证据引用与 SHA-256、签名决定和签认时间 |
| 4 | 在干净提交上冻结 `0.1.17` APK 和交付包,7 月 31 日复跑安装、升级、回滚及完整 Go/No-Go | RC 提交、APK/交付包哈希、回滚点、签认人和最终结论 |
公司法务签认与企业签名可在负责人明确接受“仅限小范围受控内部测试”的前提下不阻断技术验收,但不能省略登录页协议门禁、权限反例、版本冻结、生产依赖匹配和核心业务闭环。