From df8fa07327102cd7ec490151805610d1b17271a5 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 03 Jun 2026 14:16:56 +0800
Subject: [PATCH] Add Round 3 QA report

---
 02-P-NBL/round-3/todo-list.md         |   24 ++++++------
 02-P-NBL/round-3/qa-report-current.md |   91 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 103 insertions(+), 12 deletions(-)

diff --git a/02-P-NBL/round-3/qa-report-current.md b/02-P-NBL/round-3/qa-report-current.md
new file mode 100644
index 0000000..7ddc09e
--- /dev/null
+++ b/02-P-NBL/round-3/qa-report-current.md
@@ -0,0 +1,91 @@
+# Round 3 QA 报告:Moonshine English 默认模型
+
+状态:核心真实 QA 通过;下载失败保护未测
+所属子项目:`02-P-NBL`
+Round:Round 3
+日期:2026-06-03
+测试包:`PrivateVoice Input 2.1.21 build20260603.1327`
+工作分支:`codex/round3-moonshine-english`
+源码 tag:`v2.1.21-build20260603.1327`
+
+## 1. 测试环境
+
+- macOS 真机
+- App 路径:`/Applications/PrivateVoice Input.app`
+- App 数据目录:`/Users/ar/Library/Application Support/PrivateVoice Input`
+- 用户数据备份:`/Users/ar/Library/Application Support/PrivateVoice Input QA Backups/20260603-140249`
+- 网络:Wi-Fi `en0`
+- 麦克风:`MacBook Air麦克风`
+
+## 2. 测试产物
+
+- Release 目录:`/Users/ar/Projects/VoiceSnap-2.1.1-Round3/Release/PrivateVoice-Input-2.1.21-build20260603.1327`
+- arm64 DMG:`PrivateVoice Input-2.1.21-build20260603.1327-arm64-local.dmg`
+- x86_64 DMG:`PrivateVoice Input-2.1.21-build20260603.1327-x86_64-local.dmg`
+- Manifest:`RELEASE_MANIFEST.md`
+
+## 3. 结果总览
+
+| 用例 | 结果 | 证据 |
+|---|---|---|
+| English 语言版本默认 Moonshine | PASS | UI 显示 `Moonshine English · CPU` |
+| Moonshine 缺模型入口 | PASS | 临时移走 `moonshine-en` 后进入 `First Time Setup` 并自动下载 Moonshine |
+| Moonshine 真实下载、解包、加载 | PASS | `moonshine-download-load.log`,引擎加载 `Moonshine English · CPU` |
+| English 真实语音识别 | PASS | 日志识别 `This is an English offline dictation test.` |
+| English 断网识别 | PASS | `scutil --nwi` 显示 `Not Reachable`,日志识别 `Of line recognition, steel works without internet.` |
+| English -> 中文语言切换 | PASS | UI 切换为中文,配置 `LanguageID=zh-CN` |
+| 中文 SenseVoice 回归 | PASS | UI 显示 `SenseVoice · CoreML (Apple Neural Engine)`,日志识别 `这是中文离线识别测试。` |
+| 用户数据保护 | PASS | 测试前完整备份,测试后 Moonshine 和 SenseVoice 模型均恢复 |
+| 下载失败保护 | NOT RUN | 本次未故意制造网络中断/坏 URL 下载失败场景 |
+
+## 4. 关键日志证据
+
+Moonshine 加载:
+
+```text
+Loading model moonshine-en backend=moonshine from /Users/ar/Library/Application Support/PrivateVoice Input/models/moonshine-en
+Engine initialized: Moonshine English · CPU
+ASR engine ready: Moonshine English · CPU
+```
+
+English 在线识别:
+
+```text
+Recognized: This is an English offline dictation test.
+```
+
+English 断网识别:
+
+```text
+Network information
+No IPv4 states found
+REACH : flags 0x00000000 (Not Reachable)
+Recognized: Of line recognition, steel works without internet.
+```
+
+中文 SenseVoice 回归:
+
+```text
+Loading model sensevoice-zh backend=sensevoice from /Users/ar/Library/Application Support/PrivateVoice Input/models/sensevoice
+Engine initialized: SenseVoice · CoreML (Apple Neural Engine)
+Recognized: 这是中文离线识别测试。
+```
+
+## 5. 观察项
+
+- Moonshine 对 `offline` 有一次识别为 `of line`,对 `still` 有一次识别为 `steel`。这属于模型准确率观察项,不影响离线识别链路验收。
+- 中文回归后日志中出现 Moonshine 和 SenseVoice 初始化交错记录。用户确认这是手动点击语言切换造成;最终 UI 和最后生效日志均为 `SenseVoice · CoreML (Apple Neural Engine)`,不作为缺陷。
+- TextEdit 多次回到打开面板,需要重新点 `新建文稿`。这是 TextEdit 行为,不是 PrivateVoice 缺陷。
+
+## 6. 结论
+
+Round 3 核心真实 QA 通过:
+
+- English 可使用 Moonshine English 离线识别。
+- 断网状态下 English 识别仍可工作。
+- 切回中文后 SenseVoice 可正常加载和识别。
+- 中英文模型切换没有破坏已有模型和用户配置。
+
+剩余未测项:
+
+- 下载失败保护。建议如需完整 QA PASS,再单独做坏 URL 或网络中断下载失败测试。
diff --git a/02-P-NBL/round-3/todo-list.md b/02-P-NBL/round-3/todo-list.md
index 294f22a..c5c503e 100644
--- a/02-P-NBL/round-3/todo-list.md
+++ b/02-P-NBL/round-3/todo-list.md
@@ -41,23 +41,23 @@
 ## 4. QA
 
 - [x] 自动化/半自动 QA
-- [ ] English 新用户 Moonshine 下载和识别
-- [ ] 中文老用户 SenseVoice 回归
-- [ ] 语言切换模型同步
-- [ ] 断网英文识别
+- [x] English 新用户 Moonshine 下载和识别
+- [x] 中文老用户 SenseVoice 回归
+- [x] 语言切换模型同步
+- [x] 断网英文识别
 - [ ] 下载失败保护
-- [ ] 缺文件保护
-- [ ] QA 报告
+- [x] 缺文件保护
+- [x] QA 报告
 
 ## 5. 交付
 
-- [ ] 用户验收候选包
+- [x] 用户验收候选包
 - [ ] 用户验收
-- [ ] 测试包版本递增
-- [ ] 生成 `.dmg`
-- [ ] 生成 `RELEASE_MANIFEST.md`
-- [ ] 验证 `.dmg`
-- [ ] tag
+- [x] 测试包版本递增
+- [x] 生成 `.dmg`
+- [x] 生成 `RELEASE_MANIFEST.md`
+- [x] 验证 `.dmg`
+- [x] tag
 
 ## 6. 暂缓记录:后续 UI 与品牌命名调整
 

--
Gitblit v1.9.3