☰
Babymind 项目后端第七周周报
2026/10/24 1:11:23 网站建设 项目流程

BabyMind 项目后端第七周周报

进入第七周后,项目整体已从功能开发阶段转向系统整合与质量提升阶段。前六周完成了三大核心Agent、RAG知识库、语音交互等主要功能模块的开发,本周的重点则转向"让系统更可靠、更准确、更贴近真实使用场景"。具体工作主要围绕以下几个方向展开:知识库内容的权威化替换与来源溯源能力完善、AI输出内容的中文化统一、健康档案自动化数据准确性修复,以及新建宝宝时历史记录自动补全逻辑的完整实现。


一、本周整体完成内容

1. 完成RAG知识库权威资料接入与来源溯源能力

前几周的知识库内容主要依赖脚本自动生成,缺乏真实权威来源支撑。本周我们针对这一问题进行了系统性补充,在data/knowledge_base/authoritative/目录下新建了五份基于权威指南整理的结构化中文知识文档:

  • nhc_baby_care_guide.md:整理自国家卫生健康委员会《0-3岁婴幼儿健康养育照护指南(试行)》,覆盖各阶段喂养要点、睡眠建议、体格发育监测等内容;
  • vaccine_schedule_2024.md:整理自国家免疫规划疫苗儿童免疫程序及说明(2021年版),包含各疫苗接种时间、剂次、禁忌与接种后注意事项;
  • nutrition_feeding_guide.md:整理自中国营养学会《7-24月龄婴幼儿喂养指南(2022)》,覆盖辅食引入原则、各月龄喂养建议和过敏原引入方法;
  • who_growth_standards.md:整理自WHO儿童生长发育标准,包含各月龄大动作、语言、认知社交里程碑及早期发展促进原则;
  • common_illness_guide.md:整理自中华医学会儿科学分会相关指南,覆盖发热、腹泻、咳嗽等常见病症的处理原则与就医指征。

每份文档顶部均标注了<!-- 来源:... -->注释,入库脚本同步提取该信息作为向量元数据,确保检索结果可附带权威来源标注。

同时,对入库流程和RAG服务进行了优化,使检索结果在返回给前端时能以【参考来源:xxx】格式标注具体文献,LLM也被明确要求在回答中引用来源。重新入库后知识库总条目达到876条,经端到端验证,检索维度匹配(1024维)、相关文档命中正常、来源字段有效填充。

2. 完成AI输出内容全面中文化

此前系统中存在AI生成内容中英文混用的问题,最典型的是风险等级字段直接输出low/medium/high英文值,前端展示不一致,也不符合中文产品的使用体验。本周对此进行了系统性修复。

新建了app/core/risk_level.py作为统一的风险等级处理模块,提供normalize_risk_level()(将英文值标准化为中文)、coerce_risk_level()(允许空值的宽松转换)和risk_level_aliases()(用于数据库过滤匹配)三个工具函数。

在Schema层通过field_validator实现读写时的自动标准化,使旧数据库中的英文值在读取时自动转为中文,新写入统一存储中文值。LLM的系统提示词也明确加入了"所有回答必须使用中文,风险等级为低/中/高"的约束。后端所有风险等级比较逻辑(包括高风险健康记录自动建档、疫苗延期触发判断等)均更新为中文值判断,同时保留对旧英文值的兼容处理。

3. 修复健康记录自动建档时症状类型不准确的问题

系统在健康Agent高风险问答后会自动创建健康记录,但发现所有自动生成的记录symptom_type字段均为占位符"qa_followup",没有实际意义。

根本原因是健康Agent的结构化回答中不包含symptom_type字段,原有逻辑找不到对应字段时直接使用了硬编码兜底值。本周新增了_extract_symptom_type(question, core_conclusion)函数,通过关键词映射从用户问题和AI回答的核心结论中提取真实症状名称(发热、咳嗽、腹泻、皮疹等共14种常见症状),兜底顺序调整为:结构化字段 → 关键词提取 → core_conclusion前20字 → "健康咨询"。修复后,问"宝宝发烧38.5度怎么办"自动建档时,symptom_type正确记录为"发热"。

4. 完成新建/修改宝宝档案时历史记录自动补全

新增宝宝或修改出生日期时,系统缺乏对历史事项的自动处理,家长需要手动逐一标记此前已完成的疫苗和里程碑,使用体验较差。本周实现了auto_complete_past_events(db, baby)函数,在宝宝创建或出生日期变更后自动执行:出生日期严格早于今天的疫苗计划和成长提醒标记为已完成,今日及之后的保持待完成状态。

该功能在开发过程中暴露了一个架构问题:GET /vaccines/{baby_id}/plan每次读取都会调用sync_vaccine_plans_for_baby重新推导状态,而derive_vaccine_plan_status只在has_record=True时才返回completed,导致自动补全的状态在每次读取后被覆盖。

修复方案是在sync_vaccine_plans_for_baby中加入守卫逻辑:若一条计划已是completed且没有对应接种记录(仅自动补全场景),跳过重新推导,保持completed不变。同时将"过去"的判断改为严格小于今天(< today),避免当天待接种疫苗被误标记为已完成。该修复不影响正常的接种记录管理流程,接种记录删除后仍能正确降级状态。

5. 完成RAG端到端验证

针对"RAG是否真正起作用"的疑问,本周对系统进行了完整的端到端验证:

  • ChromaDB向量库数据完整(health 473、nutrition 207、timeline 196条);
  • 使用SiliconFlow嵌入接口(1024维)对查询进行向量化后检索正常,相关文档命中率良好;
  • 检索结果以【参考来源:...】格式注入LLM提示词,不是"裸回答";
  • 健康类问题的sources字段正确返回权威来源名称。

验证过程中也确认了一个常见误区:直接使用ChromaDB的query_texts接口测试会因嵌入维度不匹配(默认384维 vs 应用使用的1024维)报错,这是测试方式的问题而非RAG本身的缺陷。


二、本周核心代码与模块

知识库权威资料与RAG溯源:

  • data/knowledge_base/authoritative/(5份权威文档)
  • scripts/ingest_kb.py
  • app/services/rag_service.py

风险等级中文化:

  • app/core/risk_level.py(新建)
  • app/schemas/qa.py
  • app/schemas/health_record.py
  • app/services/health_record_service.py
  • app/services/vaccine_service.py
  • app/services/agent_router_service.py

健康记录症状类型修复:

  • app/services/health_record_service.py

宝宝历史记录自动补全:

  • app/services/baby_service.py
  • app/services/vaccine_service.py
  • app/api/routers/babies.py
  • app/schemas/baby.py

三、本周遇到的问题与解决思路

1. 自动补全状态被读取时覆盖

宝宝档案自动补全功能在写入时正确标记了21条历史疫苗为已完成,但下一次读取后全部被覆盖回逾期状态。排查后确认是GET /vaccines接口每次读取都触发状态重推导,而重推导逻辑要求有真实接种记录才能返回completed。解决方案是在同步函数中对"无记录的completed"状态添加保护,跳过重推导,保持自动补全结果稳定。

2. 向量维度不匹配导致的误判

在验证RAG时,直接调用ChromaDB的query_texts接口报维度不匹配错误,一度误判为RAG系统有问题。分析后明确:这是测试方式本身的问题——query_texts使用ChromaDB内置的384维嵌入模型,而应用使用的是SiliconFlow的1024维模型,两者不能混用。通过使用应用自身的嵌入客户端先生成查询向量,再调用query_embeddings接口,验证结果正常。这一问题也提示后续测试时需注意测试环境与应用环境的嵌入模型一致性。

3. 风险等级中英文混存的数据库兼容问题

风险等级改为中文后,历史数据库记录中仍存在英文值。若直接修改比较逻辑会导致旧数据查询失效。通过在Schema层的field_validator和Service层的过滤函数中同时接受中英文两种形式,保证了向后兼容,旧记录在读取时自动转为中文展示,新记录统一写入中文,无需数据迁移。


四、阶段性成果

经过第七周开发,BabyMind项目在功能完整性基础上,系统的准确性和可靠性得到了进一步提升。知识库内容从脚本生成转向权威资料支撑,AI输出实现全面中文化,自动建档的数据质量明显改善,历史记录自动补全也让新用户的使用门槛降低。

本周工作的核心价值在于从"功能能跑"到"功能可信"的转变。RAG验证结果表明系统的智能问答确实基于知识库检索而非模型直接生成,知识来源可查,这对一个育儿健康类应用至关重要。

当前系统能力可以概括为:

用户问题(文字/语音) ↓ 多Agent路由 ↓ RAG检索权威知识库(876条,含国家卫健委/WHO/中华医学会等来源) ↓ 结合宝宝个人档案(月龄/过敏原/健康记录) ↓ 生成结构化中文回答(附来源标注) ↓ 必要时自动联动疫苗计划/营养推荐/健康档案

五、下周计划

下一阶段为项目最终验收准备阶段,主要工作包括:

  • 完成全量功能验收测试,覆盖各模块主要流程;
  • 整理项目成果包,补充README文档(含知识库初始化步骤、部署说明);
  • 确认Gitee代码仓库完整开源;
  • 修复联调过程中发现的剩余小问题;
  • 准备答辩演示流程,确保核心功能在演示环境下稳定运行。

总体来看,第七周是项目从开发态转向交付态的关键一周。后续工作重心将从"开发新功能"转向"保证系统稳定可演示"。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询