Files
ring-health-app/app
cuiluzheng 514e5ec9e2 feat: 详情页专属化 + 功能开关联动 + 睡眠时段图
三块改动同批落地,互相咬合(详情页未开启分支依赖开关联动,睡眠页依赖前两者),
拆开提交会得到编译不过的中间态,故合并为一次。

详情页专属化(spec §6.1)
- feature/detail/pages/ 七个指标各一个文件,各自决定放几张卡;
  MetricDetailScreen 只剩页头 + 周/月切换 + 按 metric 分派
- 新增 MetricRangeBar(心率区间条)、MetricThresholdStrip(血氧阈值带)、
  MetricDeviationBar(体温偏离条)、ChartAxisLabels(三图共用的 X 轴标签行)
- MetricBarChart 增 valueRange / bandRange,均值参考线泛化为 referenceLine
- 修:窄区间指标(血氧 95–99、体温 36.1–36.9)柱子被抹平成一样高,整张图无信息量
- 修:头图当前值与趋势图末点各生成各的,改为末点取自 todaySummary

功能开关联动(spec §6.3)
- MetricType 显式带 switchId,null 表示常开(计步、体温)
- MockHealthDataRepository 订阅 functionSettings,概览/历史/睡眠全部由开关算出
- 未开启的指标在概览里为 null;详情页整页走共用的 MetricDisabledCard 且不画图
- 修:血压卡因「未开启」不可点击,说明页成为死代码,用户无从知道怎么开启
- 修:压力开关默认关着而 todaySummary 一直给出 stress = 34

睡眠时段图(spec §6.2)
- 新增 SleepSession:MetricPoint 只装得下一个 Double,装不下「几点到几点」
- 新增 SleepWindowChart:每晚一行,圆角条从入睡横到醒来;横轴锚在 20:00 跨零点
  (不能用 timestamp % 86400000,那是 UTC 余数,东八区会整体平移八小时),
  轴范围由数据算出并取整到刻度线;只用一个颜色,不假装知道分期位置
- 睡眠页撤掉柱状图(条长即时长,与时段图重复),改画时段图 + 分期时长图例
- 今日睡眠时长、睡眠历史点、分期条全部由 SleepSession 派生,不再各生成各的

验证:44 个单测通过;装机核对近 7 天 / 近 30 天 / 关闭睡眠开关三种状态
2026-09-10 16:49:17 +08:00
..