恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

SparkyFitness Pregnancy Mode:孕期里程碑追踪与 5-1-1 宫缩监测的实现剖析

  • 首页
  • 资讯中心
  • /
  • SparkyFitness Pregnancy Mode:孕期里程碑追踪与 5-1-1 宫缩监测的实现剖析

相关资讯

ModuleNotFoundError: No module named ‘flax‘ 环境排查与修复指南 2026/10/10 8:15:26
get-shit-done 修复 roadmap update-plan-progress 的零填充不匹配:padded 相位参数如何正确驱动未填充 ROADMAP 进度更新 2026/10/10 8:15:26
注意力缺陷儿童辅导实操指南:从看懂孩子到搭建有效支持系统 2026/10/10 8:15:26

最新资讯

华为OD机试真题 新系统 2026-09-26 JavaGoC【均衡调度】
华为OD机试真题 新系统 2026-09-26 JavaGoC【数据中心最佳维护时间窗】
从 CDS 到 Fiori 与跨系统集成,彻底理解 RAP OData Service Consumption
IDEA中配置db文件全攻略
CDS Performance 深入解析,从 SAP HANA 执行计划到 ABAP CDS 建模优化
BarTender关于标签水印的说明

今日推荐

Codex 总用英文回答?从 AGENTS.md 到 config.toml 的中文输出调优指南
OpenClaw 自定义插件开发完整指南(2026最新版):从 TypeScript 到 npm 发布
基于Spark的电影推荐系统全链路实战:从爬虫到Web展示

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

SparkyFitness Pregnancy Mode:孕期里程碑追踪与 5-1-1 宫缩监测的实现剖析

发布时间:2026/10/10 8:15:26
SparkyFitness Pregnancy Mode:孕期里程碑追踪与 5-1-1 宫缩监测的实现剖析 后端前端移动开发【免费下载链接】SparkyFitnessSparkyFitness: Built for Families. Powered by AI. Track food, fitness, water, and health — together.项目地址https://gitcode.com/gh_mirrors/sp/SparkyFitness点击查看免费下载本文基于 docs/src/features/cycle-hub/pregnancy.md 展开围绕 SparkyFitness 的 Pregnancy Mode孕期模式讲解其功能设计、数据模型与底层算法从孕周计算、胎儿发育内容表到胎动计数、宫缩计时器的 5-1-1 临床告警、IOM 孕期增重参考区间再到照片日记与安全清单的权限模型。读完本文你将掌握该模块前端交互 — 后端服务 — 共享纯函数库的完整调用链并能对照源码理解每个功能背后的医学与工程依据。一、模式定位从备孕预测切换到孕期追踪SparkyFitness 的 Cycle Hub 中Pregnancy Mode 是女性健康模块的一个独立运行状态当用户创建一条status active的怀孕记录后应用的关注点会从生育力预测TTC整体切换到孕期里程碑追踪——包括孕周发育信息、胎动计数、宫缩计时、母体生命体征体重/血压、产检预约和各类检查清单。在移动端入口 CycleHubScreen.tsx 中该模式通过useCycleMode()切换命中孕期模式后渲染PregnancyOverviewViewoverview 与 tools 两个区块见 CycleHubScreen.tsx并由 PregnancySetupScreen.tsx 负责首次建档。前端孕期组件集中在 components/wellness/pregnancy/ 目录包括BabyGrowthView、BumpPhotoJournal、FoodMedSafetySearch、PregnancyLogView、WeeklyChecklist、WombScene、WeekBanner等。后端方面孕期功能拥有独立的三层结构层级文件职责路由routes/v2/pregnancyRoutes.tsREST 端点、参数校验、照片上传与鉴权服务services/pregnancyService.ts概览聚合、预产期推导、照片文件安全数据访问models/pregnancyRepository.ts六张表的 CRUD 与 SQL纯函数库shared/src/cycle/pregnancy.ts 与 pregnancyContent.ts孕周/预产期/5-1-1/增重算法与静态内容表其中共享纯函数库workspace/shared被前后端与测试共同引用保证同一套孕周与宫缩算法在服务端计算和客户端展示时完全一致。二、Gestational Milestones孕周、胎儿发育与每周检查清单2.1 预产期与孕周计算Naegele 法则预产期EDD有三种推导来源由resolveDueDate按优先级选择实现见 pregnancyService.ts直接指定due_date提供lmp_date末次月经首日→EDD LMP 280 天提供conception_date排卵/受孕日→EDD 受孕日 266 天。对应的纯函数实现位于 shared/src/cycle/pregnancy.tseddFromLmp直接调用addDays(lmp, 280)eddFromConception调用addDays(conception, 266)。280 天即临床上常说的40 周从 LMP 起算266 天是 280 减去约 14 天的排卵偏移二者殊途同归。测试 gestation.test.ts 对两种算法都有断言。孕周Gestational Age由gestationalAge(dueDate, onDay)计算返回结构化对象interface GestationalAge { week: number; // 已完成周数0-42 day: number; // 当前周内的第几天0-6 totalDays: number; trimester: 1 | 2 | 3; daysRemaining: number; progress: number; // 0-1跨整个 280 天孕期 }其计算基准是概念 LMP dueDate − 280 天与临床和主流 App 的周数口径一致孕早期/中期/晚期的分界为第 13 周、第 27 周week 13 ? 1 : week 27 ? 2 : 3见 pregnancy.ts。测试用例覆盖了LMP 当天为 week 0、第 24 周2 天归入第二孕期、第 28 周起归入第三孕期、到期日 progress 1 四种边界。2.2 周周发育数据表Week 4–40文档所述的 Week-by-Week Baby Size Tips胎儿大小对比、平均身长 cm、平均体重 g、每日发育提示、子宫插图在代码中是一张纯静态内容表BABY_DEVELOPMENT定义于 shared/src/cycle/pregnancyContent.ts覆盖第 4 周到第 40 周共 37 条记录interface BabyWeek { week: number; comparison: string; // 水果/物品大小类比 lengthCm: number | null; // 平均身长 weightG: number | null; // 平均体重 wombScene: 8 | 20 | 36; // 子宫插画场景就近取 8/20/36 周 babyBlurb: string; // 胎儿发育提示 momBlurb: string; // 母体变化提示 }内容示例摘录周数大小类比身长(cm)体重(g)胎儿提示母体提示4一粒罂粟籽0.1—胚胎着床、胎盘开始形成可能刚错过月经早孕激素上升13一荚豌豆7.423指纹形成、声带发育进入孕中期常是最舒适的阶段24一穗玉米30.0600肺发育、达到存活里程碑可能即将进行糖筛32一块豆薯42.41700肺在练习呼吸、常转为头位可开始准备分娩计划与待产包40一个小南瓜51.23460预产期已到宝宝自有节奏若未发动医生会讨论后续方案该表由babyWeek(week)按周精确命中查询。客户端 BabyGrowthView.tsx 借助WombScene根据wombScene字段选择 8/20/36 周三档宫腔插画WeekBanner展示当前孕周横幅。测试断言babyWeek(8)为 A raspberry、babyWeek(24)为 An ear of corn、第 40 周存在见 gestation.test.ts。2.3 每周检查清单模板 用户状态文档提到的 Weekly Checklists如糖耐测试、儿科医生调研等按孕周自动填充由两部分组成模板表CHECKLIST_TEMPLATES12 条周窗口任务定义于 pregnancyContent.ts每条含key、weekStart、weekEnd与标题例如{ key: first_appt, weekStart: 6, weekEnd: 10, title: Book your first prenatal appointment }, { key: glucose_test, weekStart: 24, weekEnd: 28, title: Book your glucose screening test }, { key: count_kicks, weekStart: 24, weekEnd: 40, title: Start counting fetal kicks daily }, { key: birth_plan, weekStart: 30, weekEnd: 36, title: Draft your birth plan }, { key: hospital_bag, weekStart: 32, weekEnd: 37, title: Pack your hospital bag }, { key: pediatrician, weekStart: 34, weekEnd: 40, title: Choose a pediatrician },checklistForWeek(week)按week weekStart week weekEnd过滤出当周应显示的任务。持久化状态表pregnancy_checklist_state用户在 WeeklyChecklist.tsx 中的勾选、忽略dismiss与自定义任务通过upsertChecklistItem写入。服务端聚合时把模板与用户状态合并template_key关联状态、custom_title为空则视为自定义项同时过滤掉dismissed项并计算checklistProgress { done, total }见 pregnancyService.ts。2.4 Birth Plan / Hospital Bag文档所述的 Birth Plan分娩偏好分娩环境、镇痛方式、新生儿护理可导出与医疗团队共享与 Hospital Bag为 Mother / Partner / Baby 三类角色定制清单任务在数据层同样落到pregnancy_checklist_state通过custom_title区分自定义任务按角色组织由客户端完成。这两块与上述每周清单共用同一套 upsert/列表接口。三、Daily Tracking Tools六块快速磁贴与 5-1-1 算法孕期首页以六类磁贴Quick Tiles承载日常追踪后端由GET /v2/pregnancy/overview一次性聚合返回。路由在 pregnancyRoutes.ts 中调用pregnancyService.getOverview(userId, today, date)其聚合内容包括当前孕周与胎儿数据、合并后的清单、下一次产检、近 7 天胎动会话、生命体征快照见 pregnancyService.ts。3.1 Kick Counter胎动计数会话数据表pregnancy_kick_sessions字段含started_at、ended_at、kick_count、kick_times数组。接口POST /kicks/start开新会话kick_count 0、kick_times {}PUT /kicks/:id更新计数、追加kick_times并可选结束会话GET /kicks列出全部历史会话。校验边界kick_count取值范围 0–1000kick_times为 ISO8601 时间字符串数组见 pregnancySchemas.ts。概览中仅取最近 7 个会话listKickSessions(userId, 7)用于展示趋势。3.2 Contraction Timer 5-1-1 Alert宫缩计时与临床告警宫缩记录由pregnancy_contractions表存储started_at、ended_at、intensity1–5接口为POST /contractions、PUT /contractions/:id、GET /contractions。真正的临床判断在共享纯函数contractionStats中完成见 shared/src/cycle/pregnancy.ts。算法流程仅取最近 65 分钟内、已记录ended_at的宫缩nowMs - started_at 65 * 60 * 1000按开始时间升序排列计算平均时长秒与相邻平均间隔分钟判定5-1-1模式需要同时满足四项const isFiveOneOne recent.length 6 // 至少 6 次宫缩 avgIntervalMin 5.5 // 平均间隔 ≈ ≤5 分钟 avgDurationSec 45 // 平均时长 ≈ ≥1 分钟留 15s 容差 spanMin 50; // 首尾跨度 ≈ ≥1 小时留 10min 容差即宫缩间隔 ≤5 分钟、每次持续 ≥1 分钟、且持续 ≥1 小时的临床就诊指征。之所以在 5 / 60 / 60 的标称值上分别留出 5.5 分钟、45 秒、50 分钟的容差是为了在数据录入有少量误差时仍能可靠触发告警避免漏报。服务端getContractionAnalysis会取最近 2 小时数据交给该函数分析见 pregnancyService.ts。测试 gestation.test.ts 构造了 12 次每 5 分钟一次、每次 60 秒、跨度约 55 分钟的宫缩序列断言isFiveOneOne true并用仅 1 次稀疏宫缩验证不会误报。当判定命中时客户端如 PregnancyOverviewView.tsx 与 PregnancyLogView.tsx展示警告横幅建议联系医疗提供方。3.3 Bump Photo Journal孕肚照片日记文档所述上传、浏览、删除每周孕肚照片对应pregnancy_photos表与四组接口POST /photosmultipart 上传经 checkInPhotoUpload.ts 校验图片魔数与扩展名GET /photos?pregnancy_id...列表按week ASC, entry_date ASC排序GET /photos/file/:id取图片字节仅本人可访问DELETE /photos/:id删除行与磁盘文件磁盘布局见 pregnancyRoutes.tsuploads/pregnancy/{userId}/{pregnancyId}/w{week}-{timestamp}.{ext}例如uploads/pregnancy/u_abc/preg_123/w20-1720000000000.jpg。路径中的pregnancyId必须是 UUID路由层用UUID_RE正则强制校验从源头阻断../../../etc之类的路径穿越。隐私设计值得注意pregnancy_photos是仅本人的生殖健康数据从公共静态目录/uploads中排除只能通过鉴权路由GET /photos/file/:id获取字节。服务层getPhotoFile在返回文件前依次校验记录存在性 → 归属权WHERE user_id $1 AND id $2→ 路径未逃逸 uploads 根目录resolveUploadPathWithinRoot→ 文件确实在磁盘上任一环节失败统一返回 404不向调用方暴露具体原因pregnancyService.ts。删除时同样先校验路径再unlink即使文件已缺失也以数据库行为准返回成功pregnancyService.ts。3.4 Weight BP Tracking体重与血压体重IOM 指南getOverview通过check_in_measurements表取三个值——末次经期日LMP之前最早的体重作为prePregnancyWeight、目标日当天或之前最新的体重、最近一次身高进而计算孕前 BMI weight / (height/100)^2调用共享函数weightGainRange(prePregnancyBmi, week, fetusCount)得到基于 IOM美国医学研究院指南的累计增重区间分类依据孕前 BMI18.5 偏瘦12.5–18 kg、25 正常11.5–16 kg、30 超重7–11.5 kg、≥30 肥胖5–9 kgfetusCount 2时按双胎指导放宽区间如正常 BMI 为 17–25 kg见 shared/src/cycle/pregnancy.ts以weightDelta latestWeight - prePregnancyWeight与区间比较输出within_range / below_range / above_range三态状态。实现细节孕早期≤13 周按约 2 kg 匀速增长13 周后线性插值到足月目标确保第 1 周前返回null测试见 gestation.test.ts。孕前体重未记录时跳过该评估。血压getLatestBpCustomMeasurement在custom_categories中按blood_pressure含别名定位自定义类别再取custom_measurements中目标日及以前的最新一次value见 pregnancyRepository.ts。3.5 Prenatal Vitamin Toggle产前维生素打卡pregnancies表记录两个可选用药引用prenatal_medication_id与supplement_medication_id如铁剂。概览聚合时服务端通过getMedicationName取药名、getMedicationLogStatus检查目标日是否已有medication_entries记录从而返回loggedToday布尔值与对应 entry idpregnancyService.ts。前端在 vitals 卡片上提供快速打卡按钮点击即写入当日的用药记录。3.6 Appointments Scans产检预约预约数据存入通用表health_appointmentsscheduled_at、appointment_type、title、location、notes、outcomeJSONB。接口POST /appointments、PUT /appointments/:id、GET /appointments?upcomingtrue仅未来、DELETE /appointments/:id。APPOINTMENT_TYPES枚举预置了 checkup / ultrasound / glucose_test / bloodwork / specialist / class / other 七类shared/src/cycle/pregnancy.ts。概览中的nextAppointment取升序排列后的第一条未来记录。3.7 Food Medication Safety食物与用药安全文档提到的Safe / Caution / Avoid三级风险分类在 shared/src/cycle/pregnancyContent.ts 中实现为两张静态表FOOD_SAFETY20 条如 Cooked salmonsafe、Tuna canned lightcaution每周约 2 份并优选 light 罐装、Swordfish / raw sushi / unpasteurized soft cheese / alcoholavoid、Coffeecaution约 200 mg/天 咖啡因、Herbal teacautionMED_SAFETY10 条如 Acetaminophensafe一线镇痛、Ibuprofencaution孕晚期尤其避免、Isotretinoinavoid致畸、Prenatal vitaminsafe推荐全程补充叶酸/铁/DHA。每条记录含aliases别名数组与note风险说明。lookupSafety(query, list)对名称与别名做双向包含匹配pregnancyContent.tsmatchMedSafety还能从药柜名如 Advil 200mg匹配到对应条目测试断言 sushi 命中 avoid、matchMedSafety(Advil 200mg)命中 cautiongestation.test.ts。前端搜索组件为 FoodMedSafetySearch.tsx。四、Physical Wellness Roadmap孕产健身的前瞻规划文档明确说明Prenatal Workouts 与 Pelvic Floor盆底肌专项训练属于Planned Roadmap计划中专门的孕期核心/盆底训练内容推迟到未来的健身计划 backlog中实现。当前孕期模式并未接入专项训练计划读者在评估该模块能力边界时应以此为准。五、数据模型、权限与 API 速查5.1 涉及的表与 RLS 策略表用途pregnancies孕期主档due_date、basis、fetus_count、status、medication 引用、notespregnancy_kick_sessions胎动会话pregnancy_contractions宫缩记录pregnancy_photos孕肚照片file_path 不对外返回pregnancy_checklist_state检查清单状态模板项自定义项health_appointments通用产检预约权限方面db/rls_policies.sql 对四张孕期表统一执行create_owner_policyTier 1仅创建者本人可读写与文档家庭共享主基调形成鲜明对比孕期数据尤其照片是 owner-only绝不通过家庭成员委托或共享机制暴露。这一点在路由注释中有明确说明pregnancyRoutes.ts不同于可委托的 check-in 照片孕期照片路由故意不挂checkPermissionMiddleware防止家庭成员经由权限授权拿到孕肚照片。5.2 API 端点总览前缀/api/v2/pregnancy方法路径说明GET/current当前 active 孕期POST/创建孕期due_date/lmp_date/conception_date至少其一GET/overview?dateYYYY-MM-DD聚合概览孕周、清单、下次产检、胎动、体征PUT / DELETE/:id更新可含 status/ended_on/outcome/ 删除POST/kicks/start开启胎动会话PUT/kicks/:id更新 kick_count / kick_times / endedGET/kicks全部会话POST/contractions记录宫缩PUT/contractions/:id更新 ended_at / intensityGET/contractions近 2 小时宫缩 5-1-1 统计POST/photos上传孕肚照片multipartpregnancy_id 必须为 UUIDGET/photos照片列表按周/日期排序GET/photos/file/:id本人取照片字节鉴权公共 /uploads 不可达DELETE/photos/:id删除照片行与文件GET/PUT/POST/checklist查询 / upsert 清单项completed/dismissed/customPOST/appointments新建产检预约PUT/appointments/:id更新预约GET/appointments?upcomingtrue预约列表DELETE/appointments/:id删除预约路由注册顺序有讲究PUT /:id与DELETE /:id必须放在所有具名路由之后否则 Express 会把PUT /checklist这类单段路径当成:id吞掉并在 UUID 校验处报 400见 pregnancyRoutes.ts 注释。5.3 请求体校验要点zod创建/更新孕期due_date_basis限定[lmp, conception, manual, scan]fetus_count为 1–4 的整数日期字段必须是YYYY-MM-DDisDayStringrefine宫缩intensity1–5 整数清单week0–45预约scheduled_at为 ISO datetime。 完整 schema 见 pregnancySchemas.ts。六、测试与质量保障孕期模块的算法正确性由 tests/gestation.test.ts 系统覆盖另有两个专项测试文件pregnancyRoutes.test.ts路由层行为验证pregnancyPhotoService.test.ts照片服务的路径安全与文件操作验证。加上 uploadsStaticMount.test.ts 对公共静态挂载的约束断言共同构成算法共享库→ 服务聚合与安全→ 路由鉴权与校验三层测试防线。任何对孕周公式、5-1-1 阈值或 IOM 增重区间的改动都会先被这些测试拦截。七、小结SparkyFitness 的 Pregnancy Mode 是一套以纯函数共享库 静态内容表为核心、前后端严格分工的孕期追踪实现workspace/shared承载可被测试与前后端共同引用的孕周/预产期/5-1-1/增重算法pregnancyContent.ts提供离线可用的胎儿发育与安全知识库服务端负责聚合与照片等敏感资源的路径安全而 RLS 层则把孕期数据锁定为 owner-only。对希望复用或扩展该模块的开发者建议从 shared/src/cycle/pregnancy.ts 与 shared/src/cycle/pregnancyContent.ts 入手理解领域逻辑再对照 pregnancyService.ts 与 pregnancyRepository.ts 追踪数据流。说明孕期相关功能属于健康追踪工具而非医疗建议文中涉及的任何临床参考5-1-1、IOM 增重、食物/用药分级均以提醒用户咨询医疗提供方为最终口径。赞分享后端前端移动开发【免费下载链接】SparkyFitnessSparkyFitness: Built for Families. Powered by AI. Track food, fitness, water, and health — together.项目地址https://gitcode.com/gh_mirrors/sp/SparkyFitness点击查看免费下载相关推荐SparkyFitness Period Cycle Hub 使用与原理指南经期、备孕与孕期的一站式自托管健康追踪SparkyFitness Period Cycle Hub 使用与原理指南经期、备孕与孕期的一站式自托管健康追踪 导读 本文以 SparkyFitnes后端前端移动开发SparkyFitness 经期与周期中心五种追踪模式全面对比Standard / TTC / Pregnancy / Postpartum / MenopauseSparkyFitness 经期与周期中心五种追踪模式全面对比Standard / TTC / Pregnancy / Postpartum / Menopa后端前端移动开发CANN 9.0.0-beta.1 发布计划解读里程碑、测试轮次与特性追踪机制CANN 9.0.0 beta.1 发布计划解读里程碑、测试轮次与特性追踪机制 CANN 9.0.0 beta.1 是 CANN 9.x 系列的首个 Beta文档CANN上一篇K9s v0.32.6 维护版深度解析插件生态扩展、Jump to Owner 增强与稳定性修复下一篇Boto3 配置 S3 存储桶 CORSget_bucket_cors 与 put_bucket_cors 实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号