Commit Graph
13 Commits
Author SHA1 Message Date
cuiluzheng 5c7afbbea3 docs: Task 9 派发前修正四处(ledger R25)
- 删除两条无消费者的新字符串 workout_detail_duration / workout_history
- WorkoutHistoryScreen 先判 loading 再判空,避免闪「暂无运动记录」
- 补 WorkoutViewModelTest(TDD),Task 9 步骤重编号为 Step 1..9
- 记录日期+时间插值不违反文案约束,避免复审误报
2026-09-10 11:11:03 +08:00
cuiluzheng f23580de47 docs: 删除不可编译的 lazy.item import(ledger R24)
item 是 LazyListScope 的成员函数而非顶层扩展,无法 import;
该行单独即可导致 Unresolved reference。仅 items(List<T>) 需要 import。
由 Task 8 实现者 javap 反编译产物核实后推翻我的核验结论。
2026-09-10 11:04:13 +08:00
cuiluzheng bcf5d07df8 docs: 修正 Task 8 的硬编码单位与验证步骤(ledger R23)
- unit = "mmHg" 改为 stringResource(R.string.unit_mmhg),
  与同列表内次/分、%、°C 的处理保持一致,新增 unit_mmhg 资源
- Step 8 标题与 Expected 去掉「真机验证」,界面验证按 R21 顺延到 Task 14
2026-09-10 10:59:20 +08:00
cuiluzheng f35cf329ba docs: 导航骨架复审修订(ledger R21/R22)
- R21:移除全部 Task 的 installDebug(本机无模拟器/真机),Task 14 人工验收
  明确标注「未执行 —— 无设备」,不得当成已通过
- R22:Task 7 的 5 条 Minor 折进其真正可观测的任务 ——
  Task 9 加 tabRouteFor 归属映射 + DETAIL_PATTERN 常量插值,
  Task 12 把 ?: MetricType.STEP 换成 requireNotNull 并补 RoutesTest(纯 JVM)
2026-09-10 10:58:04 +08:00
cuiluzheng 3d39fd3445 docs: 让 R17 的时钟注入真正可测 + 记录刷新语义(ledger R20)
- MockDataProviderTest 增加两条绝对时间戳断言;只比较 first==second 时,
  两次相邻调用几乎总在同一毫秒内,去掉时钟注入测试照样通过
- MockRingDeviceRepository 类级 KDoc 写明「刷新以 suspend 返回表示完成,
  不靠发射新状态」,避免调用方写成等待下一个不同发射而在 M1 永久挂起
2026-09-10 10:47:43 +08:00
cuiluzheng e43b76efab docs: 修正 Task 7 的 Produces 契约(ledger R19)
Interfaces 段原写 HomeScreen(onOpenDetail, onOpenWorkoutHistory),
但全计划无 onOpenWorkoutHistory 的任何调用点,Task 8 产出的是
HomeScreen(onOpenDetail, modifier, viewModel)。同时 WorkoutScreen/DeviceScreen
的 onOpenHistory/onOpenSettings 实为 Task 9/10 才加入,本任务只注册路由、无人跳转。
2026-09-10 10:45:06 +08:00
cuiluzheng c71c3c32f6 docs: Mock 数据源注入时钟,消除 flaky 断言(ledger R17)
- MockDataProvider 增加 now: () -> Long = System::currentTimeMillis
- metricHistory / workouts 改用 now(),使「确定性」承诺成立
- 测试注入 FIXED_NOW,并补一条时间戳严格递增的断言
2026-09-10 10:40:55 +08:00
cuiluzheng 42bc9fe12e docs: 修正格式化层与占位页的硬编码文案(ledger R13/R14)
- formatCalories 不再拼接「千卡」(与 R.string.home_calories_label 重复),
  workout_detail_calories 改为「消耗 %1$s 千卡」
- stressLevelLabel(String) 改为 @StringRes stressLevelLabelRes(Int),描述进 strings.xml
- Global Constraints 写明唯一豁免(formatSleepDuration/formatDuration 的复合时长值)及判据
- Task 7 的 7 个占位 Composable 改用 stringResource,补齐 import 与 3 条占位文案
2026-09-10 10:32:55 +08:00
cuiluzheng bf983833c8 docs: 豁免设计系统 token 的命名约束(R10) 2026-09-10 10:22:21 +08:00
cuiluzheng ac9019d56a docs: 修正计划示例中的硬编码文案(R9),补齐 stringResource 用法与警示 2026-09-10 10:18:54 +08:00
cuiluzheng 616bd1aea2 docs: 按 pre-flight 冲突扫描修订 M0+M1 计划(R1-R4) 2026-09-10 09:07:56 +08:00
cuiluzheng a1bc2322f3 docs: 新增 M0+M1 实施计划(14 个任务,含 TDD 步骤) 2026-09-10 09:01:41 +08:00
cuiluzhengandClaude Code b8d217e115 docs: 新增智能戒指健康 App 阶段一设计文档
- 仓库拆分:ring-health-app / ring-health-api(阶段一仅契约)
- 技术选型:Kotlin + Compose,工具链钉死本机已装版本
- 架构分层、页面地图、Mock 策略与里程碑 M0-M5
- 厂商 SDK 隔离复用策略(原样 vendor + 自写适配层)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-10 08:43:06 +08:00