Files
story/docs/development-status.md
T

260 lines
99 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.
# 开发状态与门禁记录
> 更新日期:2026-08-26
> 当前接口契约版本:0.64.0
> 当前主里程碑:M8目标环境联调、试点与上线验收(外部条件待提供)
## 阶段状态
| 阶段 | 状态 | 已取得的证据 | 尚未完成 |
|---|---|---|---|
| 第一阶段:项目准备与基线冻结 | 本地研发基线完成 | `project-baseline.md`、ADR-0001、需求和技术栈已对应 | 真实硬件、供应商、OIDC、云资源和法务资料仍需业务方提供与确认 |
| 第二阶段:工程框架与环境搭建 | 核心工程完成 | 三个Go进程、React Web、OpenAPI、两版迁移、Compose、镜像构建、健康冒烟和本地检查均通过 | 远程Git地址、实际CI运行、dev集群持续部署和密钥扫描平台待外部环境确定 |
| 第三阶段:公共基础能力建设 | 已完成 | OIDC、租户隔离、权限、事务审计、幂等、outbox、OpenTelemetry、Prometheus指标、网络/用户/租户/设备分层限流、供应商启动容量保护、签名游标和ETag均已实现并通过测试;本地专项容量门禁已覆盖核心入口 | 参数和容量余量仍需在生产等价环境复测 |
| 第四阶段:端到端语音最小闭环 | 本地模拟闭环完成 | 设备身份、`bootstrap/config`、创建、三种语音模式冻结与供应商模板选择、激活、启动、心跳、停止、终稿补传、批量遥测、录音直传能力、命令结果、签名回调、断网重连、重复/乱序保护和后台异常回收均已完成 | 真实硬件、火山RTC和豆包账号联调需要业务方提供外部参数 |
| 第五阶段:SaaS核心业务开发 | 本地业务闭环完成 | 已完成家庭成员邀请与角色协作、长者、稳定事实、五类分项授权、设备读取/配置/绑定、可靠命令、签名固件灰度/暂停/回滚和逐设备升级进度、通话查询、双轨录音状态/授权/播放下载的数据库、服务、HTTP契约与React工作台;服务端隔离、ETag、审计、纵向烟测及Chrome/Edge兼容检查均通过 | 固件生产签名设施、macOS Safari和类生产容量仍待外部环境验证 |
| 第六阶段:Agent内容与记忆闭环 | 本地开发闭环完成,生产模型协议已接入 | 最终话轮、可切换本地/火山方舟内容生成器与Embedding、事务外模型调用、摘要、开放话题、故事/事实候选、人工版本审核、授权门禁、已确认记忆、索引失效、固定边界召回及React审核页面均已实现;端到端烟测通过 | 真实方舟API Key、内容效果与召回质量验收、模型评测和真实内容安全策略待完成 |
| 第七阶段:生产加固 | 本地证据持续收敛 | 记忆可靠删除、隐私访问/导出/删除、运营配置灰度、用量费用额度、告警处置闭环、可重试HMAC告警Webhook及不污染正式告警的接收器联通测试、三类Grafana仪表盘、证书到期监测、OIDC/方舟/RTC外部基础设施探针、本地密钥轮换、生产配置拒绝启动门禁、全部本地专项容量、隔离恢复、供应商故障、安全扫描及Chrome/Edge兼容均通过;主要业务核心包已达到70%覆盖率,供应商客户端达到关键分支85%目标 | 全仓覆盖率及HTTP公共层仍低于需求目标;真实告警网关和值班组映射、生产等价容量、云密钥托管和Safari仍待完成 |
| 第八阶段:联调试点与上线 | 本地准备完成,外部联调待执行 | 外部依赖预检、联调问题门禁、候选验收快照、阻断告警定位、接收器联通测试、内容安全TLS预检和按业务时区生成的试点日/周报均已形成可执行入口;本地真实OIDC、Worker、HMAC验签接收、六项技术门禁及日/周报下载通过 | 远程CI、真实投诉证据、告警网关和值班组映射、真实供应商/真机联调、家庭试点、预生产演练和生产发布 |
## 本轮验证记录
| 检查项 | 结果 |
|---|---|
| Go格式、`go vet`和单元测试 | 通过 |
| OpenAPI生成React类型 | 通过 |
| TypeScript类型检查和Vite生产构建 | 通过 |
| npm依赖审计 | 0个已知漏洞 |
| 当前轻量功能验收 | Web、API、Callbacks、Worker和模拟供应商入口均返回200;owner/editor/outsider三类OIDC账号映射与权限正确;完整语音状态链、终稿/内容/记忆闭环及家庭—长者—事实—授权SaaS操作链均通过,合成数据已清理 |
| 角色化工作台导航 | 登录后由统一业务导航按需挂载家庭业务、运行配置、费用额度、告警处置和联调诊断;普通客户账号仅显示家庭业务,运营账号按角色显示运营入口,避免五个大型页面同时请求和无权限空页面;生产构建、容器更新及Web/API/Callbacks/Worker就绪检查通过 |
| 登录会话续期 | Web已启用OIDC访问令牌提前60秒自动续期;续期成功由用户加载事件刷新服务端权限快照,续期失败或令牌过期时立即隐藏业务工作台并提示重新登录,避免继续展示过期权限和连续401;生产构建及容器资源生效检查通过 |
| 页面请求超时与取消 | 所有健康、查询和写操作统一设置15秒请求超时,页面切换或组件卸载仍可主动取消;超时显示稳定中文提示并释放按钮忙碌状态,避免依赖异常时无限等待和重复提交;生产构建、Web容器资源及API就绪检查通过 |
| Web静态交付策略 | 哈希JS/CSS资源返回一年缓存,`index.html`返回`no-cache`以便及时加载新版本;网页资源增加CSP、`DENY`防嵌套、`nosniff`、来源和摄像头/定位/麦克风权限策略,API代理保持原有响应头;Compose容器内`nginx -t`、Web反向代理和API直连就绪检查均通过 |
| Web运行时环境配置 | Web容器启动时根据`WEB_OIDC_AUTHORITY`和`WEB_OIDC_CLIENT_ID`生成不缓存的`runtime-config.js`,本地保留安全默认值;同一镜像可在dev/preprod/prod覆盖公开OIDC配置,无需修改源码或重新构建,HTTPS OIDC和对象存储已纳入CSP;自定义值和Compose默认值均完成容器内生成验证 |
| 后续验证策略 | 保留身份、权限、通话状态、删除、供应商回调等高风险门禁;停止单纯为覆盖率补低价值测试,功能变更后只运行相关包、主链冒烟及一次发布前全量检查 |
| 轻量功能就绪脚本 | `scripts/check-functional.ps1`固定检查九个必要服务、五个HTTP就绪/存活端点、API与Worker依赖指标、Outbox积压和近期错误日志;日常开发默认执行该脚本及变更模块定向测试,`scripts/check.ps1`仅用于发布候选和CI全量门禁 |
| 录音上传队列可视化 | 终端心跳和批量遥测均可上报待上传数、失败数、最近失败码和失败时间;设备影子接口返回脱敏最近错误,家庭端设备卡片显示无积压、待上传或失败状态及原因。OpenAPI 0.31.0类型生成、相关Go包定向测试、TypeScript检查和生产构建均通过 |
| 联调握手阶段耗时 | 诊断查询从通话权威创建时间和状态历史计算房间资料签发、设备入房确认、智能体启动、智能体停止和全程耗时;缺失或时间倒置的阶段不伪造数值。OpenAPI 0.32.0与React联调卡片同步展示,固定时间数据库集成用例验证250毫秒和2000毫秒阶段结果 |
| 短期凭证时间元数据 | V28只保存短期入房凭证签发时间和过期时间,不保存凭证正文;创建通话按实际Token TTL写入,联调查询和页面展示两个时间点。数据库约束保证过期晚于签发,OpenAPI 0.33.0不暴露完整凭证 |
| 短期凭证迁移验证 | V28正向升级、单版本回退至`27|false`及重新升级均通过;回退后两个字段为0个,重升后为2个,过期不晚于签发的异常记录为0,最终数据库为`28|false` |
| 心跳短期凭证续签 | 设备心跳上报当前凭证过期时间;进入续签窗口后,服务端原子轮换时间元数据并返回`renew_rtc_credential`及新的房间绑定短期凭证。响应丢失时旧过期时间会触发同一确定性凭证重放;签名失败会回滚心跳序号和时间元数据。OpenAPI 0.34.0、模拟终端和本地冒烟请求已同步 |
| 通话历史筛选与分页 | 家庭端通话记录现可按长者、八种通话状态、三种语音处理方式及起止日期组合筛选;首批加载20条,使用服务端签发的HMAC游标继续加载并在页面端去重,不拼接或解析游标。筛选变化会清理不再匹配的详情;SSE实时状态刷新只更新列表和业务数据,不再把用户正在查看的通话详情清空。前端类型检查、生产构建和容器运行检查按轻量策略执行。 |
| 首次创建家庭 | 家庭工作台补齐后端既有`POST /api/v1/households`的网页入口;无家庭账号可选择自己已有的客户组织并创建第一个家庭,创建事务同步建立所有者成员关系,页面随后重新读取服务端家庭清单并自动选中新家庭。已有家庭账号也可从折叠入口新增家庭,输入最长200字符且不接受空白名称;真实本地OIDC正向请求已验证创建响应、所有者角色和列表可见性,临时家庭及审计夹具随后按公开编号清理为0。 |
| 长者背景进入新通话 | OpenAPI 0.35.0明确背景、兴趣、交流目标、节奏和优先话题五类白名单字段;家庭端创建和强ETag修订均可维护这些资料。创建通话时按档案版本读取并冻结白名单上下文,内部备注和设备技术目标不会进入语音提示;Worker向供应商启动时使用同一冻结文本,提示明确背景资料不是可执行指令。真实PostgreSQL定向用例验证背景、目标、兴趣、节奏、话题及非白名单排除;真实OIDC HTTP验证创建后以`If-Match: "v1"`修订为v2,临时档案和审计夹具清理为0,运行Web容器已包含创建与修订界面。 |
| 首次通话就绪清单 | OpenAPI 0.36.0新增按长者读取的服务端就绪检查,依据当前档案、授权快照、有效绑定、设备注册/固件上报、配置版本和最近联系事实给出阻断项与提醒项;家庭工作台直接展示清单并跳转到档案授权或设备修复入口。额度、生产路由和并发通话只在真正创建通话时原子校验,页面明确不把瞬时结果误报为保证。按轻量策略仅执行该读取接口的真实PostgreSQL定向用例、TypeScript检查、生产构建及一次功能就绪检查。 |
| 故事来源跳转 | 故事审核详情使用服务端返回的稳定`conversation_id`提供“查看完整原始通话”入口;跳转后直接读取该通话详情、完整最终话轮、摘要、用量和当前用户可访问的录音状态,审核人员无需根据标题或时间猜测来源。变更只涉及React交互,按轻量策略执行TypeScript检查、生产构建和运行容器资源检查。 |
| 最低固件版本门禁 | V29为设备新增独立`minimum_firmware_version`,不再把`minimum_security_version`安全基线标识误作固件版本。设备引导明确返回兼容结果;创建通话在任何房间或供应商任务产生前按同一规则拒绝不兼容设备并返回HTTP 426及`FIRMWARE_UPDATE_REQUIRED`;家庭就绪清单和设备卡片同步显示策略。SemVer按标准顺序比较,非SemVer厂商版本仅允许精确匹配。V29单版本回退/重升、版本比较、设备引导、通话门禁、就绪查询和前端构建均按定向策略通过。 |
| 模拟录音删除闭环 | 模拟终端`media`场景在对象直传后轮询云端批次,只有分片进入`VERIFIED`且到达`local_delete_after`才释放内存副本并提交`DELETED`回执;校验失败、超时和超过等待窗口均给出明确结果,不删除`SIM_MEDIA_FILE`源文件。`MEDIA_LOCAL_DELETE_GRACE`默认1小时、本地Compose为1秒,便于轻量联调而不改变生产安全默认值。 |
| 联调问题清单 | OpenAPI 0.38.0和V30新增客户组织隔离的问题清单,按需求P0282保存问题现象、设备/通话/请求编号、发生时间、责任方、解决结果和回归结论。创建使用幂等键,维护使用强ETag;已解决状态必须填写解决结果,已验证或已关闭还必须填写回归结论。运营诊断工作台支持登记、筛选、接手、解决、回归、关闭和重新打开,记录不复制字幕或录音正文。 |
| 背景资料准备失败闭环 | OpenAPI 0.39.0和V31落实需求P0285:SaaS授权、固件、额度和路由校验通过后,若Agent背景白名单资料存在不可解析类型,平台仍在同一事务内保存`FAILED/context_preparation_failed`通话与失败快照,不创建RTC任务、不冻结用量预算、不投递启动事件。设备得到不可自动重试的HTTP 422及通话编号;同一幂等键重放同一结果。家庭通话详情和运营诊断工作台展示相同稳定失败码。按低强度策略仅执行背景字段解析与HTTP映射单测、V31迁移、前端类型/构建和一次真实HMAC+OIDC纵向烟测,夹具已恢复清理。 |
| 活动通话授权撤回停止 | OpenAPI 0.40.0落实需求P0287:撤回活动通话冻结快照正在使用的字幕、原录音、故事整理或个性化记忆授权时,SaaS撤回事务同步写入`STOPPING`状态、状态历史、脱敏原因和唯一`conversation.agent_stop_requested`可靠待办;预留房间尚未启动Agent时直接过期。Worker按固定供应商任务完成停止,设备心跳或遥测从PostgreSQL权威状态取得停止动作;家庭分享撤回不打断语音。按轻量策略验证相关Go包、OpenAPI类型、前端构建和一次真实OIDC+设备HMAC+模拟供应商纵向链路。 |
| 设备v2兼容与终端媒体不变量 | OpenAPI 0.41.0和V32落实P0280/P0281:接口变更说明与契约版本同步,CI比较目标分支并拒绝破坏性变化;同一v2内只用可选能力位启用新动作,不按固件版本或User-Agent猜测。`rtc_credential_renewal`在通话创建时冻结,旧终端省略后不收到未知续签动作;`engine_mode`只供云端诊断、成本和记录,模拟终端不解析、不据此改变采集或播放。按低强度策略只验证契约门禁、相关Go包、V32单版回退/重升、前端契约构建和一次轻量运行就绪。 |
| 智能体启动失败设备收敛 | OpenAPI 0.42.0落实P0062:设备确认入房后通过独立只读接口取得权威状态与`wait/continue/leave_room`动作;供应商永久拒绝启动时,Worker同一事务写入`FAILED/provider_start_rejected`、RTC失败、状态历史和系统审计并结束可靠待办,异步失败沿用`provider_start_failed`。模拟终端不再用新幂等键重复激活,而是在`leave_room`时携稳定失败码退出。该批次复用既有表结构,无需新增迁移。 |
| Agent固定评测与发布证据 | OpenAPI 0.43.0与V33落实P0252:新增版本化固定评测集、模拟供应商脱敏观测样例、SaaS证据采集器、评测执行器和受控登记命令,强制覆盖正常闲聊、长停顿、重复表达、姓名日期歧义、冲突事实、情绪话题、用户打断、网络波动、记忆召回和敏感信息十类场景。采集器使用OIDC权限读取每个用例的独立通话及最终话轮,自动计算完成状态、首答时延和最长回答,不复制字幕正文;称呼、记忆、虚构、来源和敏感处理必须由显式脱敏评分卡给出。登记前使用评测集和观测重新计算完整报告,再复核SHA-256和登记正文,为配置版本与报告生成确定性幂等键;任一输入单独篡改均拒绝发送,FAILED报告必须显式允许且不能满足发布门禁。服务端区分`GENERIC`与`AGENT_QUALITY_V1`,标准证据只能登记到Agent组合并校验报告元数据、十个以上用例、计数、全部质量指标及结论一致性;Agent组合发布仅接受标准`PASSED`,通用手工证据不能绕过门禁。模拟基线10/10通过;真实账号质量仍列为外部待验。 |
| Agent质量证据迁移验证 | V33正向升级、单版本回退至`32|false`及重新升级均通过;回退后`evidence_type`字段不存在,重升后字段和枚举约束恢复,最终数据库为`33|false`。纵向验证确认通用`PASSED`发布返回409,标准证据首次登记201、完全重放200且仅一条记录,随后Agent组合发布成功,临时配置残留为0。 |
| Agent组合组件引用门禁 | OpenAPI 0.44.0收紧P0214/P0254:四个组件字段必须是UUID,并在当前客户组织内分别指向已发布过的`PERSONA`、`VOICE`、`MODEL`和`ROUTING`不可变版本;提交审批保存组件校验快照,发布及回滚再次复核。错误类型、不存在、跨客户、草稿或待审批组件不能形成可发布组合;已被新版本替代的`RETIRED`组件仍可用于可追溯回滚。标准评测登记同时绑定目标组合编号和其`model_version_id`,另一组合或另一模型报告不能误用。真实OIDC纵向验证错误组件类型、错误组合绑定和错误模型绑定均返回400,正确证据首次201、重放200,组件快照4项并成功发布;临时配置残留为0。该批次不新增迁移。 |
| Agent组合运行时生效 | OpenAPI 0.45.0完成P0212/P0214/P0240/P0254的运行时交接:新通话按“试验对象 > 设备组 > 客户组织”优先命中`default-agent-bundle`投放,从组合引用的已发布或已退役路由版本取得语音模式,并冻结组合公开编号;未命中组合时兼容旧`default-agent-routing`。Worker按冻结组合读取同租户、正确类型的人设、音色和模型组件,把四个组件版本、系统提示、表达风格、音色资源引用和模型资源引用交给供应商适配器。真实PostgreSQL定向用例已覆盖选择、冻结、`cascade`生效和完整启动参数传递;无数据库迁移。 |
| 自定义Agent版本族投放 | OpenAPI 0.46.0修正运营发布到运行时选择的隐式键名依赖:`config_key`仅标识不可变版本族,运行时根据投放所绑定版本的`AGENT_BUNDLE`类型选择组合,不再要求键名必须为`default-agent-bundle`;未命中组合时同样按类型选择直接`ROUTING`投放作为兼容路径。范围仍按“试验对象 > 设备组 > 客户组织”,同范围按最近激活时间确定生效项。真实PostgreSQL用例使用自定义版本族键验证组合冻结、`cascade`和供应商参数传递;无迁移、无设备契约变化。 |
| Agent组合结构化创建 | 运营页面不再要求手工填写四个组件UUID和组合JSON;按当前客户组织列出已发布或已退役的人设、音色、模型和路由不可变版本,优先自动选择最近发布项,明确标记退役版本并在缺少任一类型时禁用创建。切换客户组织会清理未提交表单,避免跨客户残留选择;服务端提交与发布门禁保持最终权威。该批次仅涉及React交互和文档,不改变接口或数据库。 |
| 配置投放暂停与恢复 | OpenAPI 0.47.0与V34补齐运行配置投放止血能力:审批员/管理员可使用强`If-Match`暂停活动投放或恢复尚未被替代的暂停投放;暂停只阻止后续新通话命中,已创建通话继续使用冻结配置。恢复前复核配置仍为已发布、同键同范围无其他活动投放;新版本同时结束同范围活动或暂停旧投放,防止旧灰度复活。运营台账显示活动/暂停状态和行版本并提供对应操作。V34单版回退、重升、真实PostgreSQL服务状态机及HTTP纵向用例均通过;未修改设备端契约。 |
| 外部依赖预检台账 | OpenAPI 0.48.0与V35把API/Worker周期探针结果写入平台级状态台账:记录进程、依赖、可用状态、检查时间、最近成功/失败、耗时、探针周期、连续失败次数和有限错误码,不保存端点、凭据或原始错误。进程启动会清理本进程已经停用的旧探针,页面超过三倍周期未更新时标记“结果过期”,避免把已停止进程的历史成功误作当前可用。联调诊断工作台向全部运营角色提供只读预检卡片;本地OIDC真实探针、V35回退重升、失败累计恢复和真实浏览器查询按轻量策略验证。 |
| 联调问题验收证据门禁 | OpenAPI 0.49.0与V36在既有问题台账增加LOW/MEDIUM/HIGH/CRITICAL严重级别、根因、修复版本和脱敏回归证据;已解决、已验证状态分别执行必填门禁。清单接口基于当前客户组织全量记录汇总未关闭HIGH/CRITICAL,不受最近100条展示上限影响;诊断工作台展示严重问题、高优先问题和发布阻断状态。V36单版回退/重升、真实PostgreSQL状态机、真实OIDC HTTP闭环、Chrome页面及测试残留清理均按轻量策略通过,最终数据库`36|false`。 |
| 发布候选验收快照 | OpenAPI 0.50.0新增运营侧可下载技术预检快照,不新增迁移。快照在幂等审计事务中冻结候选版本/镜像摘要、运行构建、数据库迁移、所选必需外部探针、联调问题、租户及平台级Outbox和未解决HIGH/CRITICAL告警,计算六项独立门禁与总结果;实验室允许开发构建,预发布/生产要求运行版本与候选一致且构建元数据完整。输出不含探针端点、凭据、原始错误或业务正文,并固定声明不替代真机、供应商、灰度和发布审批。真实PostgreSQL定向用例、真实OIDC HTTP创建/重放/跨租户拒绝、Chrome下载解析与轻量功能就绪检查均通过,夹具残留为0;当前本地快照如实被3条既有HIGH中间态告警阻断,需按告警处置流程复核后关闭,未被测试脚本伪造为整体可发布。 |
| 验收快照阻断定位 | OpenAPI 0.51.0为技术验收快照增加最多100条阻断告警的公开编号、规则、级别、状态、关联资源及存在性证据,数量截断显式标记;不返回告警正文,也不因关联资源`MISSING`自动关闭。诊断页面在下载后直接展示六项门禁和阻断项,切换客户组织会清除旧结果。真实PostgreSQL定向用例用缺失合成通话验证`MISSING`关键失败分支;真实OIDC/Chrome先验证3条阻断定位,再确认其引用的合成通话、RTC任务和可靠任务均不存在,通过强ETag告警接口保留时间线并审计关闭,重新生成快照后六项门禁全部通过。无阻断时`blocking_items`固定返回`[]`而非`null`,下载夹具残留为0。 |
| SSE事件刷新合并 | 家庭工作台不再让每条SSE事件分别触发成员、长者、授权、内容、设备和固件整套查询;事件刷新按2秒最小间隔合并,人工业务操作仍立即刷新,410过期游标也复用同一合并队列。真实OIDC Chrome连接中分散注入8条最小事件,形成5批、85个业务响应,0个HTTP失败/429,页面无错误,事件夹具残留0。 |
| 告警Webhook通知 | 新告警与超时升级在告警事务内生成稳定去重Outbox任务;Worker支持HMAC-SHA256签名、2xx确认、网络/超时/408/425/429/5xx重试和永久4xx死信;空地址安全关闭。适配器、配置、真实PostgreSQL告警事务、Worker受控重放和四个应用就绪端点已完成轻量验证;真实网关仍需外部参数 |
| Docker Compose配置解析 | 通过 |
| 后端和Web容器镜像构建 | 通过 |
| 空数据库迁移 | 成功到版本2,`dirty=false` |
| PostgreSQL扩展 | `pgcrypto`、`vector`已启用 |
| API、Callbacks和Worker就绪检查 | 均返回HTTP 200,PostgreSQL与Redis为`up`;三个命令入口均已抽取可测试装配函数,集成用例验证服务名、上下文和启动错误透传,三个命令包覆盖率均由0%提升到20% |
| 交付与验收命令工具 | 固件签名工具已验证SHA-256、Manifest、Ed25519正向验签和篡改拒绝;SSE工具已验证Bearer、事件游标、`Last-Event-ID`重连、非200和取消;模拟终端已验证请求摘要/签名头、幂等键、WAV头和错误响应;模拟供应商已验证配置拒绝及随机端口优雅启停,四个命令包覆盖率为33.3%/57.7%/27.9%/67.7% |
| Web、MinIO和Keycloak访问 | 均返回HTTP 200 |
| 数据库迁移 | 成功到版本4,`dirty=false` |
| OIDC真实签名令牌 | `owner/editor/outsider`均通过签名、签发方、使用对象和有效期验证 |
| 未登录和伪造令牌 | 均返回HTTP 401及稳定错误码 |
| 客户组织隔离和角色权限 | 跨租户、查看者管理和家庭角色隐式录音访问全部被拒绝 |
| 当前账号与权限快照 | `/api/v1/me`已覆盖未认证401、所有者账号200、未建档账号403及数据库故障500;账号、角色与家庭能力快照响应新增`Cache-Control: no-store`,避免认证态权限信息被中间缓存 |
| 幂等执行 | 重放返回原结果;请求摘要冲突被拒绝;5个并发请求只执行1次 |
| 事务审计 | 业务回滚时审计同步回滚,业务提交时同步提交 |
| outbox可靠待办 | 去重、正文冲突、领取、完成和死信测试通过;容器Worker实测完成事件 |
| 核心模块集成覆盖率 | 身份85.5%、幂等75.6%、审计72.7%、outbox75.5% |
| 接口治理单元测试 | ETag并发控制100%、统一JSON响应封装100%、签名游标78.1%;HTTP公共层当前整体56.8% |
| Redis限流集成测试 | 突发限额、拒绝和令牌恢复通过,覆盖率81.2% |
| 可观测性容器烟测 | 三个服务就绪;Prometheus三个target均为`up=1`;Collector收到Span;日志包含trace/span编号 |
| Worker积压指标 | pending、processing、dead三种状态均可抓取 |
| 设备与通话迁移 | 主库到版本5且`dirty=false`;临时空库完成1—5全量升级、版本5回退及重新升级 |
| 通话状态机 | 主路径、准备失败、预留过期、启动失败、供应商同步/异步启动与停止、未知启动对账、主动结束、运行中失败、重复事件和终态防回退测试通过;供应商故障进入停止状态时允许空设备停止原因并使用受控原因继续收口 |
| 模拟设备夹具 | 合成设备、长者、当前绑定、设备影子和测试授权可重复初始化 |
| 设备身份与租户隔离 | 签名正文篡改、过期、重放、吊销和依赖故障分支有测试;跨租户配置查询被拒绝 |
| 设备启动纵向烟测 | Compose模拟设备使用真实HMAC和Redis nonce访问`bootstrap/config`均返回200,设备报告写入PostgreSQL |
| 设备接口契约 | OpenAPI 0.7.0可生成React类型;创建、激活、心跳、停止及回调契约均已冻结 |
| 通话创建集成测试 | 同键重放只创建1条通话、2条状态历史、1次审计和1个outbox事件;不同正文冲突;数据库不保存完整短期Token |
| 通话创建HTTP烟测 | 真实设备签名两次请求均为201,第二次标记重放,通话编号和Token一致;状态`ROOM_ISSUED`且RTC任务仅为`ALLOCATED` |
| 通话激活集成测试 | 校验设备归属、房间/用户、预留期限和配置版本;首次激活仅创建1个固定供应商启动待办,重复激活不重复投递 |
| 模拟供应商与启动回调 | 固定任务编号幂等启动;回调先验签再解析;相同事件重放成功,不同正文冲突,过时事件不导致状态回退 |
| 通话激活HTTP纵向烟测 | 创建201、激活202、同键重放带标记;Worker调用1次;模拟供应商发送2次相同回调但仅落1条事件;最终通话和RTC任务均为`ACTIVE` |
| 激活链日志与敏感信息 | 两次回调请求均有独立请求/追踪编号;API、Callbacks、Worker和模拟供应商日志未发现设备密钥或RTC Token |
| 心跳数据库集成测试 | 严格递增序号续租;旧序号不更新租约;设备报告版本高于期望版本被拒绝;设备影子只前进不回退 |
| 心跳Redis集成测试 | Lua仅接受更大序号,同时更新通话租约与设备在线状态;乱序刷新不能覆盖较新状态 |
| 心跳HTTP纵向烟测 | 真实设备签名返回200和`continue`动作;PostgreSQL/Redis均为序号2;随后序号1安全返回且数据库租约时间不变 |
| 主动停止集成测试 | 首次停止只产生1个供应商待办和1次审计;同键重放返回原结果;重复结束回调仅落1条事件,最终状态不回退 |
| 完整通话HTTP纵向烟测 | 六段状态链`PREPARING → ROOM_ISSUED → STARTING_AGENT → ACTIVE → STOPPING → COMPLETED`通过;Start/Stop各调用1次,热租约最终释放 |
| 后台异常回收集成测试 | 预留到期自动EXPIRED;租约到期自动STOPPING;卡在启动/停止的任务按时间桶投递幂等对账;4次恢复均形成系统审计 |
| 供应商失败回调集成测试 | `STARTING_AGENT`收到签名失败事件后,通话和RTC任务均进入`FAILED`;`ACTIVE`运行中失败进入`STOPPING`并可靠调用供应商停止,重复失败回执保持幂等且保留可诊断失败码;终态不回退 |
| 后台异常回收容器烟测 | 人工将合成房间预留设为过期后,5秒扫描周期内收敛为`EXPIRED|COMPLETED`并生成1条`conversation.recovery`审计 |
| SaaS核心迁移 | 主库到版本6且`dirty=false`;临时空库完成1—6升级、版本6回退及重新升级,新增档案字段、稳定事实和分项授权表 |
| 家庭与长者服务集成测试 | 所有者创建/修改、编辑者写长者、跨租户拒绝、旧ETag冲突、事务审计及合成数据清理均通过 |
| 分项授权服务集成测试 | 同类型有效授权唯一性在长者行锁事务中保证;授权追加、重复阻止、撤回幂等、历史查询及两版不可变快照均通过 |
| SaaS接口契约 | OpenAPI 0.13.0覆盖家庭、成员协作、长者、授权、设备、通话内容、故事审核、记忆管理、隐私数据访问、私有导出和主体删除接口,可生成React类型 |
| SaaS HTTP纵向烟测 | 真实OIDC令牌完成家庭创建、403隔离、角色拒绝、412旧版本、长者创建/修改、授权/重复/两次撤回和快照计数,测试数据已清理 |
| 设备绑定迁移 | 主库到版本7且`dirty=false`;临时空库完成1—7升级、版本7回退及重新升级;绑定码仅保存SHA-256摘要 |
| 稳定事实闭环 | 模型候选与家庭事实独立保存来源、确认状态、敏感等级和版本;确认缺少来源被拒绝,旧ETag写入返回412 |
| 设备管理服务 | 家庭内列表/详情、Redis在线状态与数据库降级、设备影子读写、非敏感配置白名单、敏感字段递归拒绝和事务审计均通过 |
| 一次性设备绑定 | 跨租户403、首次绑定、完全相同目标安全重试、单设备唯一有效绑定和历史绑定保存通过;烟测后绑定及审计已清理 |
| 通话查询工作台 | 长者维度游标分页、条件过滤、脱敏详情、冻结快照摘要和六段状态历史已实现;真实OIDC烟测验证跨租户403并清理合成数据 |
| React SaaS业务页面 | 完成家庭切换、长者档案、事实登记/确认、五类授权/撤回、设备绑定、在线状态、孪生配置、通话列表/详情和只读权限交互;生产构建与容器重建通过 |
| 家庭成员协作 | 一次性邀请创建/撤销/接受、跨客户组织受邀账号映射、成员列表、角色强ETag、成员移除、所有者保护及双向所有权转移均通过集成测试和真实OIDC烟测;邀请复用失败审计已验证 |
| 内容与记忆迁移 | 主库到版本8且`dirty=false`;临时空库完成1—8全量升级、全部回退及重新升级,九张内容与记忆表完整,验证库已删除 |
| 隐私请求迁移 | 主库到版本9且`dirty=false`;独立临时空库完成1—9全量升级、`down -all`和重新升级,最终`9|false`,验证库已删除 |
| 私有导出迁移 | 主库到版本10且`dirty=false`;独立临时空库完成1—10全量升级、`down -all`和重新升级,最终`10|false`,验证库已删除 |
| 设备命令迁移 | 主库到版本11且`dirty=false`;V11已完成单版本回退及重新升级,最终`11|false` |
| 最终转写接入 | 签名回调支持最终话轮;正文只在冻结字幕授权允许时保存;按业务键去重,同键不同内容冲突;供应商事件正文不复制转写内容 |
| 终端终稿补传 | `POST /device/v2/conversations/{id}/turns:batch`已实现设备归属、状态、留存模式和当前授权校验;1—500条批量终稿按业务键原子合并,完全相同计为重复、不同内容整批409回滚;幂等重放、越权设备、禁止留存和内容再提取事件均通过HTTP单元测试及真实PostgreSQL集成测试 |
| 设备批量遥测 | V24新增设备遥测事件历史及设备影子单调序号/最近错误快照;`POST /device/v2/telemetry:batch`原子处理状态、有限错误码和命令结果,验证关联通话归属、阻止旧状态覆盖和敏感结果字段,返回配置刷新/拉取命令/停止通话动作;V24回退重升、真实PostgreSQL集成测试及签名HTTP烟测均通过并清理夹具 |
| 可运行模拟设备 | `SIM_SCENARIO`现支持启动/配置、断网后新Nonce重连、完整通话、创建/停止/字幕/遥测幂等重放、字幕补交、遥测、命令结果和授权录音直传;Compose组合场景实测最终通话/RTC均COMPLETED、Start/Stop各1次、3条话轮、1条关联遥测、开放Outbox为0,验证夹具已精确清理 |
| 可重放供应商通知样例 | 模拟供应商新增API Key保护的`POST /mock/v1/admin/replay`,对已启动任务稳定重放任务开始、最终字幕、智能体回答、被打断、用量、错误和停止七类脱敏通知,并可控制1—10次完全相同投递;样例字段、打断标志、用量结构、签名及重复投递均有单元测试 |
| 摘要与候选生成 | 默认本地确定性适配器和可配置火山方舟Chat Completions适配器均只使用长者话轮;模型网络调用位于数据库事务外,返回后短事务复核状态、授权和话轮SHA-256指纹;生产内容安全采用本地高风险前置拦截+托管HTTP策略,输入生成前与模型输出落库前双检,BLOCK/REVIEW转受控提示,外部故障安全重试且不落库;生产配置拒绝本地策略、HTTP端点和占位密钥。相关轻量测试及真实PostgreSQL组合验证通过,真实账号策略效果待验收 |
| 生产记忆Embedding | API查询与Worker索引共用可配置本地/方舟Embedding提供器,方舟协议调用`${ARK_BASE_URL}/embeddings`并请求、强校验1536维float向量;索引在事务外生成向量后短事务复核版本、状态、授权和普通敏感级别;查询向量在通话事务前生成,临时失败无记忆降级但不阻断通话;顺序幂等重放和同键冲突不重复调用Embedding。协议、维度拒绝、数据库无长锁、单次计费语义及本地主链已完成轻量验证,真实召回质量待验收 |
| 火山RTC生产适配 | API新增官方二进制正式Token生成器,按房间/用户/到期时间确定性重建且不持久化短期Token;Worker新增AK/SK签名的`StartVoiceChat/StopVoiceChat`适配器,动态覆盖AppId/RoomId/TaskId/设备与Agent用户并追加授权背景,`Result=ok`或稳定TaskId已启动均收敛为ACTIVE,限流和服务端错误可重试,生产配置拒绝本地Token与Mock协议。完成Token格式/签名、协议映射和关键错误分类轻量测试,真实入房、可选供应商事件细分和计费仍待账号联调 |
| 三种语音处理方式路由 | 通话事务从活动运营投放冻结`s2s_pure/s2s_hybrid/cascade`,StartProcessor读取冻结值并传给供应商;火山适配器支持`voice-chat-template-bundle-v1`逐模式选择,生产Worker要求三模板齐全,生产API缺少活动路由时返回503而不再静默回退。三个模板选择、缺失模板拒绝、路由缺失门禁和数据库到供应商请求传播的相关测试通过;三种真实供应商Config及音质/费用仍待账号验收 |
| 逐设备生产密钥 | 新增受控目录型设备密钥解析器,数据库只保存`device-secret://<name>`;解析器限制单层安全名称、解析后根目录约束、4KiB上限和32字节下限,每次请求读取以支持Secrets/KMS CSI原子轮换;生产API拒绝单一静态开发密钥。本地解析、隔离、短密钥拒绝和无需重启轮换测试通过,真实KMS CSI挂载和量产注入仍待外部环境 |
| 通用Secrets文件注入 | 数据库连接串、Redis、RTC AppKey、火山AK/SK/临时Token、方舟、对象存储和各类签名密钥支持`NAME_FILE`绝对路径读取;普通文件与64KiB上限校验、末尾换行处理、NUL拒绝及明文/文件双源冲突拒绝在依赖连接前执行。文件读取与冲突轻量测试通过,云KMS工作负载身份和真实CSI轮换仍待外部环境 |
| Kubernetes生产部署基线 | 新增API、Callbacks、Worker、Web的Kustomize基线和stage/prod覆盖层,独立数据库迁移镜像与Job,预创建Secret只读挂载、逐设备密钥目录、启动/存活/就绪探针、Prometheus Pod发现注解、只读根文件系统、非root、资源限额、滚动发布、拓扑分散、PDB/HPA、TLS Ingress及默认拒绝入口网络策略;清单已完成本地渲染与对象结构校验,不包含真实密钥,真实集群、Ingress、Metrics Server、CSI和外部依赖仍待环境验收 |
| 外部基础设施探针 | API周期读取并验证OIDC JWKS状态、JSON结构和非空密钥集;启用方舟的API/Worker及启用火山RTC的Worker仅执行DNS、TCP和证书校验TLS握手,不消耗模型或语音额度;结果同时进入Prometheus指标和V35脱敏预检台账,连续5分钟失败触发CRITICAL告警但不影响readiness。本地Keycloak真实探针指标及运营页面均可见,方舟/RTC目标仍待生产网络验证 |
| Secrets Store CSI部署模式 | 新增生产应用和数据库迁移CSI覆盖层,API/Callbacks/Worker按职责挂载六个同命名空间`SecretProviderClass`,不使用`subPath`,迁移Job直接从文件读取数据库连接串;提供器参数、工作负载身份、轮换版本和真实挂载仍待目标云KMS/Secret Manager环境验证。逐设备密钥可按请求读取轮换值,其他启动期密钥明确要求轮换后受控滚动重启 |
| 内容安全基线 | 故事生成前识别验证码、支付账户和高敏感医疗关键词;命中时不复制敏感正文到摘要,不生成普通故事/事实候选;规则单元测试及带银行卡号/验证码的真实提取集成测试通过,生产内容安全服务仍待接入 |
| 故事人工审核 | 查看、人工修订、确认和拒绝接口均已实现;来源必需、角色权限、强ETag、版本留痕和事务审计门禁通过端到端验证;新增真实PostgreSQL集成测试覆盖摘要来源、故事/事实读取、人工修订、旧版本冲突、来源复制、确认门禁及终态重复确认拒绝 |
| 已确认记忆与索引 | 人工确认前记忆数为0;确认且个性化记忆授权有效后才创建版本化记忆;Worker完成1536维本地开发索引;修订生成新版本并使旧索引失效;停用和授权撤回会清空向量、标记索引失效;新增集成测试验证确认生成、关键词检索、跨成员隔离、内容修订、无变化拒绝及停用索引失效 |
| 记忆可靠删除 | 删除接口先将记忆置为`PENDING_DELETE`并立即移出召回;Outbox后台把本地索引置为`DELETED`、清除所有记忆版本正文、完成删除审计;页面可提交删除并显示处理中状态;删除申请及终态幂等重放已纳入真实数据库回归 |
| 新通话记忆召回 | 通话创建使用服务端固定租户和长者边界检索;同时过滤当前授权、活动状态、当前版本、普通敏感级别、有效期和活动索引;实际记忆版本与`minimal-v2`程序版本冻结到背景快照;真实pgvector测试验证普通记忆命中、敏感记忆排除、跨长者隔离和非法limit拒绝,召回模块覆盖率81.2% |
| React内容审核页面 | 通话详情展示摘要和最终话轮;故事与记忆页展示来源、事实、记忆搜索、人工修订/确认/拒绝、记忆修订/停用/删除及索引状态;查看者审核控件禁用;TypeScript和生产构建通过 |
| 内容端到端烟测 | 重复最终转写仅落2条话轮,生成2类整理结果和1个故事候选;人工确认后索引`ACTIVE`且下一次通话冻结1个记忆版本;修订形成第2版,停用和永久删除后新通话召回均为0;删除正文和索引状态已验证;跨租户403;测试后内容残留0且Outbox无pending/processing/dead |
| 隐私数据访问闭环 | V9迁移建立请求、子任务和最小删除证明表;所有者提交、编辑者拒绝、幂等重放/冲突、Worker状态收敛、请求范围过滤和`content_included=false`均通过真实OIDC HTTP烟测 |
| 私有数据导出 | V10迁移建立导出任务;Worker按冻结范围生成JSON并写入MinIO私有桶;未签名访问403、短期URL下载、SHA-256校验、所有者/编辑者权限、幂等重放和过期删除均通过HTTP烟测;真实PostgreSQL集成测试进一步覆盖范围化制品、摘要、READY、重复处理和到期清理,不存在任务的迟到Outbox事件已修正为安全空操作 |
| 主体级隐私删除 | 精确称呼确认、活动通话409保护、受理事务立即冻结、授权撤回/记忆失效、Redis/MinIO/pgvector/供应商引用/PostgreSQL六子系统可重试对账和无正文墓碑已实现;临时主体真实OIDC烟测通过并清理 |
| 设备命令可靠链路 | V11迁移、家庭端幂等排队、设备HMAC拉取、重复投递、ACK/成功/失败回执、过期终态和Web诊断入口已实现;真实本地OIDC+设备签名烟测通过并清理;新增处理器用例覆盖终端鉴权、命令拉取、可重试依赖失败、回执参数归一化、状态冲突及结果摘要透传;设备核心包进一步覆盖命令到期、首投/重投、ACK、成功/失败终态不可变、跨设备拒绝和非法正文,覆盖率75.5% |
| 固件安全发布 | V12迁移建立受信Ed25519公钥、固件版本、灰度批次和设备分配;合法签名与摘要校验、非法签名409、暂停取消未投递命令、暂停后下载拒绝、已验证版本回滚、设备下载摘要及最终状态收敛均通过本地OIDC+HMAC+MinIO烟测并清理;新增服务与HTTP集成测试覆盖公钥登记、发布准备/确认、对象摘要校验、设备范围下载、灰度启动和暂停 |
| 固件进度与管理页 | V13迁移把分配状态细化为`ASSIGNED/DOWNLOADING/INSTALLING/CONFIRMED/FAILED/ROLLED_BACK`并保存进度和最近回执;版本/批次列表、逐设备详情、React公钥登记、制品直传、灰度、暂停和回滚已实现;25%下载、80%安装、100%确认的接口回归通过 |
| 双轨录音上传与访问 | V14迁移建立上传批次、稳定分片、批次关联、PLAY/DOWNLOAD独立授权和访问日志;设备幂等清单、15分钟单对象直传、Outbox后台大小/SHA-256/WAV PCM16容器与时长校验、延迟本地删除、5分钟播放/下载、撤销与成功/拒绝审计均通过本地OIDC+HMAC+MinIO烟测;新增真实PostgreSQL服务集成测试覆盖上传重放、Worker验证、PLAY授权、DOWNLOAD拒绝、撤销及删除回执并精确清理夹具 |
| 录音设备删除回执与管理页 | V15迁移保存本地密文删除结果、时间和错误码;过早成功回执409、失败后重试、成功幂等和云端对象状态不变均通过设备签名烟测。React通话详情支持双轨状态、PLAY/DOWNLOAD独立能力、5分钟播放/下载、按成员/用途/时限授权、有效授权列表和立即撤销 |
| Web状态事件流 | V16迁移建立15分钟最小事件续传和设备在线状态表;会话、故事、媒体、导出、隐私、指令及设备上线/离线事件已实现。Bearer认证SSE、`Last-Event-ID`恢复、活动家庭成员过滤、跨租户/过期游标410、客户端去重和自动重连均通过烟测;新增真实PostgreSQL测试覆盖起始游标、有效/过期/跨用户游标、分页、过期清理及设备离线事件,模块覆盖率86.5% |
| 具体资源分享 | V17—V18已建立分享授权、匿名口令摘要和访问日志;登录定向与匿名口令访问、单项权限、幂等重放、撤销、过期、跨租户隔离、故事共享编辑/412并发保护、React管理页和逐次审计均已实现并通过烟测;新增真实数据库集成测试覆盖登录定向转写分享、匿名令牌、错误令牌、接收人不匹配、幂等重放、撤销、故事修订/版本/撤销、匿名故事、录音试听/下载/授权撤回和成功/拒绝访问日志,模块覆盖率78.5%;HTTP层新增鉴权、UUID、幂等键、匿名口令、`If-Match`及全部分享错误映射用例 |
| 资源分享迁移与页面验收 | V18单版本回退和重新升级均成功,最终`18|false`;实际Chrome 1280×900检查资源分享配置、登录/匿名提示和有效分享区,未发现横向溢出、控制台错误或失败请求 |
| 运营身份与配置版本 | V19新增`customer/ops_viewer/ops_operator/ops_approver/ops_admin`平台角色和五类运行配置版本;草稿幂等、结构/敏感键校验、双人审批、单一发布版、旧版退役、不可变回滚、事务审计及新通话配置冻结均通过真实OIDC+设备HMAC烟测 |
| 运营配置页面 | React工作台支持客户组织选择、五类配置JSON与密钥引用、草稿、审批/发布、回滚、版本历史和相邻版本正文对比;实际Chrome 1440×1100未发现失败请求、控制台错误或横向溢出 |
| 运营配置灰度与发布门禁 | V20新增评测证据、受控资源引用、设备灰度组和投放台账;无通过评测、凭据/音色/模型引用缺失、类型错误、已撤销或核验超过180天均阻断发布;租户、试验对象、设备组范围可并存,同一目标只保留一个活动投放;新增服务及HTTP真实数据库测试覆盖草稿幂等、越权、提交ETag、创建人自批拒绝、评测创建/查询、发布门禁、双人发布、投放查询、旧投放退役、不可变回滚、资源引用和设备组的租户/版本/状态/非法输入分支,运营配置模块覆盖率74.5% |
| 运行时灰度与影响控制 | 新通话按试验对象、设备组、租户优先级选择路由,设备组使用稳定哈希百分比分桶,并以冻结该配置版本的未结束通话数执行并发影响上限;真实设备HMAC烟测验证设备组优先命中、不可变回滚和背景快照版本冻结 |
| 运营投放与资源页面 | React工作台新增资源登记/撤销、设备组创建、活动投放台账、评测证据、范围/比例/并发上限配置;实际Chrome 1440×1100整页检查无失败请求、控制台错误或横向溢出 |
| 运营灰度迁移与清理 | V20完成单版本回退和重新升级;回退后恢复V19单发布版唯一索引并移除四类V20表,重升最终`20|false`;烟测后配置、投放、评测、资源、设备组、运营审计/幂等、分享、Web事件和Outbox open/dead均为0 |
| 用量费用与额度迁移 | V21新增价格版本/费率、额度策略、通话用量、冻结费用行和预算快照六类表;单版本回退验证表已移除且版本为`20|false`,重新升级最终`21|false` |
| 价格版本与核价 | 价格草稿幂等、创建人禁止自批、另一名审批人发布、旧版本退役和费用行版本/单价冻结已实现;七类用量使用精确十进制数量和微单位金额,真实签名回调验证总费用`CNY 0.132450` |
| 用量回调幂等 | `voice_chat.usage / FINAL`先验签再校验;同一事件完全重放返回duplicate且费用仍为7条,同事件编号不同正文返回409,回调事件不复制用量明细正文 |
| 额度与通话预算 | 客户组织/设备日月费用、并发和最长时长策略已实现;创建前按账期时区检查,达到硬额度返回429 `USAGE_QUOTA_EXCEEDED`;新通话冻结策略编号、限额、时长和在途动作 |
| 费用展示与脱敏 | 运营周期汇总和家庭单通话用量接口均只返回标准化分类、数量、单位、费用和币种,不返回供应商任务/事件或内部价格编号;跨租户及非家庭成员访问返回403;新增HTTP真实数据库集成用例,覆盖价格版本创建/查询、创建人自批拒绝、双人发布、额度策略创建/查询、汇总时间参数校验及`no-store`响应 |
| 用量费用运营页面 | React页面包含费用概览、七类费率草稿、双人发布、价格台账、费用构成、客户组织/设备额度和历史策略;实际Chrome 1440×1100未发现失败请求、控制台错误或横向溢出 |
| 告警处置迁移 | V22新增版本化路由、有限时长静默、客户组织事件和不可变动作时间线四类表;活动路由和未关闭指纹使用部分唯一索引,迁移库最终为`22|false` |
| 告警自动发现与归并 | Worker扫描死信、隐私删除超时、录音上传失败、固件灰度失败、日费用额度80%和语音任务卡滞;同客户组织同指纹事务加锁归并,重复命中只增加次数并刷新摘要 |
| 告警升级与静默 | 活动路由冻结接收组、响应/升级时限和运行手册;超时追加`ESCALATED`动作;规则/分类/资源静默最长30天,静默不丢命中,撤销或到期后仍存在的信号自动`REOPENED` |
| 告警人工处置 | `ops_operator`以上角色使用强ETag完成确认、缓解和关闭;首次确认记录负责人,每一步写动作时间线和事务审计;跨租户403、旧版本412、已关闭重发新事件均有纵向烟测;新增服务及HTTP真实数据库测试覆盖路由版本替换、静默幂等/撤销、运营范围/幂等头、缺失If-Match返回428、跨账号隔离、确认—缓解—关闭、过期版本、重复终态拒绝、告警归并、静默期间保留命中、撤销后重开及取消扫描,告警模块覆盖率73.4% |
| 告警运营页面 | React工作台提供四项概览、状态队列、资源/请求/运行手册上下文、完整时间线、路由版本和静默管理;实际Chrome 1440×1200检查无失败请求、控制台错误或横向溢出 |
| 告警接收器联通测试 | OpenAPI 0.52.0新增最近50次测试查询和活动路由测试创建接口;测试复用正式Webhook的Worker、HMAC、超时和重试分类,但使用独立Outbox事件且不写`alert_incident`。本地Compose新增验签接收器;真实OIDC纵向烟测确认`PENDING → DELIVERED`、唯一接收、幂等重放和测试数据清理,真实数据库接口测试及Chrome 1440×1200页面检查通过 |
| 发布候选证据包基础闭环 | `cmd/release-evidence`初版使用`release-candidate-evidence-bundle-v2`清单:候选版本/构建摘要必须与六项门禁通过的技术快照一致,预发布/生产要求真实源提交;当时九类外部证据逐项登记`VERIFIED/PENDING/WAIVED`。`PILOT`包强制同租户、同候选版本/构建摘要、同IANA时区、一个已结束自然周的7份连续日报和1份完整周报,并保留`complaints/REQUIRED`;缺日、重复日、周中快照、跨租户/候选、时区/窗口或脱敏策略不一致均拒绝打包。当前格式已由后续真机固件门禁升级到v3和十类索引。 |
| 试点运行日报 | OpenAPI 0.55.0要求候选版本和`sha256:`不可变构建摘要后,按IANA时区自然日生成脱敏运营日报,不新增迁移或服务端正文表。日报聚合设备在线、8类通话状态、供应商失败与通知积压、上传活动与积压、告警开闭和按币种费用;自然日活动与生成时刻状态分字段表达,不做汇率换算。候选身份进入响应、幂等和最小审计,并由PILOT证据包与验收快照强制匹配。时区/DST定向单测、Go包、前端构建、真实OIDC 7日报纵向链路和Chrome下载通过,烟测数据精确清理 |
| 试点运行周报 | OpenAPI 0.55.0要求候选版本和`sha256:`不可变构建摘要后,按周一开始的七个IANA业务自然日生成脱敏周报,不新增迁移或服务端正文表。周报从审计事件和权威业务表汇总人工修订率及样本、故事确认/拒绝、正式记忆版本、隐私请求固定分布、固件版本和配置修订差异;周中快照明确标记不完整,无比例分母时显示不可计算。因平台没有投诉权威表,JSON与页面固定要求附客服/CRM证据。候选身份由PILOT证据包与验收快照及7份日报强制匹配;DST/周一/基点测试、真实OIDC周报与119文件打包、Chrome下载和缺口提示通过,烟测残留为0 |
| 生产配置门禁 | `APP_ENV=prod`时拒绝HTTP OIDC、数据库明文传输、无Redis认证、对象存储非TLS、本地模拟供应商、占位密钥和API重复签名密钥;配置单元测试覆盖默认拒绝、合规通过和重复密钥拒绝 |
| 1000活跃通话状态 | 950条健康租约保持ACTIVE;50条过期租约全部进入STOPPING;每条只形成一个停止意图,无重复任务,夹具已清理 |
| 供应商回调长稳态 | 500次/秒持续10分钟,300000次请求、0%失败、0中断、p95 8.90ms、p99 11.81ms;300000个唯一事件全部处理/忽略,100组会话/RTC任务保持ACTIVE |
| 普通API长稳态 | 固定50 RPS持续30分钟,90001次请求、0%失败、0中断、p95 3.67ms、p99 4.12ms、最大278.57ms;每次响应的PostgreSQL/Redis状态均为up |
| SSE连接容量 | 500条认证SSE全部建立并保持5秒,50条使用`Last-Event-ID`断点重连成功 |
| 媒体清单容量 | 10批×1000分片准确落库和关联;批量SQL优化后平均0.12秒、p95/最大0.16秒,API容器内存峰值15.8MiB |
| 隐私删除并发 | 100个并发受理全部成功、HTTP失败率0%、提交p95 385.15ms;11.58秒内600个子任务、100个墓碑和100个主体冻结全部对账 |
| PostgreSQL隔离恢复 | 实际`pg_dump`/`pg_restore`到随机隔离库,迁移`22|false`、66张表、190个外键和关键计数一致;本地约5.14秒,临时库/备份已清理 |
| 阿里云单机加密备份与恢复 | 目标服务器已安装每日systemd备份任务,覆盖PostgreSQL、认证Redis RDB、MinIO全部桶和暂停后的Keycloak数据目录;归档使用AES-256-CBC/PBKDF2加密、逐文件SHA-256并保留14天。首次实际归档成功,数据库从V38备份恢复到随机隔离库后`38|false|2|3|73|215`六项证据一致,归档内Redis RDB格式有效、Keycloak 3个文件一致、临时恢复库为0;同机备份尚不作为跨故障域生产恢复证据 |
| 阿里云单机健康监测 | 目标服务器已安装五分钟systemd健康检查,结构化状态覆盖HTTPS、OIDC签发地址、11个常驻容器、本机/异地备份状态与摘要、备份执行结果、三个运行timer、短期IP证书剩余时间和磁盘阈值。异地适配安装后的实际正常路径22项全部healthy;把本机备份最大年龄临时设为0秒后仅`backup_freshness`进入critical并退出1,测试目录已清理且线上容器未停止。可选Webhook仅在状态变化时发送带时间戳和HMAC-SHA256的脱敏状态;真实接收器尚未配置,因此不作为值班通知送达证据 |
| 阿里云OSS异地备份适配 | 目标服务器已按官方SHA-256安装ossutil 2.3.0,新增每日OSS同步任务、加密归档及摘要上传、远端回读复算、原子状态和健康强制门禁。隔离兼容目标验证上传/回读2个文件并得到`verified`;缺身份配置退出4并记录`failed/oss_config_missing`;设为必需但缺状态时健康检查退出1并记录`critical/status_missing`。当前实例无RAM角色、Bucket和OSS配置,正式任务保持`disabled/not_enabled`且健康状态为`not_required`,不能作为真实异地备份证据 |
| 进程与Redis恢复 | API/Callbacks/Worker重启恢复;停机期间Outbox仅执行一次;Redis 14个热状态键清空后由签名设备请求重建,PostgreSQL权威计数不变 |
| 供应商故障恢复 | V23持久化按租户/供应商的可用状态;连续临时失败暂停新启动但停止任务继续尝试;演练确认暂停后新外呼0、停止尝试2次、历史接口200、CRITICAL告警出现,恢复后全部收敛;V23单版本回退/重升通过 |
| 安全专项 | Go 1.26.6容器`govulncheck`可达漏洞0、npm高危审计0、最终镜像HIGH/CRITICAL已修复漏洞0、Gitleaks无泄漏;HTTP认证/授权/注入式输入/1MiB正文/回调签名/Nonce重放/安全头/日志过滤烟测通过 |
| 压测与告警基线 | k6固定到达率门禁覆盖50 RPS/30分钟和500回调/秒/10分钟,阈值为错误率/p95/p99;Prometheus规则覆盖服务不可用、5xx、p95、Outbox积压/死信、隐私部分失败及固件失败/停滞 |
| 浏览器兼容检查 | 实际Chrome 151和Edge 151在1440×1000、1024×900视口完成OIDC、运营工作台、认证SSE及8个SaaS页签检查;均为0横向溢出、0控制台错误、0失败请求,FCP分别124ms和116ms;Safari明确待macOS真浏览器补测 |
| 分层限流与供应商容量 | 网络、OIDC用户、客户组织和设备令牌桶已独立实施;供应商启动另有RPS/突发门禁和PostgreSQL顾问锁保护的跨Worker活动任务上限;单元及集成测试通过 |
| 供应商未知结果处理 | `UNKNOWN`启动任务先调用供应商查询;已活动则本地对账、仍启动则延迟确认,只有供应商确认404才使用原稳定任务编号重新启动;不再盲目换号重试。供应商HTTP客户端新增启动、停止、查询在成功、限流、5xx、永久错误、非法响应、网络中断和响应读取失败下的测试,包覆盖率90.4%,三类操作各90.5% |
| 后台任务重试分类 | 普通业务错误和未注册处理器立即死信;仅显式临时错误、超时、网络中断、临时供应商/对象存储/数据库错误按指数退避和随机变化重试;真实PostgreSQL测试验证永久任务为`dead`、临时任务为`pending` |
| 晚到终稿处理 | 供应商停止通知早于最终字幕时,原提取任务会等待;若终稿在通话终态后到达,则按通知摘要和最大话轮序号创建新的幂等提取版本;真实PostgreSQL顺序测试通过 |
| 证书库存与告警 | V25扩展受控资源引用支持`CERTIFICATE`及到期时间;30天/7天分级到期告警、供应商通知积压告警和真实PostgreSQL安全事件测试通过;V25单版本回退及重升最终`25|false` |
| 诊断作业恢复迁移 | V26为Outbox增加公开编号、人工重试次数、最近重试时间和操作人;V26单版本升级、回退到V25及重新升级均已通过,最终`26|false` |
| 运营敏感数据临时访问迁移 | V27建立单通话限时申请和逐次访问日志;最长4小时、两类最小能力、同申请人/通话单一开放申请、申请人禁止自批;V27升级、单版本回退到V26及重升最终`27|false` |
| 监控仪表盘 | Compose已装载Grafana 12.2.0,业务/技术/安全三个仪表盘均已发现;Prometheus对API、Callbacks、Worker三个目标均为`up` |
| 本地长期密钥轮换 | 新设备签名密钥通过环境注入生效、旧密钥401、镜像摘要不变,演练完成后原本地密钥和API服务已恢复;不宣称替代生产KMS/HSM验证 |
| 集成诊断工作台 | OpenAPI 0.34.0和React工作台支持五类精确检索、短期凭证时间元数据、握手阶段耗时、配置刷新、安全停止、状态对账、管理员设备吊销、已注册死信受控重试和脱敏JSON诊断包;活动设备被吊销时同步进入可靠停止,未知事件类型不允许人工重试;真实数据库用例覆盖精确检索、时间元数据、配置刷新、受控停止和对账 |
| 敏感数据临时提权 | React工作台和API支持单通话字幕读取/录音播放申请、另一人审批、申请人绑定、到期自动失效、原录音授权复核、5分钟播放地址及逐次成功/拒绝审计;新增HTTP真实数据库纵向用例覆盖申请、幂等重放、审批队列、另一人批准、受控字幕、短时录音地址及全部稳定错误映射,处理器覆盖率72.2%—100%,夹具已清理 |
| Web容器安全基线 | Trivy发现原Web镜像root运行和旧Nginx/Alpine高危漏洞后,已改为UID 101、8080非特权监听、Nginx 1.30.4及构建时系统补丁;配置误配和最终Web镜像HIGH/CRITICAL复扫均为0 |
| CI供应链门禁 | 工作流已加入固定版本/摘要的govulncheck、go-licenses、npm audit、前端许可证检查、Gitleaks、Trivy配置/镜像扫描、Syft CycloneDX SBOM及不可变构建元数据;新增离线一致性校验器把完整提交、远程运行、14项检查、后端/Web镜像摘要和三份SBOM绑定为不可豁免报告,本地工具链保持`external_validation_required=true`;Go 1.26.6容器漏洞扫描、Gitleaks及最新Worker/Callbacks镜像HIGH/CRITICAL扫描均为0,仍待远程托管CI固定候选运行 |
| 全仓质量门禁 | V28代码已通过既有V27全量基线,并新增OpenAPI 0.34.0类型生成和相关模块定向验证;完整发布候选仍执行`scripts/check.ps1`。主要业务核心包已达到70%,但全仓、HTTP公共层和入口装配仍低于需求目标,不能标为整体已满足 |
| 最终残留对账 | 当前数据库为`28|false`;新增设备命令、SaaS命令、告警检测、运营提权服务及HTTP纵向测试夹具残留均为0,Outbox open/processing/dead均为0且仅保留历史`completed`;既有安全基线保持不变,当前增量按轻量策略验证 |
| V14跨功能回归 | 双轨媒体上传/校验/访问审计、固件签名/拒绝/列表/暂停/回滚及升级进度、设备命令和主体隐私删除均通过;烟测后媒体、访问授权、固件记录及Outbox open/dead均为0,服务日志未发现panic、fatal或受检密钥名称 |
| 主体删除页面可用性 | 家庭工作台已把连续浏览器弹窗替换为页面内不可逆操作确认区:明确六类删除对账范围和活动通话保护,删除原因限制500字符,称呼必须与当前长者完全一致才启用提交,错误称呼即时提示,取消后清空敏感输入。父级动作返回实际成功状态,只有删除对账完整完成才关闭确认区;失败时保留输入和页面错误供复核。真实OIDC Chrome轻量检查验证错误称呼阻断、精确称呼放行、取消清理、桌面/平板无溢出、无控制台错误和非预期失败请求;检查不实际提交删除,不改变种子主体。页面里程碑同步为M8联调、试点与上线准备 |
| 记忆管理页面可用性与删除终态 | 故事与记忆页已用主详情区替换记忆编辑、启停和删除的浏览器弹窗,展示资源/正文版本、索引、来源、最近变更及完整正文;修订必须正文变化且填写原因,启停说明索引与授权影响,永久删除必须填写原因并勾选不可逆确认。`PENDING_DELETE/SUPERSEDED/DELETED`只读;服务端新增强制终态校验,直接调用PATCH也不能把删除中记忆恢复为ACTIVE。真实PostgreSQL生命周期用例证明删除中重激活返回冲突;临时记忆夹具的真实OIDC Chrome检查验证六项按钮门禁、零PATCH/DELETE请求、无溢出/控制台错误/失败请求,夹具在`finally`精确清理 |
| 设备音量配置页面可用性 | 设备管理页已移除写死的“设为60%”动作,改为0—100逐级滑块;同时展示云端期望值和设备上报值,未配置时明确标识并以60%作为首次建议值,已有相同配置时禁止重复保存。提交保留其他期望配置字段,成功后直接回显服务端递增版本;服务端新增扬声器音量整数范围校验,继续执行顶层分类白名单、敏感字段递归拒绝和强ETag并发保护。按轻量策略完成输入校验单测、设备影子真实PostgreSQL定向测试、TypeScript生产构建和真实OIDC Chrome无写入冒烟;页面无横向溢出、控制台错误或失败请求 |
| 通话详情加载与恢复可用性 | 通话列表和详情已把语音处理、保存策略及状态来源转换为家庭业务名称。每次打开详情会取消上一条未完成请求并立即清理旧内容,核心接口失败时在右侧显示错误和“重新加载”,不会继续展示上一条通话或把错误混入长者资料;仅保存字幕或完全不留存的通话不再调用录音媒体接口。临时通话夹具的真实OIDC Chrome故障注入验证首次详情请求失败、旧详情隐藏、页面内重试恢复、选中态保持和业务标签展示;除预期注入失败外无失败请求、横向溢出或控制台错误,夹具在`finally`精确清理 |
| Web登录会话失效恢复 | 所有认证API的HTTP 401统一触发页面级会话失效,不再只停留在家庭或运营子页面。客户端合并并发401,清除`sessionStorage`旧OIDC用户、卸载全部业务工作台并取消在途请求;身份区显示明确原因和“重新登录”。已保存用户过期、令牌到期及静默续期失败走相同清理流程,403和普通业务错误不会误触发退出。真实OIDC Chrome轻量检查注入一次家庭接口401,验证旧会话条目归零、业务区卸载、预期请求取消、重新认证后账号与工作台恢复,无非预期失败请求、控制台错误或横向溢出 |
| 工作台URL导航与恢复 | 家庭业务保持根地址,运行配置、费用额度、告警处置和联调诊断使用可恢复的`workspace`查询参数;点击入口写入浏览器历史,刷新、直接地址、后退和前进均恢复正确工作台。URL不授予权限,客户端等待云端账号加载后校验运营角色,无权访问或未知值回退家庭业务并规范化地址;会话重新认证后权限不变则保留原工作台。真实OIDC Chrome按人工节奏验证配置/费用切换、刷新、前进后退、未知值和告警深链,零429、失败请求、控制台错误及横向溢出 |
| 运营敏感访问申请页面可用性 | 联调诊断工作台已用页面内申请表单替换单通话敏感访问创建时的浏览器弹窗:表单固定当前通话,字幕读取强制最小能力,录音播放按需勾选,理由必填且最长500字符,有效期限定15分钟/1小时/4小时,并明确申请不等于授权、禁止录音下载。取消会清空草稿且不创建申请。OIDC回调同时安全恢复登录前站内相对路径,拒绝跨源、协议相对和回调页返回地址。真实OIDC Chrome从未登录联调深链验证全部表单门禁、取消关闭、零创建请求、零横向溢出、零控制台错误和零失败请求;临时通话夹具已精确清理 |
| 联调受控操作页面可用性 | 配置刷新、状态对账、安全停止和设备吊销已用页面内受控操作确认区替换浏览器原因/确认弹窗;确认区固定显示目标设备,通话类操作同时显示目标通话,理由必填且最长500字符。安全停止和设备吊销增加影响确认,重新检索或切换客户组织会清除旧目标,取消不发送请求。真实OIDC Chrome复用临时诊断夹具验证四项门禁、目标绑定、危险操作确认、零修改请求、零横向溢出、零控制台错误和零失败请求,夹具已精确清理;服务端角色、租户、状态、幂等和审计边界保持不变 |
| 诊断包导出与死信重试页面可用性 | 脱敏诊断包导出和死信任务受控重试已改为页面内表单。导出表单冻结打开时的中文检索字段和精确值,明确文件脱敏边界和导出审计,理由必填且最长500字符;重试表单固定任务公开编号、注册事件类型、聚合类型、尝试次数和稳定错误码,理由必填并要求确认根因或依赖已经处理。重新检索、刷新任务、切换客户组织或取消会清除相应旧草稿。真实OIDC Chrome使用临时通话和`platform.noop`死信夹具验证全部门禁、目标绑定、零导出/重试请求、零横向溢出、零控制台错误和零失败请求,夹具已精确清理 |
| 联调问题状态流转页面可用性 | 调整级别、接手处理、登记解决、登记回归、关闭问题和重新打开已统一为页面内流转编辑区。编辑区固定问题编号、当前状态、责任方、现象和ETag版本,并按动作显示不同必填字段;同级别禁止重复保存,解决要求根因/修复版本/结果,回归要求脱敏证据/结论,关闭要求完整复核确认,重新打开要求责任方。刷新、筛选、切换客户组织或取消会清除草稿,服务端If-Match并发保护保持不变。真实OIDC Chrome使用覆盖OPEN/IN_PROGRESS/RESOLVED/VERIFIED/CLOSED的五条临时问题验证六项门禁、目标版本、零PATCH、零横向溢出、零控制台错误和零失败请求,夹具已精确清理 |
| 敏感访问审批页面可用性 | 临时敏感访问的批准和拒绝已改为页面内审批区,固定展示申请编号、版本、申请人、通话、能力、到期时间和原始理由。批准依据与拒绝原因均必填且最长500字符;批准还必须确认非本人申请、单通话、最小能力、有效期及原申请人绑定,拒绝明确提示说明范围不足。刷新、切换客户组织或取消会清除审批草稿;页面隐藏本人申请的审批入口,服务端继续执行禁止自批、角色、租户、状态和到期校验。真实OIDC Chrome使用另一用户的PENDING夹具验证批准/拒绝门禁、目标绑定、零审批请求、零横向溢出、零控制台错误和零失败请求,夹具已精确清理 |
| 通用离线评测登记页面可用性 | 非Agent组合配置的通用离线评测已用配置版本内联表单替换连续浏览器弹窗,固定展示配置编号、类型、版本族、版本号和行版本。套件版本最长100字符、报告引用最长300字符且均必填;通过/失败默认不选并必须显式决定,通过还需确认报告指标支持结论及可能参与发布门禁,取消不会被误登记为失败。Agent组合仍不显示手工通用评测入口。真实OIDC Chrome使用临时ROUTING草稿验证字段/结论/二次确认门禁、零评测POST、零横向溢出、零控制台错误和零失败请求,配置及评测夹具已精确清理 |
| 资源撤销与配置投放控制页面可用性 | 资源引用撤销、配置投放暂停和恢复已统一为页面内受控操作区。资源操作固定公开编号、名称、类型、引用和行版本;投放操作固定公开编号、配置键、范围、状态、比例、并发上限和行版本。三类操作均要求最长500字符的原因及影响确认,明确资源撤销不删除外部密钥、不改写历史会话,暂停/恢复只改变后续新通话命中。切换客户组织、刷新或取消会清除草稿,服务端角色、租户、状态与If-Match门禁保持不变。真实OIDC Chrome复用一条低强度无提交冒烟验证三类目标绑定、字段/确认门禁、零PATCH、零横向溢出、零控制台错误和零失败请求,临时资源、版本及投放夹具已精确清理 |
| 价格版本审批发布页面可用性 | 价格草稿审批发布已用页面内双人审批确认区替换浏览器输入弹窗,固定展示价格版本编号、供应商、币种、费率项数、生效时间、创建人和行版本。发布依据必填且最长500字符;提交前必须确认本人不是创建人,且报价/合同、全部费率和生效时间均已复核,并明确旧版本退役但历史费用不重算。切换客户组织、刷新或取消会清除草稿,服务端角色、禁止自批、状态和If-Match门禁保持不变。真实OIDC Chrome使用另一账号创建的临时价格草稿验证目标绑定、原因/确认门禁、零发布PATCH、零横向溢出、零控制台错误和零失败请求,价格及费率夹具已精确清理 |
| 告警状态处置页面可用性 | 确认并接手、记录缓解和验证关闭已用告警详情内联处置表单替换浏览器输入弹窗,固定展示告警编号、规则、分类、级别、当前状态、命中次数和行版本。处置说明必填且最长1000字符;关闭还要求确认缓解措施、恢复指标、关联影响及遗留风险均已复核。重新筛选、切换客户组织、选择其他告警、刷新或取消会清除草稿,服务端角色、租户、状态和If-Match门禁保持不变。真实OIDC Chrome使用OPEN/ACKNOWLEDGED/MITIGATED三条临时告警验证目标绑定、字段/关闭确认门禁、零状态POST、零横向溢出、零控制台错误和零失败请求,夹具已精确清理 |
| 告警测试、重试与静默撤销页面可用性 | 接收器联通测试、失败测试受控重试和静默提前撤销已统一为页面内受控操作区。联通测试固定活动路由、接收组、运行手册和行版本,并明确测试原因只进入审计、不外发且不会创建正式告警;重试固定任务编号、测试关联号、尝试次数、人工重试次数和错误码,要求确认依赖问题已修复;静默撤销固定静默范围、窗口和行版本,明确仍在发生的信号会重新进入队列。三类原因最长500字符并要求影响确认。真实OIDC Chrome使用临时活动路由、静默和失败测试任务验证全部门禁、零发送/重试/撤销POST、零横向溢出、零控制台错误和零失败请求,夹具已精确清理 |
| 家庭高影响操作页面可用性 | 授权撤回、成员移除、家庭所有权转移、固件批次暂停、固件版本回滚和分享撤销已统一为页面内受控操作区。表单固定家庭/长者、成员、授权策略、固件批次与目标版本、分享资源及行版本,并明确各操作对访问、记忆、在途设备和离线副本的影响;成员移除和所有权转移要求逐字输入目标成员显示名,其余操作要求显式影响确认。真实OIDC Chrome以不提交方式验证六项表单的目标绑定和门禁,确认零业务变更、零横向溢出、零控制台错误和零失败请求;临时固件及分享夹具已精确清理,种子授权和成员状态未改变 |
| 配置版本受控流转页面可用性 | 配置草稿提交审批、待审批版本发布和已退役历史内容回滚已改为具体版本卡片内的全宽受控流转区,固定展示版本编号、类型、配置键、状态、创建人、变更说明和行版本。发布/回滚范围、比例、并发上限和依据只保存在当前目标草稿内,修改范围会清除影响确认;页面明确提交不等于发布、发布只影响后续新通话、回滚创建新不可变版本。真实OIDC Chrome使用三条临时状态夹具验证目标/范围/确认门禁、取消关闭、数据库状态不变、零流转请求、零横向溢出、零控制台错误和零失败请求;首轮截图发现窄列不可读后已修复为全宽布局并复验,夹具已精确清理 |
| 邀请撤销与设备诊断页面可用性 | 待接受邀请撤销和设备诊断下发已从单击即执行改为家庭工作台顶部受控操作表单。邀请表单固定家庭、接收人提示、角色、编号、到期时间和状态,明确一次性凭据失效但现有成员不受影响;诊断表单固定设备、长者、软硬件版本、在线状态和配置/记录版本,明确音频/网络/存储范围、5分钟有效期及不重启不改配置。两项均要求显式确认,取消或业务上下文变化会清空草稿。真实OIDC Chrome使用一条临时邀请和现有模拟设备验证目标/确认门禁、取消关闭、邀请与命令数量不变、零POST、零横向溢出、零控制台错误和零失败请求;邀请夹具已精确清理 |
| 成员角色与稳定事实确认页面可用性 | 成员角色变更已从下拉即保存改为受控表单,固定家庭、成员、当前角色和行版本,目标角色改变会清除旧确认,并展示管理员/编辑者/查看者的实际能力及高敏感资源不随角色授予的边界。待核对事实确认也改为受控表单,固定长者、事实正文、来源引用、敏感等级、状态和行版本,明确只影响后续新通话且模型推断必须人工复核。真实OIDC Chrome使用种子编辑者和一条临时待核对事实验证目标/角色变化/确认门禁、取消关闭、成员及事实版本不变、零PATCH、零横向溢出、零控制台错误和零失败请求;事实夹具已精确清理 |
| 录音授权撤销与隐私盘点/导出页面可用性 | 录音访问授权撤销、八类隐私数据盘点和私有导出已从单击即提交改为家庭业务受控操作表单。撤销表单固定长者、成员、权限、用途和有效期,并提示已签地址最多仍有效5分钟及离线副本不可远程收回;盘点明确只返回数量和状态、不复制正文;导出明确包含私密正文、使用短期地址并需受控保存销毁。三项均要求显式影响确认,取消或上下文变化会清除草稿。真实OIDC Chrome以一次无提交轻量冒烟验证目标/八类范围/确认门禁、零业务请求、三类数据库记录不变、零横向溢出和零非预期浏览器错误;通话媒体403为快照未授权下的预期安全门禁,临时通话与授权夹具已精确清理 |
| 录音与私有导出敏感地址签发页面可用性 | 录音分片播放、录音分片下载和READY私有导出下载已从单击即签发地址改为页面内受控操作。录音表单固定长者、通话、轨道、分片、时长、大小和用途,区分浏览器播放的旁听风险与本地声音文件的保管责任;导出表单固定任务编号、八类范围、大小和对象过期时间。三项都在确认后才调用服务端,服务端继续二次核验权限、原录音授权、分片或任务状态。真实OIDC Chrome使用一条已验证分片、最小PLAY/DOWNLOAD授权和READY导出任务执行无提交轻量冒烟,验证全部目标/确认门禁、取消关闭、零媒体POST、零导出详情GET、访问日志及任务不变、零横向溢出/控制台错误/失败请求;夹具已精确清理 |
| 录音能力与具体资源分享创建页面可用性 | 录音PLAY/DOWNLOAD显式授权和故事、通话文字、录音分片分享创建已接入家庭业务受控操作。录音确认区固定长者、成员、能力、用途和到期时间,明确授权按长者覆盖有效期内当前及后续录音、同类旧授权会被替换;分享确认区固定具体资源、接收人、单项能力、用途、到期时间和登录方式,分别说明登录接收边界与匿名口令等同凭据、只显示一次和分渠道转交要求。取消或上下文变化不创建授权,打开/取消新分享也不提前清除旧匿名口令。真实OIDC Chrome使用合成故事、通话、已验证录音分片及最小当前账号录音授权验证录音授权和三种分享资源、匿名/登录两种模式的目标/确认门禁,零创建POST、两类授权表数量不变、零横向溢出/控制台错误/失败请求;夹具已精确清理 |
| 成员邀请与设备绑定一次性凭据页面可用性 | 成员邀请创建和设备屏幕绑定码消费已接入家庭业务受控操作。邀请确认区固定家庭、接收人提示、目标角色和七天有效期,明确提示不绑定真实身份、实际凭据持有者加入家庭、明文只显示一次及泄露撤销要求;设备确认区固定家庭和长者,只显示绑定码掩码/长度/末四位,明确云端不生成设备码、绑定建立唯一长期关联且错误目标不能复用同一码改绑。设备输入增加16—128字符门禁,取消或上下文变化清空完整码;邀请取消不生成凭据。真实OIDC Chrome无提交轻量冒烟验证两项目标/确认门禁、短码阻断、设备码不回显、取消清理、零邀请/绑定POST、邀请和绑定表数量不变、零横向溢出/控制台错误/失败请求 |
| 创建家庭与接受邀请关系控制页面可用性 | OpenAPI 0.56.0下,创建家庭和接受成员邀请已接入家庭业务受控操作。创建确认区固定客户组织、当前账号和家庭名称,明确当前账号成为所有者以及初始家庭不自动包含长者、授权、设备或通话。接受邀请新增登录态只读预览接口,按一次性凭据展示目标客户组织、家庭、接收人提示、角色和到期时间,响应禁止缓存且页面只显示掩码凭据;正式提交仍原子复核邀请和成员状态。定向Go测试、前后端生产构建及一次真实OIDC Chrome无提交轻量烟测通过;烟测仅产生一次预览POST,创建/接受写请求为0,取消后家庭、成员和邀请状态不变,无横向溢出、控制台错误或失败请求,临时邀请家庭夹具已精确清理 |
| 长者档案与稳定事实创建页面可用性 | 新增长者长期档案和家庭成员登记稳定事实已接入家庭业务受控操作。档案确认区固定家庭、称呼、背景、兴趣、交流目标、节奏和优先话题,明确个人资料长期保存、仅影响后续新通话且不等同分项授权;事实表单新增普通/敏感/高度敏感选择,健康背景默认提升为敏感,确认区固定长者、完整内容、家庭录入来源、敏感等级和待核对状态,并明确不会自动确认或创建记忆。前端生产构建、Web镜像重建及一次真实OIDC Chrome无提交轻量烟测通过;两类创建POST均为0,取消后长者和事实表数量不变,无横向溢出、控制台错误或失败请求 |
| 档案修订与设备期望配置页面可用性 | OpenAPI 0.57.0下,长者档案修订和设备扬声器期望配置已接入家庭业务受控操作。档案表单无变化时禁止提交,确认区逐项展示当前版本到下一版本的旧值和新值,明确只影响后续新通话、不扩大授权且强ETag冲突不覆盖;设备确认区固定设备、长者、期望旧值/新值、上报实际值和期望版本变化,明确离线领取与实际应用边界。修复设备配置覆盖缺陷:网页仅发送白名单增量,服务端按顶层分类合并,保留未提交的历史编码、采样率和心跳配置。真实PostgreSQL定向用例、前后端生产构建及一次真实OIDC Chrome无提交烟测通过;两类PATCH为0,取消后档案和设备影子版本/正文不变,无横向溢出、控制台错误或失败请求 |
| 分项授权与固件灰度创建页面可用性 | 新增分项授权和启动固件灰度批次已接入家庭业务受控操作。授权确认区冻结长者、类型、后续新通话范围、政策、告知摘要、证据和数据影响;切换类型清除旧告知确认,已有同类有效授权在页面阻断且服务端仍事务复核。灰度页只允许选择`READY`版本和当前家庭内型号/硬件兼容设备,确认区冻结制品摘要、比例、候选设备及当前版本,并明确服务端确定性选样和24小时可靠命令边界。按降低测试强度的要求仅执行前端生产构建、Web镜像重建、一次真实OIDC Chrome无提交冒烟和轻量残留检查;授权/灰度创建POST均为0,授权、批次及命令数量不变,无横向溢出、控制台错误、失败请求或临时固件夹具残留 |
| 固件信任根与制品上传页面可用性 | 固件签名公钥登记和制品上传校验已接入家庭业务受控操作。网页先验证公钥为标准Base64的32字节Ed25519公钥、签名为64字节Ed25519结果;公钥确认区冻结家庭、密钥编号和完整SHA-256指纹并明确编号不可变、轮换须使用新编号,制品确认区冻结型号/主板/版本、文件名/大小/完整摘要、签名密钥、安全基线、发布说明和逐字段签名清单。确认后仍执行15分钟私有地址、浏览器直传以及服务端大小/摘要/签名三重校验。按降低测试强度要求只执行生产构建、镜像重建、一次真实OIDC Chrome无提交冒烟和轻量数据核验;公钥/版本/审计数量不变,相关POST和对象PUT均为0,无横向溢出、控制台错误或失败请求 |
| 固件上传中断恢复与未完成版本处置 | OpenAPI 0.58.0与V37补齐`UPLOADING`版本恢复:可重新签发15分钟私有上传地址、用大小和SHA-256完全一致的本地文件覆盖同一对象并重复完成校验,也可把无法继续的版本条件退役并幂等清理对象。完成校验与退役均检查状态条件实际更新行数,消除并发误报;唯一性只约束未退役清单,退役后允许相同业务版本创建纠正版且保留历史。网页恢复表单阻断错误文件,恢复/退役均使用目标冻结和影响确认。按低强度策略仅执行V37升级、真实PostgreSQL服务/HTTP定向用例、生产构建、一次真实OIDC Chrome无提交冒烟和残留检查;零续传/完成/退役/PUT请求,夹具状态与审计不变,无溢出、控制台错误或失败请求 |
| 可信固件公钥台账、吊销与轮换保护 | OpenAPI 0.59.0补齐租户可信公钥查询和受控吊销:台账只展示完整SHA-256指纹、状态、登记/吊销时间及上传中版本、已就绪版本、运行中批次引用数量,不暴露原始公钥。密钥编号不可变;相同公钥可幂等重放,不同公钥不得覆盖,已吊销编号不得重新激活,轮换使用新编号。上传中版本或运行中批次引用会阻断吊销;已吊销密钥不能创建新版本或启动新灰度,历史已就绪版本和审计仍保留。网页提供引用阻断原因和目标冻结的吊销确认。按低强度策略仅执行真实PostgreSQL服务/HTTP定向用例、生产构建、镜像重建、一次真实OIDC Chrome无提交冒烟和轻量残留检查;吊销请求为0,夹具状态与审计不变,无溢出、控制台错误或失败请求 |
| 已验证固件版本暂停、恢复与退役生命周期 | OpenAPI 0.60.0补齐版本级暂停、恢复和受保护退役。`READY`暂停在同一事务阻断新灰度/新下载、暂停关联运行批次并取消未投递命令;恢复重新核验签名密钥活动状态,只恢复版本而不自动重启旧批次。运行中批次通过`FIRMWARE_RELEASE_IN_USE`阻断直接退役;未完成版本退役继续尝试清理对象,已验证版本退役保留不可变制品、清单、历史批次和审计。网页按状态展示操作,运行引用阻断退役,吊销密钥阻断恢复,并使用目标冻结和影响确认。按低强度策略执行真实PostgreSQL服务/HTTP定向用例、生产构建、镜像重建、一次真实OIDC Chrome无提交冒烟和轻量残留检查,不重复完整设备安装/回滚回归 |
| 固件版本影响预览与处置结果查询 | OpenAPI 0.61.0新增版本影响只读接口,实时汇总关联批次状态、设备分配/下载/安装/确认/失败阶段和命令排队、送达、确认、终态及暂停取消数量;观察清单覆盖下载中、安装中及命令已送达或确认但分配尚未收敛的设备,返回批次、设备、阶段、进度、命令状态、观察原因和最后上报时间。完整汇总不截断,清单最多100条并显式标记。网页版本卡片可按需查看影响,生命周期操作成功后同步刷新处置结果。按低强度策略执行真实PostgreSQL服务/HTTP定向用例、生产构建、镜像重建、一次真实OIDC Chrome只读冒烟和残留检查,不重复完整设备升级/回滚回归 |
| 模拟终端固件升级执行与中断恢复 | 模拟终端的`firmware_update`不再直接合成成功:从固定设备边界取得5分钟私有地址,限制1字节至256 MiB,校验小写SHA-256,并用设备侧`SIM_FIRMWARE_TRUSTED_KEYS`预置信任锚验证Ed25519清单签名;随后依次上报下载开始、制品验证完成、安装开始和确认终态。支持下载、摘要、签名、安装四类失败及下载后/安装后中断注入。服务端允许同一设备重新拉取未过期`ACKNOWLEDGED`命令且保持状态不回退,使进程重启后可从安全起点重复执行。按低强度策略仅执行模拟器/设备命令定向Go用例、一个真实PostgreSQL状态用例和一次“校验后中断—重启—确认”的纵向冒烟;最终两次投递收敛为`SUCCEEDED/CONFIRMED/100`、影响观察数为0,临时数据库和对象夹具已清理,未重复Web、暂停和回滚全量回归 |
| 设备A/B分区升级、启动健康确认与自动回退 | OpenAPI 0.62.0在既有命令结果对象中增加向后兼容的`staging/reboot_pending/boot_verifying/rolled_back`可选阶段,不扩展旧设备必填字段和固件分配主状态枚举。模拟器只在显式启用时把制品写入非活动分区,使用权限受限的耐久日志保存命令、版本、摘要、活动/目标分区、启动尝试和健康截止时间;重启后重新拉取同一`ACKNOWLEDGED`命令,健康通过才确认新分区,失败或超时则回到旧分区并报告回退版本。家庭固件批次详情展示写入、等待重启、健康确认和已回退事实。按低强度策略执行定向Go用例、前端类型/生产构建和一次B分区启动失败自动回A分区纵向冒烟;实测从`ACKNOWLEDGED/INSTALLING/90/REBOOT_ARMED`收敛为`FAILED/FAILED/95/BOOT_HEALTH_FAILED_ROLLED_BACK`,批次暂停、观察设备为0且全部夹具已清理。该证据只证明协议闭环,真实Bootloader与掉电一致性仍属于阶段8外部验收 |
| 固件真机联调阶段事件与一致性证据 | OpenAPI 0.63.0和V38新增每设备不可变固件阶段事件,直接命令ACK和批量遥测补交均在命令/分配事务内记录;`assignment+command_status+result_digest`对完全重复回执去重,事件保存命令/分配状态、阶段、进度、结果码、A/B分区、启动尝试、健康截止、回退、安装版本、制品摘要和签名密钥,不向页面返回完整结果正文。批次详情展示按云端接收时间排序的阶段时间线。新增`firmware-device-evidence-v1`和`cmd/firmware-conformance`,离线核对候选构建、设备/发布/命令、Bootloader/分区表、制品/信任锚、事件顺序、启动尝试、10分钟时间相关性及最终分区/版本,并把两份输入SHA-256写入报告。低强度验证执行V38正向/单版回退/重升、定向Go与前端类型检查、一次A/B回退纵向冒烟;实测7条云端事件与模拟设备独立证据全部一致,报告PASS且继续标记外部验收必需,临时业务/对象/证据文件均清理 |
| 真机固件报告纳入阶段8证据包门禁 | `release-evidence-index-v2`新增不可豁免的`REAL_DEVICE_FIRMWARE`,`release-candidate-evidence-bundle-v3`在清单内保存真机报告数、实际/完整覆盖设备数、四场景设备计数和具体缺口。每份报告必须严格符合`firmware-conformance-report-v1`、全部检查通过、范围为`HARDWARE_CAPTURE`并绑定同一候选版本/构建摘要;模拟报告、跨候选报告、失败/字段漂移报告和同设备同场景重复报告均拒绝。`VERIFIED`要求至少3台不同设备中的每台都完成AB成功、AB回滚、写入后断电和启动中断电,缺项必须保持`PENDING`。按低强度策略执行固件校验器/证据打包定向Go测试和一条真实OIDC候选包纵向烟测,不重复固件刷写、前端或全仓回归。 |
| 真实告警接收器和值班组映射证据 | 新增`alert-receiver-capture-v1`、`alert-receiver-conformance-report-v1`和`cmd/alert-receiver-conformance`,把同一候选的全部活动路由、最近成功联通测试、接收端按`test_ref`唯一验签回执、主/升级逻辑组到脱敏目标引用的映射,以及一条已确认并解决的受控正式告警演练形成10项一致性检查。真实来源全部通过后报告为`REAL_RECEIVER`;本地接收器固定为`MOCK_RECEIVER/external_validation_required=true`。v3证据包新增`alert_receiver_validation`缺口摘要,`REAL_ALERT_RECEIVER`不可豁免且首个文件必须是合格真实报告。按低强度策略执行两个相关Go包测试、一条真实Worker/HMAC本地接收器纵向冒烟;报告PASS但模拟范围继续待验,临时路由、Outbox、幂等、审计和磁盘文件均清理。 |
| 云KMS/HSM轮换证据与发布门禁 | 新增`kms-rotation-capture-v1`、`kms-rotation-conformance-report-v1`和`cmd/kms-rotation-conformance`,绑定候选构建、预生产/生产环境、云提供器、工作负载身份、提供器审计、新旧版本、认证探针、业务连续性和安全复核引用。真实报告必须同时覆盖逐请求`DYNAMIC_READ`和进程级`ROLLING_RESTART`,新凭据成功、旧凭据拒绝且不导出密钥正文;本地演练只生成`LOCAL_SECRET/external_validation_required=true`。v3证据包新增`kms_rotation_validation`,`KMS_ROTATION`不可豁免,首个文件必须为合格`REAL_KMS_HSM`报告。按低强度策略执行KMS报告/证据包定向Go测试和一条现有本地HMAC轮换纵向演练;新密钥200、旧密钥401、镜像不变、API恢复,临时容器和报告均清理,真实云门禁保持待验。 |
| 生产等价恢复演练证据与发布门禁 | 新增`production-recovery-capture-v1`、`production-recovery-conformance-report-v1`和`cmd/recovery-conformance`,把候选构建、环境/故障域/变更工单、PostgreSQL恢复、Redis重建、API/Callbacks/Worker滚动重启、供应商停机恢复、实测恢复用时、权威状态摘要、业务连续性、无重复效果、清理及审计引用形成11项检查。真实报告必须在预生产或生产等价环境完成四类演练;本地子集固定为`LOCAL_RECOVERY/external_validation_required=true`。v3证据包新增`production_recovery_validation`,该门禁不可豁免。按低强度策略执行恢复报告/证据包定向Go测试和一条现有服务重启+Redis清空重建演练;三个服务重启、停机Outbox一次完成、Redis从0经签名请求重建、PostgreSQL权威计数不变,报告PASS但真实PostgreSQL/供应商演练继续待验,夹具和磁盘文件已清理。 |
| 生产基础设施一致性证据与发布门禁 | 新增`production-infrastructure-capture-v1`、`production-infrastructure-conformance-report-v1`和`cmd/infrastructure-conformance`,把同一候选的域名TLS、OIDC、PostgreSQL、Redis、对象存储、网络隔离和监控七类组件,与环境/区域/集群/变更工单、规定控制项、观测时间以及探针/配置/审计引用形成9项检查。真实来源完整通过后报告为`PRODUCTION_INFRASTRUCTURE`;本地可达性固定为`LOCAL_INFRASTRUCTURE/external_validation_required=true`。v3证据包新增`production_infrastructure_validation`,该门禁不可豁免且首个文件必须为合格真实报告。按低强度策略执行采集器/证据包定向Go测试和一条无业务写入的本地纵向冒烟:API、OIDC、PostgreSQL、Redis、MinIO和Prometheus均可达,网络及告警配置存在,报告`PASS/LOCAL_INFRASTRUCTURE`并继续外部待验;证据包保留报告加七组件共8项缺口,临时文件已清理。 |
| Safari兼容精简矩阵与发布门禁 | 新增`safari-compatibility-capture-v1`、`safari-compatibility-conformance-report-v1`和`cmd/safari-conformance`。真实报告按候选冻结时的发布依据覆盖`CURRENT/PREVIOUS`两个不同Safari版本、桌面/平板两视口和认证会话、家庭、运营、实时导航、媒体文件、受控操作六流程,共24项;每项要求功能通过且控制台错误、非预期失败请求、横向溢出为0。非Safari工具固定为`NON_SAFARI_TOOLCHAIN/external_validation_required=true`。v3证据包新增`safari_compatibility_validation`,该门禁不可豁免且首个文件必须为合格`REAL_SAFARI`报告。按低强度策略执行采集器/证据包定向测试和一条不声称兼容的结构工具链冒烟:12项本地结构结果生成`PASS/NON_SAFARI_TOOLCHAIN`并继续外部待验;证据包保留真实报告及两个版本共3项缺口,临时文件已清理。 |
| 真实终端RTC/语音供应商精简矩阵与发布门禁 | 新增`real-device-rtc-capture-v1`、`real-device-rtc-conformance-report-v1`和`cmd/rtc-conformance`。真实报告以至少3台候选终端执行6通:`s2s_pure/s2s_hybrid/cascade`各正常完成1通,再覆盖凭证续签、网络切换恢复和受控停止;每通必须证明房间/用户/任务绑定、双向媒体、固定状态序列、供应商启停、最终字幕、用量、质量通过、任务去重和资源回收。协议模拟固定为`PROTOCOL_SIMULATION/external_validation_required=true`。v3证据包新增`real_device_rtc_validation`,该门禁不可豁免且首个文件必须为合格真实报告。按低强度策略执行采集器/证据包定向测试和一条协议结构工具链冒烟:1台模拟终端1通结构结果生成`PASS/PROTOCOL_SIMULATION`并继续外部待验;证据包保留真实报告、设备/通话数量、三方式和四场景共10项缺口,临时文件已清理。 |
| 真实Agent生成、Embedding和内容安全质量门禁 | 新增`real-agent-models-capture-v1`、`real-agent-models-conformance-report-v1`和`cmd/agent-models-conformance`。内容生成复用现有固定10类Agent评测,并使用评测集、脱敏观测和报告重新计算防篡改;Embedding按版本化阈值覆盖精确/改写召回、跨长者隔离、撤销/敏感排除和无匹配降级六类;内容安全覆盖验证码、金融账户、提示注入、敏感医疗、正常内容和模型输出六类。真实证据还必须绑定受控提供器、账号/区域、数据条款、额度和审计引用;本地生成器、哈希向量和规则固定为`LOCAL_AGENT_TOOLCHAIN/external_validation_required=true`。v3证据包新增`real_agent_models_validation`,该门禁不可豁免。按低强度策略执行聚合器/证据包定向测试和一条重算现有模拟报告的本地工具链冒烟:既有10类模拟报告重新计算一致,两组六类结构完整,输出`PASS/LOCAL_AGENT_TOOLCHAIN`并继续外部待验;证据包保留真实报告、三提供器和12类别共16项缺口,临时文件已清理。 |
| 托管内容安全外部预检与告警 | OpenAPI 0.64.0把`content_safety_tls`纳入外部依赖查询和候选验收快照。生产Worker仅执行DNS、TCP和受信TLS握手,不发送待分类正文;结果复用依赖可用性指标、数据库脱敏状态和运营诊断页面,连续5分钟不可用进入统一CRITICAL告警,记录缺失/失败/过期均可阻断候选技术快照但不驱逐Pod。按低强度策略执行App/探针/诊断定向测试、前端类型生成/类型检查/生产构建和Prometheus规则校验。 |
| 阶段8外部执行轻量预检 | 新增`scripts/stage8-preflight.ps1`,以单一只读入口核对候选Git提交、远程仓库、Compose本地基线、外部配置变量名称和十类证据索引结构/状态;报告明确不读取密钥值,也不把环境变量或本地服务可用性当作验收证据。默认仅报告缺口,`-Strict`可供自动化阻断未就绪交接;当前已建立本地`main`候选提交,本地运行基线就绪且索引结构有效,仍缺远程仓库,样例构建摘要为占位值,十类外部证据均为`PENDING`。 |
| 候选构建身份贯通 | Compose新增统一候选构建参数,后端二进制和后端/Web镜像OCI标签共享版本、完整Git提交及UTC构建时间;远程CI从OpenAPI版本和运行编号形成候选版本,构建后重新读取两个镜像标签并与`GITHUB_SHA`和构建时间逐项比对,再把候选版本、提交、时间和双镜像摘要写入构建元数据。修复了此前Dockerfile虽支持注入但Compose/CI未传参、运行版本仍为`dev/unknown`的问题。 |
## 下一开发批次
1. 生产内容安全适配器、远程CI供应链门禁及内容安全外部预检/告警均已完成本地运行闭环;当前没有已知的仓库内业务功能缺口。
2. 在目标环境执行远程CI、真实基础设施、网关、云密钥、四类恢复、内容安全六类质量和macOS Safari矩阵,逐项替换`PENDING`。
3. 在业务方提供真实账号、硬件和生产基础设施后,为已实现的方舟内容与Embedding适配器配置真实模型并验收内容效果、召回质量、额度和数据条款,同时接入火山RTC/豆包语音,执行3台真机固件场景、家庭试点、生产等价恢复和灰度发布。