Files
device-voice-h5/openspec/changes/update-october-batch1-h5-integration/IMPLEMENTATION.md
luo 97dec4dc65
All checks were successful
构建并部署前端到生产环境 / build-and-deploy (push) Successful in 2m14s
fix: some
2026-10-13 16:11:02 +08:00

4.5 KiB
Raw Blame History

第 1 批 H5 对接实施与验证记录

2026-10-13:客户端功能已实现。仅对接 /api/c/v1;不处理代理注册、密码规则和后台接口。真实微信授权、短信绑定及后端 A/B 资产通知范围尚需测试环境联调,未部署或提交代码。

已实现

  • 客户手机号、资产是否绑号、号码归属、绑定提示分别保存;登录字段按当前令牌和资产隔离,退出/过期/切换时清理,旧 phoneBindStatus 不再作为权威状态。
  • 四种绑定模式使用原 bind-phone 入参;资产首次绑号可输入与客户号不同的号码,1192 提示管理员并禁用当前提交,1184 保留后端错误。按用户最新确认,强制绑定成功保留有效 token 和资产标识,直接进入首页,不再要求重登。
  • 客户换号只更新后端确认的客户号码,不改资产关联;归属事实失效,下一次真实登录重新确认。换号的原号来源不再放进 URL。
  • asset/info 的共享返回入口接收一次性临期提醒,首页使用可关闭横幅。0 天正常显示,使用服务器等级和上海时区。绑定页可以通过 asset/info 预填,提前收到的提醒保留在当前会话中,进入首页后展示。
  • 旧首页通知弹窗排除临期项,通知中心保留。全部已读改 POST,单条已读保持 PUT;成功后重新读取列表和计数,失败不乐观清空,延迟响应不能覆盖新的资产上下文。

验证证据

证据 结果 说明
npm run test:h5-integration 15/15 通过 实际 store/API 模块及页面 setup,使用 Vue 响应性;原生 API、生命周期和后端响应为模拟
npm run build:h5 通过 uni-app H5 开发配置构建
npm run build:h5:production 通过 uni-app H5 生产配置构建
openspec validate update-october-batch1-h5-integration --strict 通过 提案、需求和场景结构校验
git diff --check 通过 默认 Git 换行配置下未发现补丁空白错误;Windows 换行提示不影响构建
本地浏览器,390×844 通过 0 天红色横幅、上海到期时间、关闭、绑定客户号预填、编辑不同号码、1192 联系管理员弹窗及禁用提交,无页面运行错误

测试文件:tests/october-h5.test.mjs。覆盖绑定模式/成功后的分类更新、登录提示开关、状态持久化/隔离、换号不迁移资产、1192/1184、强制绑定直接进入首页且 token/客户信息/提醒保留、预填失败、共享接收/并发、0~15 天/上海边界、旧弹窗过滤、POST/PUT 请求方法、通知失败与切换、模拟 A/B 全部已读以及 401 状态清理。

本次修订删除了绑定成功后的登录态清理和“绑定手机号成功,请重新登录”提示,替代旧手动重登提案;真正的退出或 401 登录过期处理不变。

本地渲染复验:先完成生产构建,再运行以下命令。使用独立浏览器会话和虚构号码,所有业务接口改写到本地模拟服务。

node tests/mock-h5-preview.mjs

另开一个终端:

agent-browser --session october-h5-ui --headed false --init-script ./tests/mock-h5-browser-init.js open http://127.0.0.1:48138/pages/index/index
agent-browser --session october-h5-ui set viewport 390 844
agent-browser --session october-h5-ui snapshot -i
agent-browser --session october-h5-ui close

模拟服务固定在 127.0.0.1:48138,init 脚本仅在该地址注入;检查后使用 Ctrl+C 停止服务。该模拟接口故意重复返回提醒用于检查前端防重复,不能证明后端每日一次规则。

仍需真实联调

  1. 微信公众号真实登录应返回三个布尔字段;尤其验证客户无号/资产有号时只给客户绑定,以及客户已有号时资产可绑定不同号码。
  2. 确认 asset/info.bound_phone 仍表示当前客户手机号,与登录布尔事实区分;换号后资产号码保持原值。若实际响应与对接文档冲突,先确认契约,不猜测接口。
  3. 同客户 A/B 两个临期资产分别扫码进入,确认服务器每天只返回一次、临期列表/未读数仅计当前资产,以及 A 上 POST 全部已读不改变 B 的临期通知。
  4. 完整回归真实支付、实名认证、套餐订购以及运营/风险换货候选弹窗。本次没有修改这些接口或候选组件,构建成功不替代真实业务验收。

完成结果已按实际验证范围回写 tasks.md,真实联调项保留未勾选;不归档历史提案。