状态:开发自查记录
所属子项目:02-P-NBL
Round:Round 1
日期:2026-06-02
对应文档:
| 项目 | 内容 |
|---|---|
| 分支 | codex/round1-model-profile |
| commit id | 由最终 QA 交接信息填写 |
| 研发负责人 | Codex |
| 自查日期 | 2026-06-02 |
| App 版本 / build | 未打包 |
| macOS 版本 | 当前本机环境 |
| 芯片 | 当前本机环境 |
已完成:
ModelProfile / ModelRegistry。LanguageProfile / LanguageRegistry 最小实现。RequiredFileRule,支持 AllOf / AnyOf。ModelInstallState,支持 models/state.json 读写。ModelResolver,支持 state、新目录、旧目录 fallback。ResolvedModel。sensevoice-zh profile。config.Config 增加隐藏字段 SelectedModelID,默认 sensevoice-zh。engine.New() 保持外部兼容,内部改为通过 resolver 加载 selected/default model。ResolvedModel。models/sensevoice-zh。models/sensevoice-zh 可被 staging 校验通过的新模型安全替换;替换失败会尝试恢复 backup。state.json 中的绝对路径或逃逸 models 根目录的相对路径。ProviderOrder。engine:status = error。EngineService.ModelExists() 和 EngineService.DownloadModel(primaryURL, fallbackURL) 兼容签名。EngineService.GetStatus(),用于前端补查可能早于订阅发生的 engine 状态。engine:status = need_model 且带错误信息的场景。未做,符合 Round 1 非目标:
代码:
privatevoice.src/internal/model/profile.goprivatevoice.src/internal/model/registry.goprivatevoice.src/internal/model/validator.goprivatevoice.src/internal/model/install_state.goprivatevoice.src/internal/model/resolver.goprivatevoice.src/internal/model/downloader.goprivatevoice.src/internal/model/model_test.goprivatevoice.src/internal/engine/engine.goprivatevoice.src/internal/engine/engine_darwin.goprivatevoice.src/internal/engine/engine_linux.goprivatevoice.src/internal/engine/engine_windows.goprivatevoice.src/internal/config/config.goprivatevoice.src/internal/paths/paths.go文档:
02-P-NBL/round-1/prd.md02-P-NBL/round-1/engineering-tasks.md02-P-NBL/round-1/qa-test-plan.md02-P-NBL/round-1/dev-checklist.md02-P-NBL/round-1/dev-checklist-current.md02-P-NBL/round-1/qa-report-template.md02-P-NBL/round-1/README.md| 命令 | 结果 | 说明 |
|---|---|---|
cd privatevoice.src/frontend && npm run build |
通过 | 存在既有 Svelte a11y warning,构建成功 |
cd privatevoice.src && go test ./internal/model -count=1 |
通过 | 强制重跑模型包测试,非缓存 |
cd privatevoice.src && go test ./... -count=1 |
通过 | 强制重跑全量 Go 测试,非缓存;新 checkout 需先完成前端构建以生成 frontend/dist |
前端构建警告:
UpdateDialog.svelte 的 dialog focus / noninteractive listener 警告。ToggleSwitch.svelte 的 button aria label 警告。这些警告不由本轮改动引入,本轮未修改相关组件。
sensevoice-zh。AnyOf 规则允许 model.onnx。model.int8.onnx 优先于 model.onnx。tokens.txt 时校验失败。models/sensevoice 可解析。models/sensevoice-zh。state.json 时 fallback 到旧目录。models 根目录的路径时被拒绝并 fallback。installed_incomplete。models/sensevoice-zh。以下需要 QA 在真机或测试包阶段执行:
开发自查结论:
可进入 QA 预检。
说明:
代码级自动化测试和前端构建已通过,但尚未打包,也尚未执行真机真实模型回归。
根据项目交付门禁,本状态不能直接交付用户验收,需要 QA 按 qa-test-plan.md 继续验证。