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

126 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 真机、真实供应商、试点与生产发布外部验收清单
> 用途:把本地已验证能力与必须由业务方、硬件方、供应商和生产环境共同完成的验收明确分开。
> 原则:前一阶段退出条件未满足,不进入下一阶段;所有证据使用生产候选版本号、构建摘要、配置版本和请求关联编号归档。
## 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`验收快照;运行版本必须等于候选版本且包含提交号和构建时间,八项技术门禁全部通过,其中生产基础设施门禁必须证明生产部署模式、已验证异地备份、真实外部告警配置和Mock服务退出。
- 使用`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 |
| 生产灰度与回滚批准 | 发布经理 | 待填写 | 待执行 | — |