feat: expand companion platform, device controls, and memoir workflows
ci / verify (push) Canceled after 0s

Add customer and operator login, BLE provisioning, device fleet controls, call memory, memoir generation, and refreshed family and maintenance portals. Include API contracts, migrations, firmware sources, tests, assets, and deployment documentation.
This commit is contained in:
Codex Local
2026-10-08 10:06:44 +08:00
parent 98fb2965d0
commit bf1233d5df
861 changed files with 94614 additions and 3209 deletions
+50
View File
@@ -0,0 +1,50 @@
# 腾讯云验证码发布记录(2026-09-20)
## 已发布
- 生产:`https://82.157.201.114`;管理端入口:运行配置 → 验证码设置。
- 版本:`0.97.1-rc.tencent-captcha1`,约 21:31(Asia/Shanghai)发布。
- 以线上 `0.97.0-rc.tencent-sms1` 源码为基线,只叠加验证码实现。未带入本地其他后台页面样式、固件或设备功能改动。运行配置页仅增加两个视图按钮和验证码设置面板,保留原发布工作台。
- API、worker、Web 镜像已更新,gateway 仅重载;数据库迁移 71 已应用、dirty=false。
- `/opt/data-terminal-cloud/current` → `/opt/data-terminal-cloud/releases/0.97.1-rc.tencent-captcha1`。
- 发布包 SHA-256:`cef0dbad61c9315ee26d6966c9c45f29db45b7ad319dad13046a87495bb29609`。
- 当前策略:`saas_mode=image`、`mini_mode=image`、`version=1`。未开启腾讯云模式、未发送真实短信、未自动完成任何真实 CAPTCHA。
## 配置和安全
- 使用用户上传的 `/etc/data-terminal-cloud/voice-runtime/tencent-captcha.json`,内容未修改、未复制到本地、未输出日志。
- 已收紧为 root:65532、0640;原上传内容备份在 `/var/backups/data-terminal-cloud/tencent-captcha-upload-20260920.json`,0600。
- API/worker 复用只读 secrets 挂载,唯一新增环境键为 `TENCENT_CAPTCHA_CONFIG_FILE`;既有短信配置未修改。
- API/worker 非 root 配置加载检查通过;原短信功能仍开启。
- 腾讯云 DescribeCaptchaUserAllAppId 查询确认两套应用属于当前凭据可访问的账号:SaaS channel=web,小程序 channel=mini;DescribeCaptchaAppIdInfo 均返回 code=0。
- 此检查不代表 AppSecretKey、真实票据校验权限、套餐或人工验证全流程均已验证,后续仍需手动联调。
- Web CSP 已允许官方 SDK/iframe 域名,未开放内联脚本;公网 JS/CSS 中未发现配置文件内的 API 密钥或应用密钥。
## 验证
- 发布候选的配置/Tencent SDK/IP 单元测试通过。
- 发布候选在新建隔离数据库、迁移 1–71、local_seed 下,完整 `go test ./internal/onboarding -count=1` 通过。
- 隔离测试最初缺少 JSON fixture;补齐后复用测试库又触发已有固定手机号测试冲突。重建本任务专用测试库后全包通过,测试未指向生产。
- Linux amd64 API/worker 编译、Web OpenAPI 生成及生产构建通过。
- 发布候选运行原 phone-password-login 9 项、新 tencent-captcha 4 项浏览器检查通过;腾讯 SDK/API 使用 mock,不产生真实验证或短信费用。
- `go test ./... -run '^$'` 在候选的 devicefleet 旧测试失败(fakeStore 缺少 OpenDownload、StartBroker 签名不匹配);在原线上 SMS 基线候选复现相同失败,属于未修改的已有测试不一致。本次未改写设备功能来消除该失败,不声称全仓测试通过。
- 线上 SaaS、管理端、小程序客户/运营端共四个登录入口均返回 image 模式 PNG,短信开关仍开启。
- 未登录访问验证码策略接口返回 401;Web 新资源 200、CSP 检查通过。
- API/worker readiness 正常,API/worker/Web 运行且重启计数均为 0,公网版本正确。
- 本任务专用的本地 PostgreSQL/Redis 测试容器、临时数据已清理;未删除用户或生产数据。
## 尚需人工完成
1. 管理员在运行配置 → 验证码设置把 SaaS 切至腾讯云;另开登录页手动完成腾讯云验证并测试登录/短信流程。保存前保留已登录的管理端会话,以便改回 image。
2. 小程序需在微信平台授权官方插件 `wx1fe8d9a3cb067a75`(2.1.5),使用 `C:/Users/19926/WeChatProjects/voicelink` 已更新源码重新编译、真机测试并发布后,再启用小程序腾讯云模式。本轮未提交或发布小程序。
3. 不要启用尚未实现的 CaptchaAppId 强制鉴权选项。
## 备份和回退
- 发布前加密备份:`/var/backups/data-terminal-cloud/before-0.97.1-rc.tencent-captcha1.dump.enc`(0600),已完整恢复到临时验证库并验证成功;验证库随即删除。
- 保留上版镜像和 release;migration 71 为新增表,旧镜像可兼容保留该表。
- 优先只将验证码模式切回 image。如果无法登录,授权运维可将 login_captcha_policy 相应字段恢复 image 并递增 version;不要删除账号或修改密码。
- 整体镜像回退使用新 release 的 `deploy/server/compose.captcha-rollback.yaml`,并保留完整 compose 层:base、override、subtitle、onboarding、migration、fleet、admin-ui、admin-ui2、tencent-sms、captcha-rollback。只重建 api/worker/web,重载 gateway;健康检查通过后将 current 指回旧 release。不要执行 down 或删除生产卷。
- 后续正常发布必须保留 `deploy/server/compose.tencent-captcha.yaml` 最后覆盖层,避免使用过时的镜像。
官方说明:[Web 接入](https://cloud.tencent.com/document/product/1110/36841)、[小程序插件](https://cloud.tencent.com/document/product/1110/49319)。