docs: 补充 M1 验收记录与页面清单

Task 14 收尾(几乎不含生产代码改动):

- 清扫三条孤儿字符串:`placeholder_workout_history` / `placeholder_device_settings` /
  `placeholder_metric_detail`。grep 全 `app/src` 确认三者均无调用点后删除;
  顺带逐条核对了 `strings.xml` 其余字符串,除 manifest 引用的 `app_name` 外全部有调用点,
  未发现别的漏接线(不是顺手一起删,是先查清才决定)。
- 按 ledger R31,给 `MockRingDeviceRepository.setFunctionEnabled` 补中文 KDoc,
  写明「必须返回新列表」及其原因(`DeviceViewModel.stateIn(initialValue=…)` 在构造时
  冻结 List 引用,原地改写会让 `DeviceViewModelTest` 第一条用例退化成自我确认)。

验证:`./gradlew :app:testDebugUnitTest` 21 项全绿(FormattersTest 7 + MockDataProviderTest 5
+ HomeViewModelTest 1 + WorkoutViewModelTest 1 + DeviceViewModelTest 2 +
MetricDetailViewModelTest 3 + RoutesTest 2);`./gradlew clean assembleDebug` BUILD SUCCESSFUL,
产物 app-debug.apk(18,907,329 字节)。

新增 `docs/verification-m1.md` 记录 M1 验收。**人工验收全表标注「未执行 —— 无设备」**:
本机无模拟器镜像、无连接真机(`adb devices` 为空;`~/.android/avd` 下两个 AVD 只是指向
已删除旧 SDK 的空壳,不可启动),IDE Preview 亦无法打开。记录中含覆盖缺口声明:
M1 全部运行时行为目前只有编译期与单元测试保证,`assembleDebug` 成功不代表界面正确或不会崩溃。

README 补 M1 页面清单表,路由与 `core/navigation/Routes.kt` 逐条核对一致;
并核对 `profile_check_update_desc` 的手抄版本号 `0.1.0` 与 build.gradle.kts 的
`versionName` 一致(计划 3682 行交办项)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
2026-09-10 12:54:40 +08:00
co-authored by Claude Code
parent 0e17502334
commit 9c233e5750
4 changed files with 120 additions and 3 deletions
+15
View File
@@ -5,6 +5,21 @@
- 设计文档:见 `ring-health-docs` 仓库 `superpowers/specs/`
- 当前阶段:M1 静态页面(数据来自 Mock,未接入蓝牙 SDK)
## 页面清单(M1)
| 页面 | 路由 |
|---|---|
| 健康首页 | `home` |
| 运动 | `workout` |
| 运动历史 | `workout/history` |
| 设备 | `device` |
| 设备设置 | `device/settings` |
| 我的 | `profile` |
| 指标详情(步数/心率/睡眠/血氧/压力/体温/血压) | `detail/{metric}` |
> 页面路由的唯一定义处是 `core/navigation/Routes.kt`,上表与其保持一致。
> M1 的验收状态见 `docs/verification-m1.md`。
## 构建
```bash