状态:功能性 QA PASS,可进入下一步交付门禁
日期:2026-06-03
测试人:Codex
| 项目 | 内容 |
|---|---|
| worktree | /Users/ar/Projects/VoiceSnap-2.1.1-Round2 |
| branch | codex/round2-language-settings |
| 实现基线 commit | 516375d |
| 最终测试包 commit | 以 RELEASE_MANIFEST.md 为准 |
| version | 2.1.20 |
| build | 20260603.1145 |
| 本地 App | privatevoice.src/build/local/arm64/PrivateVoice Input.app |
| 本地 DMG | 最终路径以 RELEASE_MANIFEST.md 为准 |
| DMG SHA256 | 最终 SHA256 以 RELEASE_MANIFEST.md 为准 |
| 项目 | 结果 | 证据 |
|---|---|---|
npm run build |
PASS | logs/npm-run-build-20260603.log |
go test ./... -count=1 |
PASS | logs/go-test-all-20260603.log |
| 本地 App 构建与签名 | PASS | logs/qa-runtime/build-local-round2-20260603.014931.log |
| 本地 DMG verify | PASS | logs/qa-runtime/build-local-round2-20260603.014931.log |
说明:前端构建仍有既有 Svelte a11y warning,来源为旧组件 UpdateDialog.svelte、ToggleSwitch.svelte,本轮未新增阻断。
| ID | 场景 | 结果 | 证据 |
|---|---|---|---|
| R2-QA-001 | 老配置升级,无 LanguageMode / LanguageID |
PASS | baseline config 无语言字段;Round 2 App 正常启动 |
| R2-QA-002 | 中文系统 auto | PASS | config.json 默认 LanguageMode=auto、LanguageID=zh-CN |
| R2-QA-003 | English 系统 auto | PASS by automated test | go test ./... 覆盖 detector normalize |
| R2-QA-004 | 其他系统语言 auto fallback | PASS by automated test | go test ./... 覆盖 fallback 到 English |
| R2-QA-005 | 手动中文 | PASS | round2-screen-20260603.014931-zh-manual.png;配置写入 manual/zh-CN |
| R2-QA-006 | 手动 English | PASS | round2-screen-20260603.014931-english6.png;配置写入 manual/en |
| R2-QA-007 | 切回自动 | PASS | round2-screen-20260603.014931-chinese.png;配置写入 auto/zh-CN |
| R2-QA-008 | 重启持久化 | PASS | 重启后配置仍为 manual/zh-CN |
| R2-QA-009 | 非法 LanguageMode fallback | PASS by automated test | go test ./... |
| R2-QA-010 | 非法 LanguageID fallback | PASS by automated test | go test ./... |
| R2-QA-011 | 语言切换不改模型 | PASS | SelectedModelID 始终为 sensevoice-zh |
| R2-QA-012 | 已有模型时语言切换不下载模型 | PASS | 真实用户模型 hash 不变;日志未出现因语言切换触发下载 |
| R2-QA-013 | 语言切换不删模型 | PASS | model.int8.onnx、tokens.txt hash 与 baseline 一致 |
| R2-QA-014 | 词库保留 | PASS | userdict.json hash 与 baseline 一致;replacement 数量 149 |
| R2-QA-015 | 历史保留 | PASS | history.json hash 与 baseline 一致;entries 数量 1708 |
| R2-QA-016 | 热键保留 | PASS | config 热键字段未丢失;断网真实语音输入已用 R-Alt 触发成功 |
| R2-QA-017 | 断网已有模型识别 | PASS | logs/qa-runtime/offline-voice-final-20260603.014931.log;断网期间识别并写入 history |
| R2-QA-018 | UI 不暴露新模型 | PASS | 设置页只显示现有 SenseVoice 引擎 |
| R2-QA-019 | English UI 文案 | PASS | round2-screen-20260603.014931-english6.png |
| R2-QA-020 | 中文 UI 文案 | PASS | round2-screen-20260603.014931-zh-manual.png |
测试前已备份真实用户数据:
/Users/ar/Projects/VoiceSnap-2.1.1-Round2/QA-backups/round2-pre-qa-20260603.014931
语言切换阶段完成后,以下文件与 baseline SHA256 完全一致:
userdict.jsonhistory.jsonmodels/sensevoice/model.int8.onnxmodels/sensevoice/tokens.txtconfig.json 有预期变化:新增/写入 LanguageMode、LanguageID、SelectedModelID。
断网真实语音输入复测后,history.json 出现预期变化:新增一条识别记录。
使用临时 HOME 启动本地 App,未挪动真实 App Support:
logs/qa-runtime/new-user-home-20260603.014931
结果:
LanguageMode=auto、LanguageID=zh-CN、SelectedModelID=sensevoice-zh。证据:logs/qa-runtime/offline-start-check-20260603.014931.log
结果:
curl https://www.apple.com 返回 Could not resolve host,确认断网。ASR engine ready: SenseVoice · CoreML (Apple Neural Engine)。证据:logs/qa-runtime/offline-voice-final-20260603.014931.log
结果:
Could not resolve host: www.apple.com。R-Alt 说测试句。这是 mac 电脑用 SenseVoice 做离线识别。history.json 条目数从 1710 增加到 1711。history.json 最新条目 entries[0] 为:这是 mac 电脑用 SenseVoice 做离线识别。无。
Round 2 的语言设置、i18n 切换、持久化、新用户默认值、老用户数据保护、模型不破坏、断网启动均通过。
Round 2 功能性 QA PASS。