today_controller.dart 3.02 KB
import 'package:doublefeel_flutter/core/services/user_state_service.dart';
import 'package:get/get.dart';

/// 每日行动 item 数据模型
class DailyActionItem {
  final String label;
  final String value;
  final String unit;
  final String? subValue;
  final String? subUnit;

  const DailyActionItem({
    required this.label,
    required this.value,
    required this.unit,
    this.subValue,
    this.subUnit,
  });
}

/// HRV 趋势数据点
class HrvDataPoint {
  final double hour; // 0.0 ~ 24.0
  final double hrv;

  const HrvDataPoint({required this.hour, required this.hrv});
}

/// HRV tooltip 标注点
class HrvAnnotation {
  final double hour;
  final double hrv;
  final String stateLabel; // e.g. "状态优秀"
  final String detail; // e.g. "HRV 23ms · 11:28"

  const HrvAnnotation({
    required this.hour,
    required this.hrv,
    required this.stateLabel,
    required this.detail,
  });
}

class TodayController extends GetxController {
  final UserStateService userStateService = Get.find<UserStateService>();

  // ── 压力状态 ─────────────────────────────
  final stressLabel = '状态正常'.obs;

  // ── HRV 表盘引导 Banner ───────────────────
  final showHrvAdBanner = true.obs;

  void dismissHrvAdBanner() => showHrvAdBanner.value = false;

  // ── HRV 数字 + 心率 ───────────────────────
  final avgHrv = 46.obs;
  final restingHeartRate = 63.obs;

  // ── HRV 趋势图 ────────────────────────────
  final List<HrvDataPoint> hrvChartData = const [
    HrvDataPoint(hour: 0, hrv: 30),
    HrvDataPoint(hour: 1, hrv: 45),
    HrvDataPoint(hour: 2, hrv: 40),
    HrvDataPoint(hour: 3, hrv: 55),
    HrvDataPoint(hour: 4, hrv: 50),
    HrvDataPoint(hour: 5, hrv: 60),
    HrvDataPoint(hour: 6, hrv: 65),
    HrvDataPoint(hour: 7, hrv: 70),
    HrvDataPoint(hour: 8, hrv: 62),
    HrvDataPoint(hour: 9, hrv: 58),
    HrvDataPoint(hour: 10, hrv: 75),
    HrvDataPoint(hour: 11, hrv: 80),
    HrvDataPoint(hour: 12, hrv: 72),
    HrvDataPoint(hour: 13, hrv: 68),
    HrvDataPoint(hour: 14, hrv: 55),
    HrvDataPoint(hour: 15, hrv: 50),
    HrvDataPoint(hour: 16, hrv: 45),
    HrvDataPoint(hour: 17, hrv: 42),
    HrvDataPoint(hour: 18, hrv: 38),
  ];

  final List<HrvAnnotation> hrvAnnotations = const [
    HrvAnnotation(
      hour: 11,
      hrv: 80,
      stateLabel: '状态优秀',
      detail: 'HRV 23ms · 11:28',
    ),
  ];

  // ── 每日行动 ──────────────────────────────
  final List<DailyActionItem> dailyActions = const [
    DailyActionItem(
      label: '睡眠',
      value: '7',
      unit: 'h',
      subValue: '32',
      subUnit: 'min',
    ),
    DailyActionItem(
      label: '健身',
      value: '45',
      unit: 'min',
    ),
    DailyActionItem(
      label: '步数',
      value: '8,234',
      unit: '步',
    ),
  ];
}