# Round 1 开发自查 Checklist 状态:v0.1 模板 所属子项目:`02-P-NBL` Round:Round 1 日期:2026-06-02 输入文档: - [`prd.md`](prd.md) - [`engineering-tasks.md`](engineering-tasks.md) - [`qa-test-plan.md`](qa-test-plan.md) ## 1. 基本信息 | 项目 | 内容 | |---|---| | 分支 | 待填写 | | commit id | 待填写 | | 研发负责人 | 待填写 | | 自查日期 | 待填写 | | App 版本 / build | 待填写 | | macOS 版本 | 待填写 | | 芯片 | 待填写 | ## 2. 变更范围确认 | 检查项 | 结果 | 说明 | |---|---|---| | 未接入 Moonshine | 未检查 | | | 未接入 Parakeet | 未检查 | | | 未接入 Qwen3-ASR | 未检查 | | | 未新增语言 UI | 未检查 | | | 未新增模型选择 UI | 未检查 | | | 未自动迁移旧模型目录 | 未检查 | | | 未删除旧 `models/sensevoice` | 未检查 | | | Wails public API 未改签名 | 未检查 | | ## 3. 架构实现自查 | 检查项 | 结果 | 说明 | |---|---|---| | 已实现 `ModelProfile` | 未检查 | | | 已实现 `ModelRegistry` | 未检查 | | | 已实现 `LanguageProfile` 最小版本 | 未检查 | | | 已实现 `LanguageRegistry` 最小版本 | 未检查 | | | 已实现 `RequiredFileRule` | 未检查 | | | `RequiredFileRule` 支持 `allOf` | 未检查 | | | `RequiredFileRule` 支持 `anyOf` | 未检查 | | | 已实现 `ModelInstallState` | 未检查 | | | 已实现 `models/state.json` 读写 | 未检查 | | | 已实现 `ModelResolver` | 未检查 | | | 已实现 `ResolvedModel` | 未检查 | | | 已实现 `sensevoice-zh` profile | 未检查 | | | 已实现 `EngineFactory` | 未检查 | | | `EngineFactory` 接收 `ResolvedModel` | 未检查 | | | 平台 engine 不再自己猜模型路径 | 未检查 | | ## 4. 兼容性自查 | 检查项 | 结果 | 说明 | |---|---|---| | 旧 `models/sensevoice` 可读取 | 未检查 | | | 新 `models/sensevoice-zh` 可读取 | 未检查 | | | 新旧目录都存在时优先新目录 | 未检查 | | | state 指旧目录时可使用旧目录 | 未检查 | | | state 损坏时可 fallback | 未检查 | | | state 指坏目录时可 fallback | 未检查 | | | `SelectedModelID` 缺失时默认 `sensevoice-zh` | 未检查 | | | `SelectedModelID` 无效时回退 `sensevoice-zh` | 未检查 | | | `ConfigService.GetConfig()` 旧字段保留 | 未检查 | | ## 5. 下载安全自查 | 检查项 | 结果 | 说明 | |---|---|---| | 下载使用临时目录 | 未检查 | | | 解压使用 staging 目录 | 未检查 | | | required files 校验通过后才落盘 | 未检查 | | | 新下载最终进入 `models/sensevoice-zh` | 未检查 | | | 下载失败不删除旧模型 | 未检查 | | | 解压失败不写入完整 state | 未检查 | | | 校验失败不写入完整 state | 未检查 | | | 失败残留不会被误判为已安装 | 未检查 | | | 失败后可重新下载 | 未检查 | | ## 6. Wails / 前端链路自查 | 检查项 | 结果 | 说明 | |---|---|---| | `EngineService.ModelExists() bool` 签名不变 | 未检查 | | | `EngineService.DownloadModel(primaryURL, fallbackURL)` 签名不变 | 未检查 | | | `model:download-progress` payload 不变 | 未检查 | | | `engine:status` 语义不变 | 未检查 | | | Onboarding 下载流程可用 | 未检查 | | | `hardwareInfo` 不显示内部 profile id | 未检查 | | | UI 不出现 Moonshine | 未检查 | | | UI 不出现 Parakeet | 未检查 | | | UI 不出现 Qwen3-ASR | 未检查 | | | UI 不出现语言选择 | 未检查 | | | UI 不出现模型选择 | 未检查 | | ## 7. 自动化测试记录 | 命令 | 结果 | 日志/说明 | |---|---|---| | `cd privatevoice.src && go test ./...` | 未执行 | | | 前端构建/检查命令 | 未执行 | | | 其他 | 未执行 | | ## 8. 手工 smoke 记录 | 场景 | 结果 | 说明 | |---|---|---| | 冷启动 | 未检查 | | | 旧目录已有模型启动 | 未检查 | | | 新用户无模型下载 | 未检查 | | | 一次完整录音识别 | 未检查 | | | replacement 生效 | 未检查 | | | 历史写入 | 未检查 | | | 麦克风权限未授权 | 未检查 | | | 麦克风权限已授权 | 未检查 | | | 断网已有模型识别 | 未检查 | | ## 9. 已知风险 | 风险 | 影响 | 处理建议 | |---|---|---| | 待填写 | 待填写 | 待填写 | ## 10. 移交 QA 结论 研发自查结论: ```text 待填写:可移交 QA / 不可移交 QA ``` 移交说明: ```text 待填写 ```