数据结构设计:手表采集数据的完整分类与仿真

v1.0 · 2026-07-05 · 配套文件:仿真数据生成器.py(改参数重跑)、仿真数据_90天.json(129KB,可直接被原型引用)

一、设计原则

分类对齐功能架构。数据块按脑图的五个域切:活动、心脏、睡眠、压力/能量、准备度。设计任何页面时,从对应数据块直接取数,不用跨块拼。
四层时间粒度。逐小时(当天曲线)→ 每日(今天页/日历)→ 每周(趋势页)→ 事件(异常预警/故事线)。原型要什么粒度就取哪层,不用自己聚合。
派生指标带因子。准备度、睡眠分这类合成分数都附带因子拆解(factors),支撑「分数 → 点开看为什么」的三层纵深设计。
仿真要像真人。数据不是随机数,是一个有生活规律的人:工作日久坐、周五晚睡、周末补觉,外加三条故事线(见第四节)。这样趋势图、预警、晨报文案都有真东西可讲。

二、总体结构

仿真数据_90天.json ├── meta 版本 / 生成时间 / 随机种子 / 周期 ├── user_profile 档案:陈砚,34岁男,175cm/72kg,产品经理,目标 10K 进 55 分 ├── device 设备:型号 / 固件 / 佩戴手 / 传感器清单 ├── events 故事线事件:出差 / 感冒 / 训练周期(预警与注释的数据源) ├── daily[90] 每日记录(下表 ↓,页面主数据源) ├── workouts[35] 运动记录(跑步/长距离跑/骑行/力量) ├── weekly_trends[13] 周聚合:VO2Max / 周负荷 / 均值类趋势 └── intraday_hourly_last7d[7] 最近 7 天逐小时步数与心率(全天曲线用)

三、字段字典

daily[] · 每日记录(5 个子块)

子块字段说明
activity
活动
steps / distance_km / floors / active_kcal / total_kcal / exercise_min / stand_hours基础活动量,对应脑图「1 活动与目标」
move_goal_kcal / rings_closed{move,exercise,stand}三环目标与合环结果,直接驱动圆环组件
heart
心脏
resting_hr / min_hr / max_hr / avg_hr / hrv_night_sdnn_ms静息心率与夜间 HRV 是准备度和异常预警的核心输入
sleep
睡眠
bedtime / wake_time / duration_min / stages_min{deep,core,rem,awake}阶段数据画 hypnogram 甘特图
efficiency_pct / score / respiratory_rate / spo2_avg_pct / wrist_temp_deviation_c得分 + 夜间体征(呼吸率/血氧/腕温偏差),对应 Vitals 体征汇总
stress / body_batterystress{avg,max,relax_min} · body_battery{wake,evening_low}压力 0-100;身体电量取醒来值和晚间低点两个锚点
readiness
准备度
score / level(充沛·良好·一般·需休息) / factors{sleep,hrv,rhr,load}0-100 合成分 + 四因子拆解,驱动晨报和「为什么」页

另有 date / day_of_week / context_tag(workday · weekend · travel · sick),context_tag 让测试用例能精准定位到特定场景日。

workouts[] · 运动记录

字段说明
id / date / start / type / duration_min类型:跑步 · 跑步(长距离) · 骑行 · 力量训练
distance_km / avg_pace / avg_cadence / elevation_gain_m跑骑类字段,力量训练为 null——原型要处理空态
avg_hr / max_hr / hr_zones_min[5]五区间时长,画区间彩条
active_kcal / training_effect_aerobic(0-5) / training_load训练效果与负荷,喂给「训练状态」页

weekly_trends[] · 周趋势

字段说明
vo2max / training_load_7d / workout_count / total_distance_km训练侧趋势
avg_resting_hr / avg_hrv / avg_sleep_score / avg_steps健康侧趋势,画周/月对比

四、三条故事线(趋势数据的「剧情」)

故事线时间数据表现支撑的设计场景
训练进步贯穿 90 天VO2Max 41.1→44.4,静息心率周均 57.4→53.2,HRV 47→62,长距离配速 6'37"→5'36"趋势页的上升曲线、个人纪录、周报「这三个月你变强了」
出差打断5/06 - 5/09晚睡少睡、步数 1.1-1.6 万、零训练、压力偏高就寝规律提醒、连胜中断的容错设计
感冒一周5/28 - 6/03RHR 升到 60-62、HRV 大跌、腕温 +0.3~0.5°C、准备度掉到 35-46、停训体征偏离基线预警、晨报关怀文案、恢复后负荷重建议

平时的底色规律:工作日 7-9k 步 + 23:30 前后就寝,周五晚睡到零点后,周末补觉多睡约 1 小时,周二/四晚跑 + 周六长距离 + 周日偶尔骑行。

五、原型怎么用这份数据

1. 原型 HTML 里直接 <script src="仿真数据_90天.json 转 js"> 或把 JSON 内联成常量(本地 file:// 下 fetch 会被拦,内联最稳)。

2. 「今天页」取 daily 最后一条;「趋势页」取 weekly_trends;「全天曲线」取 intraday_hourly_last7d;「预警/晨报文案」拿 events + context_tag 找剧情日。

3. 要换剧本(比如加「马拉松备赛冲刺月」),改 仿真数据生成器.py 顶部的 STORY 参数区重跑即可,种子固定为 42,同参数产出可复现。