edit | blame | history | raw

Round 1 QA 交接说明

状态:QA 交接准备稿
所属子项目:02-P-NBL
Round:Round 1
日期:2026-06-02

1. 当前结论

Round 1 代码级研发预检已经通过,且负责人已经确认仓库迁移基线:

privatevoice.src 是正式源码目录,VoiceSnapGo 删除是预期状态。

当前已创建 Round 1 专用分支:

codex/round1-model-profile

当前可进入:

QA 基线提交准备 / QA 预检延续

暂不应进入:

测试包交付
用户验收
发布打包

2. 已完成的研发内容

  • ModelProfile / ModelRegistry
  • LanguageProfile / LanguageRegistry 最小实现
  • RequiredFileRule,支持 AllOf / AnyOf
  • ModelInstallState / models/state.json
  • ModelResolver / ResolvedModel
  • sensevoice-zh profile
  • SelectedModelID 隐藏配置
  • engine.New() 兼容入口改造
  • 平台 engine 使用 ResolvedModel
  • 下载器 staging + 校验 + 安全落盘
  • primary 坏包时尝试 fallback URL
  • state.json 路径逃逸防护
  • macOS provider 使用 profile ProviderOrder
  • engine 初始化失败状态区分
  • EngineService.GetStatus() 前端补查接口
  • Onboarding 处理 need_model + error
  • Round 1 fake fixture

3. 已通过的自动化验证

已执行并通过:

cd privatevoice.src/frontend && npm run build
cd privatevoice.src && go test ./internal/model -count=1
cd privatevoice.src && go test ./... -count=1

说明:

  • 前端构建通过。
  • 前端仍有既有 Svelte a11y warning,不是本轮引入。
  • 真实模型、真机麦克风、断网识别尚未验证。

4. 当前 git 状态处理

已确认并按本轮范围暂存:

  • privatevoice.src/ 正式源码。
  • VoiceSnapGo/ 目录删除。
  • 02-P-NBL/ 子项目文档。
  • .gitignoreprivatevoice.src 生成物忽略规则。

暂未纳入本轮:

  • 根目录 CHANGELOG.md 既有改动。
  • 根目录 TODO.md 既有改动。
  • 根目录 README.md 删除状态。
  • docs/Op/Release/ 等未跟踪目录。

已确认未暂存:

  • privatevoice.src/frontend/node_modules/
  • privatevoice.src/frontend/dist/
  • privatevoice.src/build/local/
  • privatevoice.src/build/appstore-local/
  • .dmg / .app 等构建产物。

5. 正式 QA 前需要解决

正式 QA 仍需要:

  1. 生成固定 commit。
  2. 记录 commit id。
  3. 明确 QA 启动方式:本地命令或测试包。
  4. 执行真机真实模型验证。

6. QA 真机验证仍需执行

不管选择 A 还是 B,正式 QA 都必须执行:

  • 真实 SenseVoice 模型下载。
  • 真实 SenseVoice 初始化。
  • 老用户旧 models/sensevoice 断网升级路径。
  • 新用户 models/sensevoice-zh 下载路径。
  • 麦克风权限未授权 / 已授权。
  • 辅助功能或上屏权限回归。
  • 真实录音识别。
  • replacement。
  • 历史写入。
  • 已有模型时断网启动、录音、识别、写历史。
  • 识别阶段网络观察。
  • 菜单栏、Dock、窗口层级、全屏、Split View smoke。

7. 当前建议

建议当前先不要打测试包。

建议下一步:

固定 commit,然后进入正式 QA。测试包需在 QA 验证通过后按发布规则另行生成。