项目实训开发日志(三):BabyMind:基于多Agent和RAAG的科学育儿辅助平台
在第二周中,我们完成了BabyMind科学育儿辅助平台的基础框架建设,包括Android前端基础工程、FastAPI后端服务框架、MySQL数据库连接、用户认证、宝宝档案管理以及RAG知识库的前期规划。第二周的重点是让项目具备一个可以继续扩展的系统底座。
进入第三周后,团队的主要任务从“把系统先跑起来”进一步转向“让核心业务模块逐步成型”。本周我们围绕健康记录、成长时间轴、疫苗计划、营养推荐页面、前后端接口联调以及RAG知识库资料整理等内容展开开发。相比第二周,本周的开发更接近实际业务场景,也开始暴露出前后端字段统一、接口调试、页面数据展示等问题。
一、本周整体完成内容
1、继续完善Android前端页面结构
本周前端部分继续基于Kotlin和Jetpack Compose进行开发。在第二周已经完成项目基础结构、主题配置和基础导航的基础上,本周主要补充了更多业务页面入口,并对首页和底部导航结构进行了优化。
目前前端已初步完成以下内容:
优化首页页面布局。
补充宝宝档案展示页面。
新增健康记录页面基础结构。
新增成长时间轴页面入口。
新增疫苗计划页面入口。
新增营养推荐页面入口。
调整底部导航栏页面切换逻辑。
初步封装部分通用UI组件。
为后续接口数据展示预留状态管理结构。
本周前端工作的重点不是一次性把所有页面做完整,而是让主要功能模块在App中有明确入口。这样后续开发时,健康、时间轴、疫苗、营养等页面都可以在已有导航基础上继续扩展。
在页面设计上,我们也开始尝试统一整体风格。由于BabyMind属于母婴类辅助平台,因此页面配色尽量采用较柔和的颜色,布局上以卡片式信息展示为主,减少复杂操作,让用户能够更直观地查看宝宝相关信息。
目前前端页面中仍有部分数据使用静态模拟数据展示,主要目的是先确认页面结构和交互流程。等后端接口稳定后,再逐步替换为真实接口数据。
2、推进健康记录模块基础开发
健康记录模块是本周后端重点推进的功能之一。BabyMind作为科学育儿辅助平台,需要帮助家长记录宝宝日常健康情况,例如发热、咳嗽、腹泻、就医、用药等信息。后续健康Agent和RAG问答模块也可以结合这些历史记录,提供更有针对性的提示。
本周健康记录模块主要完成了基础数据结构和接口设计,初步实现了健康记录的增删改查能力。
目前健康记录模块已规划和实现的内容包括:
新增健康记录。
查询某个宝宝的健康记录列表。
查询单条健康记录详情。
修改健康记录。
删除健康记录。
通过宝宝ID关联具体宝宝档案。
通过当前登录用户进行权限校验。
健康记录中暂时设计了以下主要字段:
宝宝ID。
记录类型。
症状描述。
体温信息。
发生时间。
备注内容。
创建时间。
更新时间。
这部分功能延续了第二周后端分层开发的方式,仍然按照模型层、Schema层、Service层和Router层进行组织。这样做的好处是后续如果需要加入健康分析、异常提醒或者AI总结功能,可以在Service层继续扩展,而不会让接口文件变得过于混乱。
健康记录模块目前仍处于基础阶段,主要目标是先保证用户可以正常记录和查询健康信息。后续会继续考虑增加症状分类、体温趋势、风险等级提示等能力。
3、完成成长时间轴模块初步设计
成长时间轴是BabyMind项目中用于记录宝宝成长过程的重要模块。它不仅可以记录宝宝的身高体重变化、成长里程碑,也可以和疫苗接种、健康记录、营养记录等模块关联起来,形成一个完整的成长过程视图。
本周我们完成了成长时间轴模块的初步设计,并开始编写基础接口。
目前时间轴模块初步规划支持以下内容:
新增成长事件。
查询宝宝成长事件列表。
按时间顺序展示事件。
修改成长事件。
删除成长事件。
按事件类型进行基础分类。
成长事件类型目前初步分为:
身高体重记录。
成长里程碑事件。
疫苗接种事件。
健康异常事件。
喂养相关事件。
用户自定义事件。
本周阶段我们暂时没有实现复杂的自动聚合功能,而是先把手动记录和列表查询能力设计出来。因为时间轴模块涉及到多个业务模块的数据整合,如果一开始就做得过于复杂,后续维护成本会比较高。
后续我们的计划是先让用户可以手动添加成长事件,再逐步实现自动同步。例如当用户新增一条疫苗接种记录时,系统可以自动在时间轴中生成一条对应事件;当用户新增一条健康记录时,也可以同步出现在成长时间轴中。
4、开展疫苗计划模块基础设计
疫苗计划是BabyMind项目中的重要提醒类功能。对于婴幼儿来说,不同月龄通常会对应不同的疫苗接种安排。如果家长依靠手动记忆,容易出现遗忘或者记录混乱的问题。因此,本周我们开始对疫苗计划模块进行基础设计。
本周疫苗计划模块主要完成了数据结构规划和部分接口设计。
目前初步规划的数据包括:
疫苗名称。
推荐接种月龄。
疫苗剂次。
接种状态。
实际接种日期。
接种地点。
注意事项。
备注信息。
疫苗状态暂时设计为:
未接种。
已接种。
已推迟。
待确认。
当前疫苗模块主要分为两部分。第一部分是疫苗基础信息,用于保存疫苗名称、推荐接种时间和说明内容。第二部分是宝宝个人接种记录,用于保存某个宝宝实际是否接种、什么时候接种以及是否存在推迟情况。
本周我们没有把疫苗计划模块完全实现,而是先确定了基础结构。因为疫苗计划后续还需要和宝宝月龄、提醒功能、成长时间轴联动,所以需要先保证数据设计比较清晰,避免后续频繁修改表结构。
5、推进营养推荐模块页面与接口规划
营养推荐模块主要用于根据宝宝月龄、喂养阶段和过敏信息,为家长提供基础辅食建议和注意事项。本周我们在前端新增了营养推荐页面入口,并在后端初步规划了营养推荐接口。
目前营养推荐模块已完成以下内容:
前端新增营养推荐页面入口。
初步设计营养建议卡片。
后端规划营养推荐接口结构。
初步整理不同月龄阶段的喂养建议。
预留过敏原信息字段。
预留后续RAG知识库接入位置。
当前营养推荐仍然以规则型建议为主。例如根据宝宝月龄判断是否进入辅食添加阶段,再返回对应的基础建议。后续如果RAG知识库接入成功,可以进一步根据知识文档生成更完整的解释内容。
在讨论营养模块时,我们也注意到育儿类建议不能过于绝对。特别是涉及过敏、消化异常、体重增长异常等情况时,系统只能提供一般性参考建议,不能代替医生诊断。因此后续在营养推荐页面和AI回答中,都需要加入必要的安全提示。
6、开始进行前后端接口联调
第二周时,前端和后端主要是分别完成各自的基础框架。进入第三周后,我们开始进行部分接口联调,验证前端能否正常请求后端接口,后端返回的数据能否被前端正确解析和展示。
本周重点调试的接口包括:
用户注册接口。
用户登录接口。
获取当前用户信息接口。
宝宝档案列表接口。
新增宝宝档案接口。
查询宝宝档案详情接口。
健康记录列表接口。
新增健康记录接口。
在联调过程中,我们发现了一些实际问题。例如Android模拟器访问本地后端时不能直接使用localhost,需要使用特定地址;登录后需要正确保存和携带JWT Token;前后端字段命名需要保持一致;时间字段格式也需要统一。
通过本周联调,我们进一步认识到接口文档的重要性。后端接口如果没有清晰说明请求参数和响应结构,前端开发时就容易出现反复修改。因此后续每新增一个接口,都需要同步更新接口文档,并尽量保持字段稳定。
7、继续整理RAG知识库基础资料
RAG知识库本周仍然处于准备阶段,没有作为主要开发目标。由于BabyMind涉及育儿健康场景,知识库内容的可靠性非常重要,所以我们没有急于直接接入大模型,而是继续整理基础资料和知识目录。
目前RAG部分主要完成了以下工作:
继续整理育儿知识资料。
按健康、疫苗、营养、成长发育等方向分类。
初步编写Markdown格式文档。
规划知识文档目录结构。
预研Chroma向量数据库接入方式。
讨论后续文档切分和检索策略。
目前知识库目录初步规划如下:
knowledge_base/
health/
vaccine/
nutrition/
growth/
其中,健康类知识主要包括发热、咳嗽、腹泻等常见情况;疫苗类知识主要包括接种时间和注意事项;营养类知识主要包括辅食添加、过敏原和不同月龄喂养建议;成长类知识主要包括月龄发育特点和睡眠规律等内容。
本周我们重点讨论了RAG模块的边界问题。育儿问答不能只追求“回答得像”,更要保证“回答有依据”。因此后续RAG模块需要结合权威资料,并在回答中明确风险提示,例如当宝宝出现持续高热、精神状态异常、呼吸困难等情况时,应提示用户及时就医。
二、本周核心代码与模块
本周核心代码主要集中在以下几个方向:
1、前端页面与导航结构
frontend/
frontend/app/src/main/java/...
MainActivity.kt
ui/screens/
ui/components/
ui/navigation/
ui/theme/
主要负责Android应用页面展示、底部导航、通用组件和主题样式配置。
2、健康记录模块
app/models/health_record.py
app/schemas/health.py
app/services/health_service.py
app/api/routers/health.py
主要负责健康记录的新增、查询、修改和删除。
3、成长时间轴模块
app/models/timeline_event.py
app/schemas/timeline.py
app/services/timeline_service.py
app/api/routers/timeline.py
主要负责宝宝成长事件的记录和展示。
4、疫苗计划模块
app/models/vaccine.py
app/schemas/vaccine.py
app/services/vaccine_service.py
app/api/routers/vaccines.py
主要负责疫苗基础信息和宝宝接种记录的设计。
5、营养推荐模块
app/schemas/nutrition.py
app/services/nutrition_service.py
app/api/routers/nutrition.py
主要负责基础营养建议接口规划。
6、RAG知识库目录
knowledge_base/
knowledge_base/health/
knowledge_base/vaccine/
knowledge_base/nutrition/
knowledge_base/growth/
主要用于存放后续RAG检索所需的育儿知识文档。
三、本周遇到的问题与解决思路
1.前端页面和后端接口进度需要保持同步
本周在开发过程中发现,如果前端页面已经设计好,但后端接口还没有确定字段,前端就只能先使用模拟数据。反过来,如果后端接口已经完成,但前端页面结构还没准备好,也会影响联调效率。
因此后续需要在开发前先确定接口字段和页面展示内容,让前后端开发保持相对同步。
2.Android模拟器访问本地服务存在问题
在接口联调时,最开始前端直接访问localhost,但发现Android模拟器中无法正常连接本地FastAPI服务。后来确认,模拟器中的localhost并不等于电脑本机地址。
解决方式是将接口地址调整为模拟器访问宿主机的地址,例如:
http://10.0.2.2:8000
这个问题虽然比较基础,但在移动端联调中很常见。后续需要写入开发文档,避免重复踩坑。
3.JWT Token需要统一处理
用户登录后,后端会返回JWT Token。前端访问需要登录权限的接口时,需要在请求头中携带Token。
目前确定的格式为:
Authorization: Bearer token内容
本周暂时先完成基础携带方式,后续需要进一步封装网络请求层,让Token自动加入请求头中,避免每个接口都重复编写。
4、前后端字段命名需要统一
在联调中,我们发现部分字段命名不一致会导致前端解析失败。例如后端使用下划线命名,而前端更习惯驼峰命名。如果没有提前约定,就容易出现数据传递问题。
解决思路是后端通过Pydantic Schema明确接口结构,前端根据接口文档建立对应的数据模型。后续每次修改接口字段时,也需要同步通知前端。
5、育儿知识库内容需要谨慎选择
RAG知识库整理过程中,我们发现育儿相关资料来源较多,但质量不完全一致。由于BabyMind面向的是母婴育儿场景,不能随意使用不可靠内容。
因此后续整理知识库时,需要优先选择权威来源,并在文档中保留来源说明。同时,对于健康风险类问题,系统回答必须加入提示,避免用户把AI建议当成医学诊断。
四、阶段性成果
经过第三周开发,BabyMind项目已经从第二周的基础框架搭建阶段,逐步进入核心业务模块开发阶段。目前项目已经具备了较清晰的前后端结构,用户认证和宝宝档案管理功能已经作为基础链路继续完善,健康记录、成长时间轴、疫苗计划和营养推荐等模块也开始逐步展开。
本周最重要的成果,是系统开始围绕“宝宝档案”形成更多业务功能。也就是说,宝宝档案不再只是一个单独的数据表,而是成为后续健康记录、成长事件、疫苗计划和营养建议的基础入口。
当前系统的基础业务链路可以概括为:
用户注册/登录
↓
创建宝宝档案
↓
进入首页查看宝宝信息
↓
记录健康情况或成长事件
↓
后端保存数据
↓
前端页面展示
虽然目前功能还不算完整,但这条链路已经说明项目开始具备真实业务系统的雏形。接下来,只要在这个基础上继续扩展,就可以逐步实现更完整的科学育儿辅助功能。
同时,本周的前后端联调也让我们提前发现了一些问题,例如接口地址、Token携带、字段命名和时间格式等。这些问题如果放到后期集中处理,会影响整体开发效率。因此第三周及时暴露并解决这些问题,对后续项目推进是有帮助的。
五、下周计划
下一周我们计划继续推进以下内容:
继续完善健康记录模块,补充更多健康记录字段。
完善成长时间轴页面,实现基础数据展示。
推进疫苗计划模块,实现按宝宝月龄展示推荐接种信息。
完善营养推荐页面和后端接口。
继续进行前后端接口联调。
优化Token存储和请求头自动携带逻辑。
整理更多育儿知识Markdown文档。
初步尝试将知识文档导入Chroma向量数据库。
补充接口测试,提升后端接口稳定性。
后续项目将继续在现有基础上推进业务功能完善,并逐步接入RAG知识库和多Agent能力,使BabyMind能够从普通记录型应用进一步发展为具有智能辅助能力的科学育儿平台。
更多推荐

所有评论(0)