Files
story/docs/external-acceptance-checklist.md
T

126 lines
13 KiB
Markdown
Raw Normal View History

2026-08-26 06:41:07 +08:00
# 真机、真实供应商、试点与生产发布外部验收清单
> 用途:把本地已验证能力与必须由业务方、硬件方、供应商和生产环境共同完成的验收明确分开。
> 原则:前一阶段退出条件未满足,不进入下一阶段;所有证据使用生产候选版本号、构建摘要、配置版本和请求关联编号归档。
## 1. 外部输入与责任人
开始准备外部环境时,可先运行以下轻量预检。它只读取Git元数据、Compose运行服务、外部配置变量名称和证据索引,不读取密钥值,也不会调用真实供应商或执行完整回归:
```powershell
powershell -ExecutionPolicy Bypass -File scripts/stage8-preflight.ps1 `
-EvidenceIndex testdata/release-evidence-index.example.v2.json `
-OutputPath artifacts/stage8-preflight.json
```
自动化入口可增加`-Strict`;当候选提交、远程仓库、真实构建摘要或证据索引结构尚未就绪时返回非零退出码。该报告仅用于定位进入条件,不替代十类一致性报告和`cmd/release-evidence`最终校验。
| 输入 | 提供方 | 最低要求 | 未提供时影响 |
|---|---|---|---|
| 量产候选终端、板卡/音频硬件版本、设备证书注入流程 | 硬件/设备团队 | 至少3台,含目标麦克风、扬声器、网络模组和安全存储 | 无法验证采集质量、AEC、断网补传、升级和吊销 |
| 火山RTC正式测试应用、房间权限、回调和用量查询账号 | RTC供应商/平台团队 | 与生产同区域和同能力,密钥进入云KMS/Secrets Manager | 正式Token与签名Start/Stop适配器已完成,但不能确认真实入房、可选事件回调和计费 |
| 豆包实时语音/大模型、Embedding及内容安全账号 | Agent/供应商团队 | 明确模型版本、区域、额度、SLA、数据使用和留存条款 | 不能完成真实语音质量、模型效果、召回和内容安全验收 |
| 生产OIDC租户、运营角色和审批人员 | IAM/安全团队 | 客户、客服、操作、审批、管理员角色及两名独立审批账号 | 不能验证真实组织映射、双人审批和离职回收 |
| 云PostgreSQL、Redis、对象存储、KMS/HSM、监控和告警接收器 | 云平台/SRE | 私网、TLS、备份、跨可用区、容量配额和告警路由 | 不能完成生产等价恢复、密钥轮换和容量结论 |
| 试点家庭、长者授权文本、隐私政策和退出流程 | 业务/法务/试点运营 | 书面知情同意、联系人、异常升级和数据删除承诺 | 不允许进入家庭试点 |
## 2. 真机与真实供应商联调
### 2.1 进入条件
- 固定一个生产候选提交和OpenAPI版本,V1—当前迁移在空库与备份恢复库均通过;
- 真实密钥只通过云密钥引用注入,镜像、Git、日志和工单中无明文;
- 设备出厂身份、吊销名单、RTC应用、回调地址、IP/域名白名单和时钟同步已配置;
- 明确联调窗口、供应商技术联系人、回滚负责人和故障升级路径。
- 使用`POST /api/v1/ops/diagnostics/acceptance-snapshots`生成`REAL_DEVICE_PROVIDER`快照,候选版本、镜像摘要、迁移和实际必需依赖均已冻结;若存在阻断告警,按快照公开编号和资源核对状态转入告警工作台复核,不能仅凭`MISSING`自动关闭;技术门禁通过只作为进入联调的必要条件,不替代本节退出条件。
- 在告警工作台对每个实际活动路由执行`POST /api/v1/ops/alert-routing-policies/{id}/delivery-tests`,状态必须收敛为`DELIVERED`,接收端按`test_ref`只记录一次且逻辑接收组映射正确;测试不会生成正式告警,不能替代至少一次受控正式告警演练。
- 导出活动路由、联通测试、已解决的正式演练告警和网关脱敏采集,使用`cmd/alert-receiver-conformance`生成`PASS/REAL_RECEIVER`报告;证据包内`alert_receiver_validation.coverage_complete=true`后,`REAL_ALERT_RECEIVER`才可标记`VERIFIED`。
### 2.2 必测场景
| 领域 | 场景 | 通过标准与证据 |
|---|---|---|
| 设备身份 | 首次启动、正文篡改、Nonce重放、时钟偏差、证书吊销 | 正常请求成功;异常均稳定拒绝;吊销后新请求和新通话立即失败;保存请求编号和安全审计 |
| RTC | 正常入房、错房间、错用户、过期Token、续签、网络切换 | 仅绑定的房间/用户可入;短期Token不落业务库/日志;Wi-Fi/蜂窝切换后状态可收敛 |
| 语音 | 近讲/远讲、打断、回声、静音、噪声、长时通话 | 由业务方冻结主观评分方法和采样条件;保存设备型号、音频参数、供应商任务编号和原始评测记录 |
| 供应商任务 | 启动超时、未知结果、重复/乱序回调、停止、停止后晚到终稿 | 固定任务编号;未知先查询;回调不回退终态;停止不受启动熔断影响;晚到终稿触发新提取版本 |
| 离线补偿 | 断网重连、字幕批量补交、遥测补交、录音断点续传 | 业务键幂等,无重复话轮/分片;旧遥测不覆盖新状态;补交后后台任务全部收敛 |
| 固件 | 签名验证、灰度、暂停、失败重试、A/B双向升级、写入后断电、首次启动断电、健康超时和人工回滚 | 非法签名拒绝;暂停不新增投递;灰度进度与设备回执一致;至少3台候选设备各形成4份`PASS/HARDWARE_CAPTURE`一致性报告,A→B、B→A、健康超时和人工回滚另有操作记录;缺项保持`REAL_DEVICE_FIRMWARE/PENDING` |
| 隐私 | 授权撤回、主体删除、导出、临时敏感数据提权 | 撤回后停止新增留存;删除六子系统对账;临时提权双人审批、到期拒绝、逐次访问审计 |
### 2.3 退出条件
- 至少3台候选终端完成连续通话、断网恢复和升级/回滚,未出现跨设备、跨长者或跨租户数据串用;
- 同一候选构建的真机固件证据达到3台×4结构化场景,`release-candidate-evidence-bundle-v3`中的`firmware_validation.coverage_complete=true`;模拟器报告不得计入真机覆盖;
- 使用`cmd/rtc-conformance`归档至少3台候选终端的6通精简矩阵,报告必须为`PASS/REAL_DEVICE_RTC_PROVIDER`,证据包内`real_device_rtc_validation.coverage_complete=true`;模拟供应商不得计入。
- 供应商启动、停止、回调、用量和错误码映射与接口契约一致,所有未知差异已有书面处置结论;
- 使用`cmd/agent-models-conformance`归档真实内容生成10类固定评测、Embedding六类召回/隔离、内容安全六类策略和数据条款/额度证据;报告必须为`PASS/REAL_AGENT_MODELS`,证据包内`real_agent_models_validation.coverage_complete=true`。
- 发现的问题均进入V36联调问题台账并具备严重级别、根因、修复版本和脱敏回归证据;清单全量汇总显示未关闭HIGH/CRITICAL为0;
- 真实凭据完成一次轮换,旧凭据失效且业务不中断。
- 使用`cmd/kms-rotation-conformance`归档同一候选构建的云提供器、工作负载身份、动态读取和滚动重启两类轮换;报告必须为`PASS/REAL_KMS_HSM`,证据包内`kms_rotation_validation.coverage_complete=true`。
- 以相同候选构建重新生成验收快照并归档,六项技术门禁均通过;若候选构建变化,原快照作废并重新执行受影响场景。
## 3. 家庭试点
### 3.1 进入条件
- 法务批准知情同意、隐私说明、录音/字幕/故事/记忆分项授权、退出与删除流程;
- 试点运营、客服、SRE和安全值班表已发布,告警接收器和工单系统可用;
- 每个家庭有明确设备、长者、成员和授权边界,初始配置版本及灰度范围已冻结;
- 已生成`PILOT`验收快照,范围与本次试点客户组织/设备组一致,方舟和RTC等实际依赖不得从必需列表中省略;
- 备份恢复、供应商故障、固件暂停/回滚和隐私删除演练通过。
### 3.2 试点节奏
1. 内部员工家庭小范围验证,确认安装、网络、音频、授权和客服流程;
2. 少量外部家庭灰度,按客户组织/设备组限制并发影响,逐日评审告警、修订率、失败原因和成本;
3. 扩大前召开门禁评审,仅对新通话发布新配置,任何异常可回滚到上一已发布版本;
4. 试点结束执行授权盘点、导出/删除抽查、设备回收或转正式登记和问题复盘。
### 3.3 试点证据
- 每日:由`POST /api/v1/ops/diagnostics/pilot-daily-snapshots`按约定业务时区生成并归档设备在线、通话状态分布、供应商失败、上传积压、告警和费用快照;日报编号、日期、时区和复核人写入试点台账,异常转入告警或联调问题闭环;
- 每周:由`POST /api/v1/ops/diagnostics/pilot-weekly-snapshots`按周一开始的业务自然周生成并归档人工修订率、故事/记忆确认、隐私请求、固件分布和配置版本差异;平台没有投诉权威表,必须另附同周期客服或CRM脱敏投诉证据,`is_complete=false`的周中快照不得替代完整周报;
- 个案:请求编号、设备/通话公开编号、供应商任务编号、配置版本、处置时间线和结果;
- 退出:每个试点家庭的授权、数据保留、设备归属和待删除资源确认单。
## 4. 生产发布门禁
### 4.1 技术门禁
- CI在远程仓库实际通过,并用`cmd/ci-supply-chain-conformance`绑定完整提交、远程运行、14项检查、后端/Web镜像摘要及源码/双镜像三份CycloneDX SBOM;报告必须为`PASS/REMOTE_CI_SUPPLY_CHAIN`,本地工具链报告不得计入;
- 生产等价容量测试达到业务方冻结的RPS、并发、时延和持续时间,数据库/Redis/对象存储无不可接受饱和;
- PostgreSQL备份恢复、Redis丢失重建、API/Callbacks/Worker滚动重启、供应商停机与恢复演练通过;
- 使用`cmd/recovery-conformance`归档同一候选的四类演练,报告必须为`PASS/PRODUCTION_EQUIVALENT`,证据包内`production_recovery_validation.coverage_complete=true`;本地Compose报告不得计入。
- 使用`cmd/infrastructure-conformance`归档同一候选的七类基础设施和规定控制项,报告必须为`PASS/PRODUCTION_INFRASTRUCTURE`,证据包内`production_infrastructure_validation.coverage_complete=true`;本地可达性和静态清单不得计入。
- 云KMS/HSM轮换、证书到期告警、外部基础设施探针和真实告警接收器均有实测证据;
- 最近两个Chrome/Edge和macOS最近两个Safari版本通过关键流程;
- 使用`cmd/safari-conformance`归档同一候选在真实Safari `CURRENT/PREVIOUS`、两视口和六流程的24项结果;报告必须为`PASS/REAL_SAFARI`,证据包内`safari_compatibility_validation.coverage_complete=true`。
- 核心模块覆盖率和关键分支覆盖率达到需求规定门槛,当前本地未达标项必须在发布前关闭或由风险负责人书面接受。
- 已使用生产候选镜像摘要生成`PRODUCTION_RELEASE`验收快照;运行版本必须等于候选版本且包含提交号和构建时间,六项技术门禁全部通过。
- 使用`cmd/release-evidence`为同一候选版本、镜像摘要和源提交生成最终证据包;十类证据索引不得存在`PENDING`。出现`WAIVED`时必须附有权责任人的书面风险接受,包状态只能进入带豁免的发布评审,不能自动视为批准;八类不可豁免门禁不得使用`WAIVED`。
### 4.2 业务与合规门禁
- 产品、硬件、Agent、SRE、安全、法务和试点运营共同签署验收结论;
- 供应商合同明确数据地域、训练使用、日志/录音留存、删除时限、SLA和事件通报;
- 隐私访问、导出、删除、授权撤回、临时提权和审计留存抽查通过;
- 价格版本、额度策略、告警路由、固件目标和运行配置均完成另一人审批;
- 发布公告、客服话术、回滚条件、状态页和事故联系人准备完成。
### 4.3 发布与回滚
生产采用客户组织/设备组小比例灰度,先验证身份、通话、供应商、上传、费用和告警,再逐级扩大。每一级保存开始/结束时间、版本、范围、观测结果和审批人。出现跨租户、未授权敏感数据访问、无法停止的供应商任务、持续回调验签失败、隐私删除不可对账或高严重度安全事件时立即停止扩量并回滚;历史通话继续使用其冻结配置解释,不重写历史版本。
## 5. 最终签署表
| 门禁 | 负责人 | 证据位置 | 结论 | 日期 |
|---|---|---|---|---|
| 真机与RTC/Agent供应商联调 | 设备/Agent负责人 | 待填写 | 待执行 | — |
| 生产等价容量与恢复 | SRE | 待填写 | 待执行 | — |
| 安全、KMS/HSM与供应链 | 安全负责人 | 待填写 | 待执行 | — |
| 隐私、合同与试点授权 | 法务/业务负责人 | 待填写 | 待执行 | — |
| 浏览器与运营工作台 | QA | 待填写 | Safari待执行 | — |
| 核心覆盖率与发布风险 | 研发负责人 | `coverage.integration.out`及CI | 当前未通过 | 2026-08-23 |
| 生产灰度与回滚批准 | 发布经理 | 待填写 | 待执行 | — |