feat(timeline): merge bp.systolic + bp.diastolic into single entry

- TimelineEntry.from(indicators:) 批处理:找 bp.systolic 配对同 capturedAt
  (±5s)的 bp.diastolic,合并成 '血压 120/80 mmHg' 一行
- 未配对的 systolic 单独退回 from(indicator:)
- 非 bp.* series 不动
- ArchiveListView + HomeView 改用 from(indicators:) 批处理
- 6 个新测试覆盖配对/未配对/异常标记/非 bp 不动/不同时间不合并
This commit is contained in:
link2026
2026-05-26 07:50:00 +08:00
parent 0f38bf585b
commit e2fb631b96
4 changed files with 159 additions and 2 deletions

View File

@@ -19,7 +19,7 @@ struct ArchiveListView: View {
@MainActor
private var allEntries: [TimelineEntry] {
let mapped =
indicators.map(TimelineEntry.from(indicator:)) +
TimelineEntry.from(indicators: indicators) +
reports.map(TimelineEntry.from(report:)) +
diaries.map(TimelineEntry.from(diary:)) +
symptoms.map(TimelineEntry.from(symptom:))