# Round 1 总 To Do List 状态: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) - [`dev-checklist-current.md`](dev-checklist-current.md) ## 1. 当前状态 Round 1 已完成: - PRD v0.2 已确认。 - 研发任务拆解已完成。 - QA 测试计划已完成。 - 开发自查模板已完成。 - QA 报告模板已完成。 - 第一轮核心代码改造已完成。 - 代码复核发现的问题已处理一轮。 - QA 预检记录已完成。 - Go 单元测试已通过。 - 前端构建已通过。 当前状态: ```text 可进入 QA 预检;尚不能直接交付用户验收。 ``` ## 2. 产品 To Do | ID | 事项 | 状态 | 负责人 | 说明 | |---|---|---|---|---| | P-01 | 确认 Round 1 产品边界 | 已完成 | 产品 | 不接新模型,不做新 UI | | P-02 | 确认老用户兼容底线 | 已完成 | 产品 | 旧模型目录必须可用 | | P-03 | 确认离线承诺底线 | 已完成 | 产品 | 已有模型时识别不得联网 | | P-04 | 确认 QA 发现 P0/P1 时阻断交付 | 待确认 | 产品/QA | 进入 QA 后执行 | | P-05 | QA 通过后决定是否进入 Round 2 | 待确认 | 产品 | Round 1 验收后再定 | ## 3. 研发 To Do | ID | 事项 | 状态 | 负责人 | 说明 | |---|---|---|---|---| | DEV-01 | `ModelProfile` / `ModelRegistry` | 已完成 | 研发 | 已注册 `sensevoice-zh` | | DEV-02 | `LanguageProfile` / `LanguageRegistry` 最小实现 | 已完成 | 研发 | 已注册 `zh-CN` | | DEV-03 | `RequiredFileRule` 支持 `AllOf` / `AnyOf` | 已完成 | 研发 | 已覆盖单元测试 | | DEV-04 | `ModelInstallState` / `models/state.json` | 已完成 | 研发 | 已支持读写 | | DEV-05 | `ModelResolver` / `ResolvedModel` | 已完成 | 研发 | 支持 state、新目录、旧目录 fallback | | DEV-06 | `SelectedModelID` 隐藏配置 | 已完成 | 研发 | 默认 `sensevoice-zh` | | DEV-07 | `EngineFactory` 改造 | 已完成 | 研发 | `engine.New()` 保持兼容 | | DEV-08 | 下载器 staging + 校验 + 安全落盘 | 已完成 | 研发 | 新下载进入 `models/sensevoice-zh` | | DEV-09 | Wails public API 兼容 | 已完成 | 研发 | 旧 `ModelExists` / `DownloadModel` 签名保留 | | DEV-10 | Go 单元测试 | 已完成 | 研发 | `go test ./...` 通过 | | DEV-11 | 前端构建验证 | 已完成 | 研发 | `npm run build` 通过,有既有 a11y warning | | DEV-12 | primary 坏包时尝试 fallback | 已完成 | 研发 | fallback 覆盖下载、解压、校验全流程 | | DEV-13 | state path 限制在 `models` 根目录内 | 已完成 | 研发 | 拒绝绝对路径和 `..` 逃逸 | | DEV-14 | macOS provider 使用 profile `ProviderOrder` | 已完成 | 研发 | Round 3/4 减少返工 | | DEV-15 | engine 初始化失败状态明确 | 已完成 | 研发 | 结构存在但不可加载时发 `error` | | DEV-16 | Onboarding 显示 `need_model + error` | 已完成 | 研发 | 避免坏模型初始化失败时卡住 | | DEV-17 | 用户触发下载可安全替换 `sensevoice-zh` | 已完成 | 研发 | 替换失败恢复 backup,不触碰旧目录 | | DEV-18 | 增加前端 engine status 补查 | 已完成 | 研发 | 避免 ready/error 事件早于订阅 | | DEV-19 | 真实模型下载 smoke | 待做 | 研发/QA | 需要真实网络和模型包 | | DEV-20 | 真实模型初始化 smoke | 待做 | 研发/QA | 需要本机真实模型 | | DEV-21 | 如 QA 发现问题,修复并回归 | 待做 | 研发 | QA 后执行 | ## 4. QA To Do | ID | 事项 | 状态 | 负责人 | 说明 | |---|---|---|---|---| | QA-01 | QA 预检开发自查材料 | 已完成 | QA/研发 | 已形成 `qa-precheck-current.md` | | QA-02 | 准备旧目录完整模型场景 | 待做 | QA | `models/sensevoice` | | QA-03 | 准备新目录完整模型场景 | 待做 | QA | `models/sensevoice-zh` | | QA-04 | 准备 state 非法 JSON 场景 | 待做 | QA | 验证 fallback | | QA-05 | 准备 state 指坏目录场景 | 待做 | QA | 验证 fallback 到旧目录 | | QA-06 | 准备缺 tokens 场景 | 待做 | QA | 不得初始化 engine | | QA-07 | 准备缺模型文件场景 | 待做 | QA | 不得初始化 engine | | QA-08 | 准备 0 字节文件场景 | 待做 | QA | 不得判定可用 | | QA-09 | 验证老用户旧目录升级路径 | 待做 | QA | 断网也要可用 | | QA-10 | 验证新用户无模型下载路径 | 待做 | QA | 新下载到 `sensevoice-zh` | | QA-11 | 验证下载失败不破坏旧模型 | 待做 | QA | 失败后旧模型仍可用 | | QA-12 | 验证解压失败不写完整 state | 待做 | QA | 需要损坏压缩包 | | QA-13 | 验证 Wails API 兼容 | 待做 | QA | 前端启动链路不破 | | QA-14 | 验证 UI 不暴露新能力 | 待做 | QA | 不出现 Moonshine/Parakeet/Qwen3/语言选择 | | QA-15 | 验证真实录音识别 | 待做 | QA | 真机真实麦克风 | | QA-16 | 验证 replacement 生效 | 待做 | QA | 真实识别链路 | | QA-17 | 验证历史写入 | 待做 | QA | 真实识别链路 | | QA-18 | 验证麦克风权限未授权/已授权 | 待做 | QA | 权限路径回归 | | QA-19 | 验证断网已有模型可用 | 待做 | QA | 冷启动、识别、历史写入 | | QA-20 | 网络观察确认识别阶段无上传 | 待做 | QA | 离线承诺 | | QA-21 | macOS 菜单栏/Dock/窗口层级 smoke | 待做 | QA | 真实使用回归 | | QA-22 | 输出 QA 报告 | 待做 | QA | 使用 `qa-report-template.md` | ## 5. 交付 To Do | ID | 事项 | 状态 | 负责人 | 说明 | |---|---|---|---|---| | REL-01 | 开发自查记录 | 已完成 | 研发 | `dev-checklist-current.md` | | REL-02 | QA 预检记录 | 已完成 | QA/研发 | `qa-precheck-current.md` | | REL-03 | QA 报告 | 待做 | QA | QA 完成后输出 | | REL-04 | P0/P1 缺陷清零 | 待做 | 研发/QA | 发布前必须完成 | | REL-05 | P2 缺陷处理结论 | 待做 | 产品/研发/QA | 修复或明确接受 | | REL-06 | 测试包打包 | 待做 | 研发 | QA 通过后按发布规则执行 | | REL-07 | 版本号和 build 编号更新 | 待做 | 研发 | 打包前执行 | | REL-08 | `CHANGELOG.md` 更新 | 待做 | 研发 | 打包前执行 | | REL-09 | 生成 macOS `.dmg` | 待做 | 研发 | QA 通过后执行 | | REL-10 | 用户验收 | 待做 | 产品/用户 | QA 通过并交付测试包后执行 | ## 6. 当前阻塞项 目前没有产品决策阻塞。 当前主要阻塞在 QA 阶段: - 需要真实模型环境。 - 需要真机麦克风权限验证。 - 需要断网验证。 - 需要网络观察验证离线承诺。 - 需要真实 macOS 使用 smoke。 ## 7. 下一步建议 按顺序执行: 1. QA 按 [`qa-test-plan.md`](qa-test-plan.md) 做预检。 2. QA 记录结果到 `qa-report-YYYYMMDD.md`。 3. 研发修复 QA 发现的问题。 4. QA 回归验证。 5. QA 通过后进入测试包打包流程。