feat(health): 新增手腕温度监测和经期双向同步功能

新增手腕温度健康数据追踪,支持Apple Watch睡眠手腕温度数据展示和30天历史趋势分析
实现经期数据与HealthKit的完整双向同步,支持读取、写入和删除经期记录
优化经期预测算法,基于历史数据计算更准确的周期和排卵日预测
重构经期UI组件为模块化结构,提升代码可维护性
添加完整的中英文国际化支持,覆盖所有新增功能界面
This commit is contained in:
richarjiang
2025-12-18 08:40:08 +08:00
parent 9b4a300380
commit 4836058d56
31 changed files with 2249 additions and 539 deletions

View File

@@ -142,6 +142,16 @@ export const statistics = {
oxygen: {
title: 'Blood Oxygen',
},
wristTemperature: {
title: 'Wrist Temperature',
last30Days: 'Last 30 days',
syncing: 'Syncing Health data...',
noData: 'No wrist temperature data yet',
baseline: 'Baseline',
average: '30-day avg',
latest: 'Latest',
vsBaseline: 'vs baseline'
},
circumference: {
title: 'Circumference (cm)',
setTitle: 'Set {{label}}',

View File

@@ -2,6 +2,7 @@ import * as Challenge from './challenge';
import * as Common from './common';
import * as Diet from './diet';
import * as Health from './health';
import * as Menstrual from './menstrual';
import * as Medication from './medication';
import * as Mood from './mood';
import * as Personal from './personal';
@@ -15,6 +16,7 @@ export default {
...Weight,
...Challenge,
...Mood,
...Menstrual,
...Common,
...Common.common, // 确保通用翻译被正确导出
};

37
i18n/en/menstrual.ts Normal file
View File

@@ -0,0 +1,37 @@
export const menstrual = {
dateFormatShort: 'MMM D',
card: {
title: 'Menstrual cycle',
syncingState: 'Syncing',
syncingDesc: 'Reading menstrual data…',
emptyState: 'Not logged',
emptyDesc: 'Tap to record this period',
periodState: 'Period',
predictedPeriodState: 'Predicted period',
periodEndToday: 'Expected to end today ({{date}})',
periodEndPrefix: 'Ends in ',
periodEndSuffix: ' days ({{date}})',
fertileState: 'Fertile window',
fertileToday: 'Fertile window starts today',
fertileCountdownPrefix: 'Enters fertile window in ',
fertileCountdownSuffix: ' days',
ovulationState: 'Ovulation',
ovulationToday: 'Today is ovulation day',
ovulationCountdownPrefix: 'Ovulation in ',
ovulationCountdownSuffix: ' days',
nextPeriodPrefix: 'Next period in ',
nextPeriodSuffix: ' days',
},
screen: {
header: 'Menstrual Cycle',
tabs: {
cycle: 'Cycle',
analysis: 'Analysis',
},
analysis: {
title: 'Analysis',
description:
'Based on the latest 6 cycles, we will calculate average period and cycle length. Trends and prediction accuracy will be shown here.',
},
},
};

View File

@@ -127,6 +127,7 @@ export const statisticsCustomization = {
water: 'Water Intake',
basalMetabolism: 'Basal Metabolism',
oxygenSaturation: 'Oxygen Saturation',
wristTemperature: 'Wrist Temperature',
menstrualCycle: 'Menstrual Cycle',
weight: 'Weight',
circumference: 'Circumference',