Files
story/docs/development-plan.md
T

446 lines
29 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-23
> 文档状态:可执行基线,外部账号、硬件和生产资源确认后滚动修订
## 1. 计划目标
本计划用于组织数据采集终端、SaaS平台、Agent编排、实时音视频供应商、模型供应商和平台工程的联合研发。最终交付应形成以下完整业务闭环:
1. 家庭用户创建家庭和长者档案,完成分项授权与设备绑定。
2. 终端摘机后通过设备身份访问云端,取得只适用于本次房间和用户的短期RTC资料。
3. 设备确认入房后,云端启动语音智能体;实时语音直接在终端、RTC和语音智能体之间传输,自建应用服务器只负责控制面和业务数据。
4. 通话期间持续处理心跳、状态、最终话轮、打断、异常停止和任务回收。
5. 通话后按授权生成摘要、开放话题、故事与事实候选,经家庭用户核对后形成可版本化的正式记忆。
6. 录音、分享、导出、授权撤回和主体删除均按最小权限处理并可审计、可对账。
7. 运营人员可以在脱敏边界内处理故障,管理配置版本、灰度、费用、额度和告警。
8. 系统完成真机、真实供应商、家庭试点、容量、安全、恢复和生产上线验收。
## 2. 计划假设与工期口径
### 2.1 建议团队
| 角色 | 建议人数 | 主要责任 |
|---|---:|---|
| 项目经理/需求负责人 | 1 | 需求基线、计划、风险、跨团队协调和验收 |
| 后端工程师 | 2—3 | SaaS业务、设备接入、Agent控制、数据、异步任务和运营接口 |
| 前端工程师 | 1—2 | 家庭工作台、内容核对、隐私和运营后台 |
| Agent/模型工程师 | 1—2 | 供应商适配、提示词、模型路由、内容整理、记忆和评测 |
| 测试工程师 | 1—2 | 接口、端到端、真机、性能、安全、恢复和验收测试 |
| 平台/运维工程师 | 1 | CI/CD、环境、监控、告警、备份、密钥和生产发布 |
| 硬件/固件接口人 | 1 | 设备协议、音频、命令、录音上传、固件和真机联调 |
工期以8—10人的跨职能团队并行开发为估算前提。若后端、Agent、测试或硬件接口人不能并行,日历工期需相应顺延。外部供应商账号、真实设备、生产网络和合规材料不计入纯编码工时,但直接影响联调、试点和上线日期。
### 2.2 总体工期建议
| 阶段 | 建议周期 | 累计时间 | 主要里程碑 |
|---|---:|---:|---|
| 阶段0:启动与需求冻结 | 1—2周 | 第1—2周 | M0需求与边界基线 |
| 阶段1:工程框架与环境 | 2周 | 第3—4周 | M1工程可运行 |
| 阶段2:公共基础能力 | 2—3周 | 第5—7周 | M2安全业务底座 |
| 阶段3:端到端语音最小闭环 | 3—4周 | 第8—11周 | M3真/模拟设备可完成通话 |
| 阶段4:SaaS核心业务 | 4—5周 | 第12—16周 | M4家庭用户P0流程 |
| 阶段5:内容与记忆闭环 | 3—4周 | 第15—18周 | M5确认记忆进入下一通话 |
| 阶段6:隐私、分享与媒体完善 | 3—4周 | 第17—20周 | M6数据生命周期闭环 |
| 阶段7:运营与生产加固 | 3—4周 | 第19—22周 | M7可运营、可恢复、可发布 |
| 阶段8:联调、试点与上线 | 3—6周 | 第23—28周 | M8生产上线与移交 |
阶段4—7可在接口和数据边界冻结后交叉并行。上述周期是项目计划估算,不是需求文档中的固定交付承诺;应在M0评审时结合人员和外部资源形成正式排期。
## 3. 总体执行原则
- 采用模块化单体起步,`api`、`callbacks`和`worker`分别承载在线接口、供应商通知和后台任务。
- OpenAPI是浏览器、设备和回调接口的事实来源;接口变更先改契约,再改实现和测试。
- 所有业务数据同时落实客户组织、家庭、长者和具体资源边界,不能相信浏览器或设备上报的租户编号。
- 会产生外部影响的POST请求使用`Idempotency-Key`;修改操作使用`ETag/If-Match`或显式版本号。
- 外部调用前先保存业务意图,通过可靠待办异步执行;数据库事务不跨越供应商、对象存储或身份服务网络调用。
- 配置、授权、故事、记忆和费用采用版本化保存;撤销、逻辑删除、审计保留和物理删除分别建模。
- 长期密钥只保存在KMS/HSM或受控密钥系统中,业务数据库和页面仅保存引用与最后轮换时间。
- 每阶段采用“最小充分验证”后再进入下一阶段:变更包定向测试、受影响的迁移或接口契约检查、一条可复现的纵向功能冒烟和文档同步必须通过;无关模块的全量回归不作为日常阶段门禁。
## 4. 分阶段开发计划
## 4.1 阶段0:项目启动与需求基线冻结
### 目标
把需求文档转化为研发、联调和验收共同使用的范围基线,先解决系统边界、责任分工和外部依赖不确定性。
### 主要任务
1. 建立需求追踪矩阵:需求编号—模块—接口—数据表—测试用例—交付物。
2. 冻结两条责任边界:SaaS负责“人、设备、权限、数据和网页”,Agent负责“通话控制、供应商适配、模型效果和内容候选”。
3. 确认实时语音不经过自建应用服务器,应用服务只处理控制、状态、字幕、用量和业务数据。
4. 明确设备型号、主板版本、音频格式、RTC发布/订阅方式、心跳字段、双轨分片清单和命令回执。
5. 明确火山RTC、豆包语音、模型、Embedding、对象存储、OIDC、短信/邮件和KMS账号申请计划。
6. 形成开发、测试、预生产、生产四套环境的隔离清单。
7. 输出风险台账,重点跟踪真实供应商能力、录音合规、硬件交付、供应商限额和生产网络。
### 交付物与退出条件
- 需求基线、范围清单、术语表、责任矩阵、接口清单和数据分类分级表完成评审。
- 外部依赖有负责人、申请时间和替代模拟方案。
- 未决事项明确决策截止日期,不影响第一阶段工程搭建。
## 4.2 阶段1:工程框架与本地环境搭建
### 目标
建立可重复启动、可检查、可迁移、可构建的工程骨架,让前后端、Agent和测试可以并行开发。
### 后端与基础设施任务
- 初始化Go模块化单体,建立`cmd/api`、`cmd/callbacks`、`cmd/worker`三个进程入口。
- 建立配置加载、结构化日志、请求编号、优雅停机、错误响应和健康检查。
- 接入PostgreSQL、pgvector、Redis、S3兼容对象存储和OIDC开发身份服务。
- 建立数据库迁移规则:迁移仅追加、支持空库升级、单版本回退和重新升级。
- 建立Dockerfile、Docker Compose、环境变量模板和本地种子数据。
- 建立CI基础流水线:格式、静态检查、变更包单元测试、OpenAPI生成、前端类型检查、构建、依赖审计和Compose解析;全仓单测和完整安全扫描放到发布候选流水线执行。
### 前端任务
- 初始化React、TypeScript和Vite应用。
- 建立登录回调、API客户端、全局错误、加载、无数据、权限不足和重试组件。
- 建立桌面端优先、平板可用的页面框架和统一设计变量。
### 接口与数据库
- 首批接口:`/health/live`、`/health/ready`、`/api/v1/version`、`/api/v1/me`。
- 首批表:租户、用户、审计事件、幂等记录和可靠待办。
### 退出条件
- 新开发机可按文档一次启动完整本地环境。
- 空数据库可升级到最新版本,服务就绪接口全部通过。
- 前后端镜像可构建,OpenAPI可生成TypeScript类型,基础CI无失败。
## 4.3 阶段2:公共基础能力建设
### 目标
一次性建立后续所有业务模块共用的身份、权限、隔离、可靠性和可观测能力。
### 主要任务
1. OIDC令牌验证:校验签发方、使用对象、签名、有效期和账号状态。
2. 租户与家庭权限:建立所有者、管理员、编辑者、查看者能力矩阵;服务端反查资源边界。
3. 幂等执行器:保存请求摘要和原响应,支持并发串行化及同键异文拒绝。
4. 事务审计:业务写入与审计同事务提交,记录操作人、原因、前后状态和请求编号。
5. Outbox可靠待办:领取、重试、退避、死信、进程崩溃锁恢复和积压指标。
6. 接口治理:请求体限制、统一错误码、签名游标、强ETag、安全响应头和Redis限流。
7. 可观测性:OpenTelemetry链路、Prometheus指标、结构化日志和依赖健康状态。
8. 安全基线:敏感字段日志过滤、生产配置启动门禁和密钥相互独立检查。
### 退出条件
- 跨租户、跨家庭、角色越权、伪造/过期令牌测试全部拒绝。
- 并发幂等请求只产生一次业务效果。
- 业务回滚时审计同步回滚,Outbox在进程重启后可以继续处理。
- 指标、日志和追踪可使用同一请求编号关联。
## 4.4 阶段3:端到端语音最小闭环
### 目标
先使用模拟设备和模拟供应商打通“摘机—创建—入房—激活—对话—挂断—回收”,再切换真实设备和供应商。
### 设备接入任务
- 每台设备建立独立身份,采用经批准的每设备请求签名或mTLS。
- 实现时间偏差校验、Nonce防重放、密钥吊销和轮换兼容。
- 实现`bootstrap`和版本化`config`,配置只包含设备运行所需的非敏感信息。
- 建立设备在线状态、期望配置、实际配置和单调版本同步。
### 通话控制任务
1. `POST /device/v2/conversations`:冻结授权、背景、记忆和配置版本,分配RTC房间与短期凭证,此时不启动Agent。
2. `POST /device/v2/conversations/{id}/activate`:设备确认入房后可靠投递供应商启动任务。
3. `POST /device/v2/conversations/{id}/heartbeat`:维护数据库权威租约和Redis热状态,拒绝旧序号覆盖新状态。
4. `POST /device/v2/conversations/{id}/stop`:可靠停止供应商任务并收敛终态。
5. `POST /device/v2/conversations/{id}/turns:batch`:供应商终稿缺失时由所属设备补传,按话轮业务键原子去重合并。
6. `POST /device/v2/telemetry:batch`:批量接收状态、有限错误码和命令结果,推进设备影子并返回后续动作。
7. `POST /callbacks/v1/vertc/voice-chat`:先验签再解析,按供应商事件编号和正文摘要去重。
8. Worker扫描预留过期、心跳超时、启动/停止卡住和供应商遗留任务。
### 状态机
`PREPARING → ROOM_ISSUED → STARTING_AGENT → ACTIVE → STOPPING → COMPLETED`
异常终态为`FAILED`或`EXPIRED`。重复通知和过时通知不得让终态回退。
### 退出条件
- 模拟设备可连续完成完整通话,重复创建不会产生两个有效房间。
- 设备未入房时不启动供应商任务,预留到期可自动回收。
- API、Callback或Worker重启后,中间状态可自动收敛。
- 使用真实账号完成RTC短期凭证、Agent启动/停止和签名通知联调后,才将本阶段标记为真实闭环完成。
## 4.5 阶段4:SaaS核心业务开发
### 目标
完成家庭用户从登录、建档、授权和绑定设备,到查看通话与管理内容的P0业务流程。
### 功能批次
| 子批次 | 功能 | 关键接口与数据 |
|---|---|---|
| 4A 家庭与成员 | 家庭创建、邀请、角色、移除、所有权转移 | `/households`、`/members`、`member_invitation`、`household_member` |
| 4B 长者与授权 | 档案、稳定事实、五类分项授权、撤回和快照 | `/subjects`、`/facts`、`/consents`、`subject_profile`、`consent_record` |
| 4C 设备管理 | 列表、详情、绑定、解绑/转移申请、在线状态和设备影子 | `/devices`、`/device-claims`、`device_binding`、`device_twin` |
| 4D 受控命令 | 排队、设备拉取、确认、成功/失败和过期 | `/devices/{id}/commands`、`/device/v2/commands`、`device_command` |
| 4E 固件 | 公钥、制品、签名、灰度、暂停、回滚和逐设备进度 | `/firmware-*`、`firmware_release`、`firmware_rollout` |
| 4F 通话页面 | 列表、筛选、游标分页、状态、字幕、摘要、用量和错误 | `/subjects/{id}/conversations`、`/conversations/{id}` |
### 页面设计
- 家庭成员页、长者档案与授权页、设备管理页、固件发布页和通话记录页。
- 所有页面覆盖加载、空数据、失败、重试、权限不足和并发修改状态。
- 家庭角色只控制业务操作能力,不隐式授予字幕、录音或具体分享资源权限。
### 退出条件
- 家庭用户P0流程端到端通过;跨家庭资源编号访问不泄露资源是否存在。
- 多人编辑使用版本检查,旧版本写入返回冲突。
- 设备离线、命令过期、重复回执和固件损坏均有稳定、可审计结果。
## 4.6 阶段5:Agent内容、故事与记忆闭环
### 目标
把最终字幕转化为可追溯候选内容,经人工核对后形成仅在有效授权下进入后续通话的正式记忆。
### 主要任务
- 接收并去重最终话轮,保存角色、顺序、时间、打断和来源事件。
- 仅在字幕保存授权有效时保存正文;供应商原始事件不重复保存完整字幕。
- 生成通话摘要、开放话题、故事候选和事实候选,并保留来源话轮和生成版本。
- 对验证码、账户信息和敏感医疗内容先识别、最小化和策略过滤。
- 实现故事查看、修订、确认和拒绝;每次修改形成不可覆盖的新版本。
- 只有人工确认且个性化记忆授权有效时,才创建正式记忆和检索索引。
- 使用PostgreSQL与pgvector按租户、长者、授权、敏感级别、状态和版本检索。
- 停用、授权撤回或删除后立即停止新通话召回,后台对账索引和正文清理。
- 建立固定评测集,记录通话成功、时延、打断、称呼、记忆、虚构、来源完整和敏感内容处理。
### 退出条件
- 机器候选不会自动成为正式记忆。
- 新确认记忆只从下一次新通话开始生效;进行中的通话保持冻结版本。
- 两位长者交替测试不串用资料;提示注入不能改变服务端授权和数据边界。
- 删除或撤回后,新通话召回为零并有后台对账证据。
## 4.7 阶段6:录音、分享、导出与隐私闭环
### 目标
完成从设备本地双轨录音到云端访问,以及数据分享、导出、撤回和永久删除的全生命周期。
### 录音链路
1. 设备在原录音保存授权有效时,本地加密保存near/far两条轨道。
2. 设备提交幂等分片清单,云端为单个对象签发短期上传地址。
3. Worker校验大小、SHA-256、WAV/Opus容器、时长和分片稳定编号。
4. 云端确认校验且达到保留窗口后,设备删除本地密文并提交删除回执。
5. 播放和下载使用独立授权,每次访问重新校验授权并签发短期地址。
### 分享与状态通知
- 具体资源分享支持故事、通话文字和录音,分别设置接收人、权限、用途、时限和登录要求。
- 登录分享校验指定接收人;匿名分享只保存口令摘要;匿名模式禁止故事编辑。
- 故事共享编辑使用`If-Match`并形成新修订;文字分享不隐式包含音频。
- `/api/v1/events`使用认证SSE发送最小状态事件,支持`Last-Event-ID`短时续传和客户端去重。
### 导出与删除
- 数据访问请求只返回分类盘点和状态,不在列表中复制正文。
- 私有导出由Worker生成,保存至私有对象存储,提供短期下载和摘要校验。
- 主体删除先立即冻结访问、上传和召回,再对PostgreSQL、Redis、对象存储、pgvector、供应商索引和导出文件执行可重试对账。
- 删除证明只保存必要编号、状态、计数和时间,不保留已删除正文。
### 退出条件
- 无原录音授权或无播放/下载授权时不能取得录音地址,每次成功和拒绝均有审计。
- 分享撤销或过期后拒绝新访问;匿名原始口令不进入数据库和日志。
- 隐私删除在任一子系统短暂失败后可以继续重试,最终状态可查询且无正文残留。
## 4.8 阶段7:内部运营、配置、费用、告警与生产加固
### 目标
建立面向内部运营人员的脱敏工作台和生产运行能力,使系统可诊断、可配置、可控费、可告警、可恢复。
### 运营故障处理
- 建立`/ops/*`接口与独立运营角色:客服只读、运营操作、配置审批和平台管理员。
- 按脱敏设备编号和通话编号查询状态、错误、配置版本、用量和上传积压。
- 支持安全停止、设备吊销、后台任务重试、状态对账和脱敏诊断包。
- 临时查看敏感内容必须填写理由、有效期并经过审批;默认不显示字幕正文和原录音。
- 所有运营动作记录操作人、原因、操作前后状态和请求编号。
### 配置发布
- 人设、音色、模型和路由配置按`DRAFT → PENDING_APPROVAL → PUBLISHED → RETIRED`管理。
- 发布前执行字段完整性、资源引用、模型兼容性、费用上限和离线评测检查。
- 支持按客户组织、设备分组或测试长者灰度,并限制并发影响范围。
- 支持版本差异比较和回滚;新通话使用新版本,历史通话保留原配置快照。
- 页面只显示长期密钥引用名称和最后轮换时间。
### 用量、费用和额度
- 按通话归集RTC、端到端语音、ASR、LLM、TTS、存储和通话后处理用量。
- 供应商用量事件幂等去重;按带版本的单价快照计算,价格调整不改变历史费用。
- 配置客户组织每日/月度额度、同时通话数和单次最长时长。
- 达到硬额度时阻止新通话并返回稳定错误;在途通话按已发布策略停止或完成当前轮次。
### 监控、告警和恢复
- 业务仪表盘:通话成功、活跃通话、设备在线、上传、内容审核、隐私任务和费用。
- 技术仪表盘:API、Callback、Worker、数据库、Redis、对象存储、Outbox和供应商依赖。
- 安全仪表盘:认证失败、越权、重放、密钥/证书到期和高风险运营操作。
- 告警覆盖供应商不可用、启动/停止异常、遗留任务、数据库/Redis故障、通知积压、删除超期、上传失败和费用异常增长,并关联运维手册。
- 完成数据库恢复、长期密钥轮换、供应商故障和隐私删除四类演练。
### 专项验证
- 执行需求场景的接口、活跃通话、回调、SSE、媒体分片和并发删除专项压测。
- 执行租户隔离、录音越权、回调重放、提示注入、依赖漏洞、镜像和密钥扫描。
- 在Chrome、Edge和项目确认的其他目标浏览器完成桌面与平板兼容验证。
### 退出条件
- 错误配置在影响新通话前被阻止,回滚后新通话使用上一已发布版本。
- 每次通话的用量、价格版本和总费用可追溯且不重复计费。
- 告警有接收人、严重级别、静默规则、升级路径和运维手册链接。
- 备份可在隔离环境实际恢复,而不是只检查备份任务状态。
## 4.9 阶段8:真实联调、家庭试点与生产上线
### 目标
用真实设备、真实供应商账号和类生产基础设施完成联合验收,并安全发布生产。
### 联调顺序
1. 单设备实验室联调:入房、双向语音、心跳、挂断、录音、命令和固件。
2. 弱网与异常联调:丢包、断网、设备重启、API/Worker重启、供应商超时和重复通知。
3. 多设备稳定性:连续多轮通话、并发通话、任务遗留和资源回收。
4. 小范围内部试用:仅合成或经批准的脱敏数据,检查内容质量与运维流程。
5. 家庭试点:明确知情同意、退出方式、反馈渠道和每日风险复盘。
6. 预生产演练:部署、数据库迁移、回滚、备份恢复、密钥轮换和告警通知。
7. 生产发布:分批放量,观察业务、技术、安全和费用指标后逐步扩大。
### 上线门禁
- 首期需求、用例、缺陷和遗留风险可追踪,阻断级缺陷为0。
- 真实账号完成RTC、三种语音处理方式、字幕、状态、用量和配额验证。
- 客户组织隔离、录音越权、通知重放、遗留任务回收和隐私删除专项通过。
- 生产域名、证书、OIDC、对象存储、数据库、Redis、KMS、备份、告警接收人和应急联系人已配置。
- 业务方、研发方、测试方和硬件方签署联合验收与上线检查清单。
### 交付与移交
- 源代码、版本标签、构建说明、镜像和软件材料清单。
- OpenAPI、数据字典、迁移、架构、功能、流程和接口文档。
- 自动化测试、覆盖率、性能、安全、恢复、真机和试点报告。
- 部署、回滚、监控、告警、备份恢复、密钥轮换和故障处理手册。
- 账号权限、密钥引用、云资源、已知问题、值班机制和后续优化建议。
## 5. 关键业务流程与阶段依赖
```text
需求冻结
↓
工程框架 ──→ 身份/权限/审计/幂等/Outbox
↓ ↓
设备身份与配置 ──→ 通话创建/激活/心跳/停止 ──→ 真实供应商联调
↓ ↓
家庭/长者/授权/绑定 最终字幕/摘要/候选
↓ ↓
录音上传与访问 人工核对/正式记忆/检索
└──────────┬──────────────┘
↓
分享/导出/撤回/删除/SSE
↓
运营配置/费用/告警/恢复/安全
↓
真机试点 → 预生产演练 → 灰度上线 → 项目移交
```
关键依赖如下:
- 没有设备身份和绑定关系,不能开始真实通话。
- 没有分项授权快照,不能保存字幕、录音或生成长期记忆。
- 没有最终话轮来源,不能确认故事和事实候选。
- 没有配置版本冻结,不能做供应商问题、质量和费用追溯。
- 没有可靠删除与审计,不进入家庭试点。
- 没有真实账号、真机、告警接收人和恢复演练,不进入生产上线。
## 6. 测试与质量门禁
日常开发采用“功能完整、验证精简”的风险分层策略:每个子批次只验证本次改变的核心规则、接口契约、数据迁移和一条真实身份纵向链路,不为提高覆盖率重复补低价值用例,也不在普通功能批次重复执行全量压测、全浏览器矩阵或全仓回归。身份隔离、授权、幂等、通话状态、隐私删除、费用额度和密钥等高风险边界仍保留定向门禁;全量、安全、容量、恢复和真机矩阵集中在发布候选及上线前执行。
验证分为三档:
1. **日常必跑**:编译或类型检查、变更包测试、受影响的OpenAPI或数据库迁移检查、单条端到端轻量冒烟、运行服务就绪检查。
2. **条件触发**:只有改动涉及身份权限、状态机、数据删除、并发容量、外部供应商、浏览器交互或恢复机制时,才增加相应专项用例。
3. **发布候选必跑**:在计划发布的固定版本上执行一次全仓回归、安全扫描、关键业务全流程、容量与恢复验证,避免把高成本测试重复摊到每个小批次。
“功能完全可用”的最低判断标准不是用例数量,而是本次功能的入口、正常处理、一个关键失败分支、最终状态、用户可见反馈和数据清理均已闭环;任何一项缺失都不能仅凭接口返回成功宣告完成。
| 测试层次 | 每阶段要求 | 上线前要求 |
|---|---|---|
| 单元测试 | 只运行变更包及其直接依赖;新增或修正的核心规则至少一个正向、一个关键失败用例 | 核心规则无未解释失败,并运行一次全量单测 |
| 数据库测试 | 有新迁移时执行正向升级、单版回退和重升;仅对新增约束做定向事务验证 | 完整升级/回退方案和备份点验证 |
| 接口契约 | OpenAPI生成前端类型,检查破坏性变更 | Device/SaaS/Callback契约冻结 |
| 集成测试 | 只组合本次功能实际依赖的服务,不重复跑无关模块 | 类生产依赖组合通过 |
| 端到端测试 | 每个可见业务子批次一条真实身份纵向烟测并精确清理数据 | 家庭P0、通话、记忆、媒体、隐私和运营全流程 |
| 性能测试 | 普通功能批次不重复执行;仅在热点路径、容量参数或并发模型变化时定向运行 | 按需求场景完成容量、瓶颈和扩容报告 |
| 安全测试 | 依赖审计、越权、重放、敏感日志和配置门禁 | 渗透、密钥、镜像、租户隔离和隐私专项 |
| 恢复测试 | Worker重试和中间状态恢复 | 数据库恢复、密钥轮换、供应商故障和删除演练 |
| 页面测试 | TypeScript检查和生产构建;有明显交互或布局变化时才检查对应页面 | 目标浏览器、桌面和平板兼容矩阵 |
每个阶段的“完成”必须同时满足:代码合并、受影响迁移与接口同步、最小充分验证、页面或设备可见结果确认、文档同步和遗留风险登记。真实页面、真机、供应商或恢复验收只在本阶段功能依赖这些环境时执行;尚未取得外部条件的项目明确登记为“本地闭环、外部待验”,不能伪装为已经完成。
## 7. 项目管理机制
### 7.1 迭代节奏
- 采用两周一个迭代;每个迭代只承诺能够形成可演示纵向链路的事项。
- 每周维护需求追踪、风险、接口变更、数据迁移和外部依赖五张清单。
- 每个子批次先冻结接口和数据,再并行开发后端、前端、Agent与测试。
- 每次演示使用端到端场景,不以单模块接口成功代替业务闭环。
### 7.2 评审与变更
- 需求变更先评估业务、隐私、接口、数据库、固件兼容、运维和回滚影响。
- 破坏设备协议的变更发布新接口版本,不根据User-Agent猜测固件能力。
- 生产配置、数据库迁移和高风险运营动作执行双人复核。
- 未经真实环境验证的性能数字、兼容性和供应商能力必须标为待验证。
## 8. 风险与应对
| 风险 | 影响 | 预防与应对 |
|---|---|---|
| 真实供应商账号延期 | 语音、模型、用量和费用无法验收 | 先用模拟供应商完成契约与异常;账号到位后安排专门联调窗口 |
| 硬件或固件延期 | 无法验证音频、弱网、录音和命令 | 提供模拟设备和协议回放;硬件每日构建接入同一OpenAPI |
| 授权或隐私规则不明确 | 返工或合规风险 | 阶段0冻结数据分类、授权范围、保留和删除规则;高风险默认关闭 |
| 供应商事件重复/乱序 | 状态错误、重复费用 | 事件编号+正文摘要幂等、状态单向推进、定期对账 |
| 长事务调用外部服务 | 锁等待和不一致 | 业务意图+Outbox+可重试Worker,不跨网络持有事务 |
| 配置错误影响全部通话 | 大范围不可用或费用异常 | 草稿、审批、离线校验、小范围灰度、上限和一键回滚 |
| 内容候选被误当事实 | 错误记忆进入后续通话 | 来源必需、人工确认、版本化、授权门禁和召回过滤 |
| 删除只完成部分系统 | 隐私风险 | 立即冻结、分子系统状态、可靠重试、最小证明和定期对账 |
| 容量估计偏差 | 高峰不可用或成本失控 | 类生产压测、按模块指标定位、容量余量和分阶段放量 |
| 文档与代码漂移 | 联调失败和运维误操作 | OpenAPI生成、迁移检查和文档状态纳入CI门禁 |
## 9. 当前实施状态与后续顺序
截至2026-08-26,本地工程已经完成阶段1—7的本地开发与验证闭环,并在阿里云单机环境部署标准HTTPS、OIDC、加密本机备份、主机健康签名上报和八项发布候选技术门禁。生产快照不能用演示部署模式、未验证的异地备份、未配置的外部告警或仍在运行的Mock服务冒充可上线。1000活跃通话、50 RPS持续30分钟、500回调/秒、500条SSE、10000媒体分片、100并发删除、隔离数据库恢复、进程/Redis恢复、供应商故障、安全扫描、真实Chrome/Edge兼容、全仓检查、跨功能烟测和无测试残留对账均已完成。后续顺序为:
1. 外部基础设施探针、运营预检台账、联调问题门禁、可归档技术验收快照、试点日/周证据和v3候选证据包均已完成;生产内容安全已具备本地前置拦截、托管HTTP策略、输入/输出双检和安全失败语义;远程CI供应链已具备绑定提交、运行、14项检查、双镜像摘要和三份SBOM的不可豁免门禁。`PILOT`周期、远程CI、真机固件、真实终端RTC六通矩阵、真实Agent生成/Embedding/内容安全质量、真实告警网关、云KMS/HSM、四类生产等价恢复、七类生产基础设施和Safari精简矩阵均不可由本地模拟报告放行。下一步在目标环境逐项替换证据索引中的`PENDING`。
2. OSS异地备份已完成无长期AK的IMDSv2/ECS RAM角色适配;待云账号侧绑定角色、创建私有Bucket后执行真实上传回读验收。随后待真实火山RTC/豆包、大模型/Embedding账号、终端硬件、外部告警接收器和其余生产资源到位,完成阶段8真机联调、家庭试点、预生产恢复与灰度发布。
实际完成证据与未完成项持续维护在[开发状态与门禁记录](development-status.md)中;本计划只定义执行顺序和退出条件,不用计划状态替代测试证据。