这是一个使用现代化架构的宝宝成长与喂养追踪器应用,帮助父母记录和分析宝宝的喂养、健康与成长数据。项目采用领域驱动设计(DDD)分层架构,使用 SQLAlchemy + Alembic 实现持久化框架,以及 dataclasses 库实现数据传输对象(DTO)。
简洁易用,全面记录宝宝的喂养、健康与成长点滴,辅助父母科学育儿。
项目采用领域驱动设计(DDD)的分层架构,主要包括以下几层:
-
数据层 (Data Layer)
- SQLAlchemy ORM 模型
- Alembic 数据库迁移
- 数据库连接和会话管理
-
DTO 层 (Data Transfer Object Layer)
- 使用 Python dataclasses 实现
- 用于在不同层之间传输数据
- 加强类型安全和代码可读性
-
映射层 (Mapping Layer)
- 在 SQLAlchemy 模型和 DTO 之间转换数据
- 实现数据格式和结构的转换逻辑
-
仓储层 (Repository Layer)
- 实现仓储模式 (Repository Pattern)
- 封装对数据源的访问
- 提供统一的数据访问接口
-
服务层 (Service Layer)
- 实现业务逻辑
- 协调多个仓储的操作
- 提供高级功能和数据分析
-
API 层/UI 层 (API/UI Layer)
- 提供对外接口或用户界面
- 处理用户输入和展示结果
- Python: 主要编程语言
- SQLAlchemy: ORM 框架
- Alembic: 数据库迁移工具
- Dataclasses: 数据传输对象实现
- SQLite: 数据存储
- 功能描述: 记录宝宝的母乳喂养情况,包括时长、侧边等。
- 使用场景:
- 每次亲喂后,妈妈记录喂养的起始时间、持续时长。
- 记录从哪一侧乳房开始喂养,以及左右两侧分别喂养的时间。
- 备注宝宝吃奶时的状态,如精神好、吃得急、有无呛奶等。
- 核心操作:
- 点击“开始喂养”或选择“母乳喂养”。
- (可选) 启动计时器。
- 选择开始侧 (左/右/自动交替)。
- 记录左侧时长,右侧时长 (或总时长)。
- (可选) 添加备注,如宝宝情绪、妈妈感受。
- 保存记录。
- 记录数据: 开始时间、结束时间、总时长、左侧时长、右侧时长、起始侧、备注、宝宝ID。
- 可配置项: 默认起始侧、提醒下次喂养。
- 功能描述: 记录使用奶瓶喂养挤出的母乳的情况。
- 使用场景:
- 妈妈外出或由他人喂养时,记录喂食的母乳量。
- 追踪宝宝每日通过奶瓶摄入的母乳总量。
- 核心操作:
- 选择“奶瓶喂养 - 母乳”。
- 输入喂养时间。
- 输入喂奶量 (ml/oz)。
- (可选) 记录母乳来源 (如冷藏、冷冻及解冻时间、批次号)。
- (可选) 添加备注,如宝宝接受度、有无吐奶。
- 保存记录。
- 记录数据: 喂养时间、奶量、单位(ml/oz)、母乳来源/批次、备注、宝宝ID。
- 可配置项: 默认单位。
- 功能描述: 记录宝宝配方奶的喂养情况。
- 使用场景:
- 混合喂养或纯配方奶喂养的宝宝,记录每次喂奶量。
- 追踪不同品牌或阶段配方奶的喂养情况。
- 核心操作:
- 选择“奶瓶喂养 - 配方奶”。
- 输入喂养时间。
- 输入喂奶量 (ml/oz)。
- (可选) 选择配方奶品牌/段位。
- (可选) 添加备注,如宝宝接受度、有无吐奶、便便情况。
- 保存记录。
- 记录数据: 喂养时间、奶量、单位(ml/oz)、配方奶品牌/段位、备注、宝宝ID。
- 可配置项: 默认单位、常用配方奶品牌列表。
- 功能描述: 记录宝宝添加辅食的种类、量和反应。
- 使用场景:
- 宝宝开始添加辅食后,记录每餐辅食的成分和宝宝的接受程度。
- 追踪新食材的引入,观察有无过敏反应。
- 核心操作:
- 选择“辅食”。
- 输入喂养时间。
- 添加辅食条目:
- 选择/输入食材名称 (如米粉、苹果泥)。
- 输入食用量 (如克、勺)。
- (可选) 记录宝宝反应 (喜欢、一般、不喜欢、过敏症状)。
- (可选) 添加整体备注。
- 保存记录。
- 记录数据: 喂养时间、辅食条目 (食材、量、单位、反应)、备注、宝宝ID。
- 可配置项: 常用食材列表、过敏反应类型。
- 功能描述: 记录宝宝每日饮水量。
- 使用场景:
- 尤其在辅食添加后或天气炎热时,追踪宝宝饮水情况。
- 核心操作:
- 选择“饮水”。
- 输入饮水时间。
- 输入饮水量 (ml/oz)。
- 保存记录。
- 记录数据: 时间、饮水量、单位、宝宝ID。
- 功能描述: 记录更换尿布的时间、类型 (嘘嘘/便便/混合) 及便便性状。
- 使用场景:
- 每次给宝宝换尿布时记录,方便追踪排便排尿规律。
- 观察宝宝便便颜色、性状,辅助判断消化情况。
- 核心操作:
- 选择“换尿布”。
- 记录更换时间。
- 选择尿布状态 (干、湿、便便、湿+便便)。
- (如果含便便) 选择便便颜色、性状 (如稀、软、成形、硬)。
- (可选) 添加备注,如量、有无红屁屁。
- 保存记录。
- 记录数据: 时间、状态、便便颜色、便便性状、备注、宝宝ID。
- 可配置项: 便便颜色和性状选项。
- 功能描述: 记录宝宝洗澡的时间和时长。
- 使用场景: 记录宝宝每日或定期的洗澡活动。
- 核心操作:
- 选择“洗澡”。
- 记录开始时间 (或直接记录完成时间)。
- (可选) 记录时长。
- (可选) 添加备注,如宝宝情绪、使用的沐浴产品。
- 保存记录。
- 记录数据: 时间、时长、备注、宝宝ID。
- 功能描述: 记录如理发、修指甲等其他清洁护理活动。原文档中的“理发”、“修指甲”可归于此类。
- 使用场景: 按需记录不频繁但重要的护理活动。
- 核心操作:
- 选择“其他清洁”或具体项 (如“理发”)。
- 记录时间。
- (可选) 添加备注。
- 保存记录。
- 记录数据: 时间、活动类型、备注、宝宝ID。
- 可配置项: 可自定义清洁活动类型 (如“清洁鼻腔”, “涂抹润肤露”)。
- 功能描述: 记录宝宝的睡眠起止时间、时长及睡眠质量。
- 使用场景:
- 追踪宝宝每日睡眠模式和总睡眠时长。
- 分析影响睡眠质量的因素。
- 核心操作:
- 点击“开始睡觉”或选择“睡眠记录”。
- (可选) 启动计时器。
- 记录入睡时间。
- 宝宝醒来后,记录醒来时间 (或手动输入总时长)。
- (可选) 评价睡眠质量 (如安稳、易醒)。
- (可选) 记录睡眠地点 (如婴儿床、父母床)。
- (可选) 添加备注,如入睡方式、夜醒次数。
- 保存记录。
- 记录数据: 入睡时间、醒来时间、总时长、睡眠质量、睡眠地点、备注、宝宝ID。
- 可配置项: 睡眠质量选项、常用睡眠地点。
- 功能描述: 记录妈妈挤奶的时间、时长、奶量及存储信息。
- 使用场景:
- 背奶妈妈记录每日挤奶量,管理库存。
- 追奶或维持奶量时,监测挤奶效果。
- 核心操作:
- 选择“挤奶记录”。
- 记录开始时间。
- (可选) 启动计时器或记录时长。
- 记录总奶量 (ml/oz)。
- (可选) 分别记录左右两侧奶量。
- (可选) 记录存储方式 (冷藏/冷冻) 及标签/批号。
- (可选) 添加备注。
- 保存记录。
- 记录数据: 时间、时长、总奶量、左侧奶量、右侧奶量、单位、存储方式、标签/批号、备注。
- 可配置项: 默认单位。
- 功能描述: 记录宝宝的各种活动、锻炼和玩耍情况。原文档中的“游泳”、“骑车”、“蹬气球”、“添加锻炼项”可归于此类。
- 使用场景: 记录宝宝的日常活动,如Tummy Time、户外散步、特定游戏等。
- 核心操作:
- 选择“活动记录”或具体活动类型。
- 记录活动开始时间。
- (可选) 记录活动时长。
- 输入活动名称/描述。
- (可选) 添加备注,如宝宝表现、地点。
- 保存记录。
- 记录数据: 时间、时长、活动名称/类型、备注、宝宝ID。
- 可配置项: 可自定义常用活动类型。
- 功能描述: 记录宝宝的体重、身高/身长、头围数据,并可查看生长曲线。
- 使用场景:
- 定期(如体检时)或按需记录宝宝的生长发育指标。
- 对比生长曲线,了解宝宝发育趋势。
- 核心操作:
- 选择“生长测量”或具体测量项 (体重/身高/头围)。
- 记录测量日期。
- 输入测量数值及单位。
- (可选) 添加备注。
- 保存记录。
- (功能) 查看对应指标的生长曲线图 (对比WHO或特定地区标准)。
- 记录数据: 日期、体重(kg/lb)、身高/身长(cm/in)、头围(cm/in)、单位、备注、宝宝ID。
- 可配置项: 默认单位、生长曲线标准选择。
- 功能描述: 记录宝宝体温,特别是在生病期间。
- 使用场景: 宝宝发烧或感觉不适时,监测体温变化。
- 核心操作:
- 选择“体温测量”。
- 记录测量时间。
- 输入体温数值 (°C/°F)。
- (可选) 选择测量方式 (如腋下、额温、耳温、肛温)。
- (可选) 添加备注,如宝宝精神状态、是否用药。
- 保存记录。
- 记录数据: 时间、体温、单位、测量方式、备注、宝宝ID。
- 可配置项: 默认单位、提醒复测(例如,高烧时每隔X小时提醒)。
- 功能描述: 记录宝宝用药信息,包括药品名称、剂量、时间,并可设置用药提醒。
- 使用场景: 宝宝生病需要服药时,确保按时按量用药。
- 核心操作:
- 选择“用药记录”。
- 输入/选择药品名称。
- 输入剂量及单位。
- 记录用药时间。
- (可选) 设置用药计划和提醒 (如每日3次,每次间隔X小时,持续Y天)。
- (可选) 添加备注,如用药后反应、遵医嘱。
- 保存记录。
- 记录数据: 时间、药品名称、剂量、单位、用药途径、备注、宝宝ID。
- 可配置项: 常用药品列表、提醒设置。
- 功能描述: 记录已接种和计划接种的疫苗信息,并设置提醒。
- 使用场景: 管理宝宝的疫苗接种计划,避免遗漏。
- 核心操作:
- 选择“疫苗接种”。
- 添加疫苗条目:
- 输入/选择疫苗名称 (如乙肝疫苗第一剂)。
- 记录计划接种日期或实际接种日期。
- (可选) 记录接种地点、疫苗批号、生产厂家。
- (可选) 添加备注,如接种后反应、预约信息。
- (功能) 设置接种日期提醒。
- 保存记录。
- 记录数据: 疫苗名称、计划/实际接种日期、接种地点、批号、厂家、备注、宝宝ID。
- 可配置项: 内置标准疫苗程序表 (可按地区选择,区分一类苗和二类苗)、自定义疫苗。
- 功能描述: 记录宝宝出现的各种症状,如咳嗽、流涕、皮疹、呕吐、腹泻等。
- 使用场景: 宝宝生病时,详细记录症状变化,方便就医时向医生描述或自行观察病情。
- 核心操作:
- 选择“症状记录”。
- 记录时间。
- 选择/输入症状名称。
- (可选) 描述症状严重程度 (轻微/中度/严重)、频率、持续时间。
- (可选) 关联体温、用药记录。
- (可选) 添加备注或上传相关图片 (如皮疹照片)。
- 保存记录。
- 记录数据: 时间、症状名称、严重程度、频率、持续时间、备注、图片路径、宝宝ID。
- 可配置项: 常用症状列表。
- **功能描述**: 记录宝宝的就医信息,包括就诊时间、医生、诊断和医嘱。
- **使用场景**: 整理宝宝的就医历史,方便回顾病情和治疗方案。
- **核心操作**:
1. 选择“就医记录”。
2. 记录就诊日期和时间。
3. 输入就诊医院/诊所、科室、医生姓名。
4. 记录主要症状描述(可关联症状记录)。
5. 记录医生诊断结果。
6. 记录医嘱(如用药、复查时间等,可关联用药记录)。
7. (可选) 上传病历、化验单等图片。
8. 保存记录。
- **记录数据**: 日期时间、医院、科室、医生、主诉、诊断、医嘱、图片路径、宝宝ID。
- 功能描述: 记录宝宝成长过程中的重要第一次和特殊时刻。
- 使用场景: 记录宝宝的各项大运动、精细动作、语言、认知、社交情感发展里程碑。
- 核心操作:
- 选择“里程碑”。
- 选择/输入里程碑名称 (如“第一次独立行走”、“第一次叫妈妈”、“第一次微笑”、“第一次对声音有反应”、“第一次咿咿呀呀说话”等)。
- 记录达成日期。
- (可选) 添加详细描述/小故事。
- (可选) 上传照片或短视频。
- (可选) 记录地点。
- 保存记录。
- 记录数据: 日期、里程碑名称、描述、照片/视频路径、地点、宝宝ID。
- 可配置项: 预设里程碑列表 (按月龄,涵盖大运动、精细动作、语言、认知、社交等)、自定义里程碑。
- 功能描述: 为周期性或重要的事件设置提醒。
- 使用场景:
- 提醒下次喂奶、挤奶。
- 提醒用药。
- 提醒疫苗接种日期、体检日期。
- 提醒购买尿布、奶粉等。
- 自定义提醒事项 (如“Tummy Time”、“带宝宝晒太阳”)。
- 核心操作:
- 进入“提醒设置”模块或在相关记录模块中快速创建提醒。
- 选择提醒类型 (喂奶、用药、疫苗等) 或自定义。
- 设置提醒时间、重复规则 (如每日、每周、指定间隔)。
- 输入提醒内容。
- 保存提醒。
- 记录数据: 提醒类型、提醒时间、重复规则、提醒内容、关联的宝宝ID。
- 功能描述: 提供每日、每周、每月的数据汇总和可视化图表,帮助父母了解宝宝的整体情况和趋势。
- 使用场景:
- 查看宝宝每日/每周/每月总奶量、平均喂养间隔、总睡眠时长、排便次数等。
- 分析喂养、睡眠模式的变化趋势,例如夜奶次数变化、辅食种类与排便关系等。
- 生成生长曲线图,并可与标准曲线对比。
- 导出数据报告,方便与医生交流或家庭共享。
- 核心操作:
- 进入“统计报告”模块。
- 选择宝宝 (如果有多宝宝)。
- 选择报告周期 (如过去24小时、7天、30天、自定义范围)。
- 选择数据类型 (如喂养总量、睡眠分析、尿布统计、生长曲线等)。
- 查看图表 (如柱状图、折线图、饼图) 和数据摘要。
- (可选) 筛选特定数据 (如只看母乳喂养、只看夜间睡眠)。
- (可选) 导出报告 (PDF/CSV/图片格式)。
- 记录数据: (此模块主要对已记录数据进行分析和展示,不直接产生新原始数据)
- 可配置项: 报告包含的指标、图表类型、生长曲线标准 (WHO, CDC等)。
- 功能描述: 支持同时记录和管理多个宝宝的信息,每个宝宝的数据独立。
- 使用场景: 双胞胎、多胞胎或有多个年幼子女的家庭。
- 核心操作:
- 在应用首次启动或设置中,引导创建宝宝档案。
- 在设置中可以“添加新宝宝”,输入宝宝的姓名/昵称、出生日期、性别、头像等。
- 在记录各项数据时,顶部或侧边栏清晰显示当前操作的宝宝,并可轻松切换。
- 数据统计和报告可以按宝宝分别查看。
- 记录数据: 每个宝宝拥有独立的个人档案信息 (姓名、生日、性别等) 和上述所有模块的记录数据。
- 功能描述: 应用偏好设置、账户管理、数据备份与多设备同步。
- 使用场景:
- 个性化应用体验 (单位、主题、提醒声音)。
- 保护数据安全,防止因设备损坏或更换导致数据丢失。
- 方便夫妻双方或多个看护人在不同设备上共同记录和查看。
- 核心操作:
- 通用设置:
- 单位设置: 选择重量(kg/lb)、长度(cm/in)、容量(ml/oz)、温度(°C/°F)的默认单位。
- 日期与时间格式: 选择偏好的显示格式。
- 主题设置: 选择浅色/深色模式,或跟随系统。
- 提醒声音与震动: 自定义或关闭。
- 账户管理:
- 注册/登录账户 (邮箱/手机号/第三方登录)。
- 修改密码、绑定邮箱/手机。
- 数据管理:
- 云同步: 开启后,数据自动/手动同步到云端服务器。
- 数据备份: 创建本地备份文件。
- 数据恢复: 从本地备份文件或云端恢复数据。
- 数据导出: 导出所有数据为可读格式 (如CSV, JSON),方便用户自行存档或分析。
- 清除数据: 清除特定宝宝数据或所有数据 (需二次确认)。
- 关于与帮助: 应用版本信息、用户协议、隐私政策、帮助文档、反馈渠道。
- 通用设置:
-
宝宝模型 (Baby)
- 基本信息:姓名、生日、性别等
-
喂养模型 (Feeding)
- 母乳喂养 (Nursing):时间、持续时间、左右侧时间等
- 配方奶喂养 (Formula):时间、数量等
-
健康模型 (Health)
- 睡眠 (Sleep):时间、持续时间等
- 尿布 (Diaper):时间、类型等
- 体重 (Weight):时间、重量等
- 身高 (Height):时间、身高等
- 头围 (Head):时间、围度等
- 体温 (Temperature):时间、温度、测量位置等
-
活动模型 (Activity)
- 游戏时间 (Playtime):时间、持续时间、类型等
- 洗澡 (Bath):时间、持续时间、水温等
- 照片 (Photo):时间、文件路径、描述等
- 视频 (Video):时间、文件路径、持续时间、描述等
- Python 3.8+
- SQLite 3.0+
-
克隆项目仓库:
git clone https://github.com/yourusername/baby-tracker.git cd baby-tracker -
安装依赖:
pip install -e .或者使用 pip 直接安装依赖:
pip install sqlalchemy alembic
-
初始化数据库:
alembic upgrade head
-
创建宝宝记录:
from baby_tracker.services import BabyService from baby_tracker.models.dto import BabyDTO, Gender # 创建宝宝服务 baby_service = BabyService() # 创建宝宝记录 baby = BabyDTO( name="小明", dob=1714986000.0, # 2024-05-06的时间戳 gender=Gender.MALE ) # 保存宝宝记录 saved_baby = baby_service.create_baby(baby) print(f"创建的宝宝ID: {saved_baby.id}")
-
添加喂养记录:
from baby_tracker.services import FeedingService # 创建喂养服务 feeding_service = FeedingService() # 记录母乳喂养 feeding_service.add_nursing( baby_id=baby_id, left_duration=10, # 左侧喂养10分钟 right_duration=8, # 右侧喂养8分钟 note="宝宝吃得很好" ) # 记录配方奶喂养 feeding_service.add_formula( baby_id=baby_id, amount=120.0, # 120ml note="使用新购买的奶粉" )
-
添加健康记录:
from baby_tracker.services import HealthService # 创建健康服务 health_service = HealthService() # 记录体重 health_service.add_weight_record( baby_id=baby_id, weight=3850.0, # 3850克 note="满月体检" ) # 记录体温 health_service.add_temperature_record( baby_id=baby_id, temperature=36.5, # 36.5°C location="腋下" )
-
生成分析报告:
from baby_tracker.services import AnalyticsService # 创建分析服务 analytics_service = AnalyticsService() # 获取喂养分析 feeding_analysis = analytics_service.analyze_feeding( baby_id=baby_id, days=7 # 分析最近7天的数据 ) print(f"平均每日喂养次数: {feeding_analysis.avg_daily_feedings}") print(f"总喂养量: {feeding_analysis.total_formula_amount}ml")
-
导出数据:
from baby_tracker.services import ExportService, ExportRequest from datetime import datetime, timedelta # 创建导出服务 export_service = ExportService() # 定义导出请求 export_req = ExportRequest( baby_id=baby_id, start_date=datetime.now() - timedelta(days=30), end_date=datetime.now(), format="excel", include_feeding=True, include_health=True, include_activity=True ) # 导出数据 result = export_service.export_data(export_req) print(f"数据已导出到: {result.file_path}")
-
数据迁移:
# 从旧数据库迁移数据到新数据库 python tools/data_migrator.py --old-db data/old_db.sqlite --new-db sqlite:///data/new_db.sqlite
欢迎贡献代码、报告问题或提出新功能建议!请按照以下步骤参与项目:
- Fork 项目仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
本项目采用 MIT 许可证 - 详情请参见 LICENSE.md 文件。
Project Link: https://github.com/yourusername/baby-tracker
本项目正在开发中,持续增加新功能和改进现有功能。