一、写在前面

本次项目选题为 基于人工智能的健康日志与智能建议系统。作为负责AI模块与全栈协助的开发人员,我在项目初期对后端整体架构进行了深入分析,并围绕AI能力的接入与扩展做出了清晰的预先构想。

本文将基于项目已确定的技术栈和分层结构,梳理后端整体架构的特点,并结合业务需求对AI模块的设计思路进行阐述。


二、项目技术栈与整体架构概览

2.1 核心技术选型

项目后端采用经典的 Spring Boot 3.2.0 + Spring Data JPA + MySQL 技术组合,辅以以下关键组件:

技术组件 用途 版本
Spring Security + JWT 无状态认证 JJWT 0.11.5
Spring Cache + Ehcache 热点数据缓存 -
SpringDoc OpenAPI 自动API文档生成 2.0.2

2.2 三层架构的现代化实践

项目严格遵循 表现层(Controller)→ 业务逻辑层(Service)→ 数据访问层(Repository) 的经典三层架构:

┌─────────────────────────────────────────────────────────────┐
│                    Controller Layer                         │
│  AiHealthAnalysisController / FoodRecordController / ...    │
├─────────────────────────────────────────────────────────────┤
│                    Service Layer                            │
│  AiHealthAnalysisService / *SummaryService / *Service      │
├─────────────────────────────────────────────────────────────┤
│                    Repository Layer                         │
│  HealthAnalysisRecordRepository / *Repository              │
├─────────────────────────────────────────────────────────────┤
│                      MySQL Database                         │
└─────────────────────────────────────────────────────────────┘

架构增强亮点:

  1. Config层集中管理:JWT工具、安全配置、Swagger配置均独立为配置类
  2. Summary服务独立抽象:针对饮食、运动、睡眠等维度,专门设计了SummaryService层负责数据聚合统计
  3. Util工具类沉淀:PhotoConverter、ResponseBuilder等封装通用操作
  4. DTO隔离:通过数据传输对象隔离内部实体与外部交互
  5. 全局异常处理:统一错误响应格式

三、AI模块在整体架构中的定位

3.1 AI模块职责边界

根据业务需求,AI模块主要负责:

  • 健康分析报告生成:调用大模型API生成基于用户健康数据的分析报告
  • 报告持久化管理:保存、查询、删除分析记录,支持收藏功能
  • 健康等级计算:从AI响应中提取并计算健康等级

3.2 AI模块与现有服务的协作关系

AI模块通过以下流程与各基础服务协作:

用户请求生成分析报告
       ↓
AiHealthAnalysisController 接收请求
       ↓
AiHealthAnalysisService.generateHealthAnalysis(username, startDate, endDate)
       ↓
调用各SummaryService获取聚合数据
├── FoodRecordSummaryService.getFoodRecordSummary()
├── SleepRecordSummaryService.getSleepRecordSummary()
├── WorkoutSummaryService.getWorkoutSummary()
├── MoodRecordSummaryService.getMoodRecordSummary()
└── WeightRecordSummaryService.getWeightRecordSummary()
       ↓
构建结构化提示词 + 调用讯飞MaaS API
       ↓
解析大模型返回内容,提取健康等级
       ↓
构建HealthAnalysisRecord实体并持久化
       ↓
返回分析报告给前端展示

3.3 核心实体设计

HealthAnalysisRecord实体设计如下:

字段 类型 说明
id Long 主键ID
username String 关联用户名
startDate / endDate String 分析周期范围
analysisContent LONGTEXT AI生成的分析内容
healthLevel String 健康等级(优秀/良好/一般/需改善)
favorited boolean 是否收藏
createdAt Date 创建时间
notes LONGTEXT 用户备注

四、AI模块的预先构想

4.1 提示词工程设计思路

项目采用 结构化提示词模板,确保大模型输出高质量、格式化的健康报告。提示词结构包含:

  1. 角色定义:明确AI为专业健康分析师
  2. 分析周期:指定日期范围
  3. 重要说明:强调无记录不代表不健康
  4. 用户数据:饮食、运动、睡眠、情绪、体重五个维度
  5. 输出要求:严格的格式规范和内容要求
  6. 健康评价体系:统一的评价标准和等级定义

关键设计原则:

  • 数据驱动:所有分析基于实际记录数据
  • 客观中立:缺少记录不扣分,基于已有数据评价
  • 格式约束:强制使用Markdown结构输出,便于前端解析展示

4.2 大模型API封装策略

  • 请求超时处理:连接超时120秒,读取超时120秒
  • 异常分类处理
    • 401:API认证失败
    • 400:请求参数错误
    • 429:请求频率过高
    • 500:服务器错误
  • 响应解析:从choices中提取message.content
  • 健康等级提取:通过正则表达式从响应内容中提取综合评价

4.3 健康等级计算机制

// 优先提取综合评价
Pattern pattern = Pattern.compile("综合评价[::]?\\s*【?([优秀良好一般需改善]+)】?");

// 若无综合评价,则基于各维度评价计算平均分
// 优秀=4分,良好=3分,一般=2分,需改善=1分
// 四舍五入得到综合等级

4.4 报告管理功能

AI模块提供完整的报告生命周期管理:

功能 方法 说明
生成分析 generateHealthAnalysis() 调用大模型生成分析报告
保存记录 saveAnalysisRecord() 持久化分析结果
查询历史 getAnalysisHistory() 获取用户所有分析记录
收藏管理 toggleFavorite() 切换收藏状态
按等级筛选 getAnalysisByHealthLevel() 按健康等级过滤记录
批量删除 batchDeleteRecords() 批量删除指定记录

五、未来扩展方向

5.1 定时任务集成

计划引入 Spring Scheduler 实现:

  • 每日健康日报:自动生成当日健康小结
  • 周报/月报自动生成:定期汇总分析
  • 健康预警推送:异常指标自动提醒

5.2 多模型支持

设计统一的AI服务接口,支持多模型提供商(以deepseek和chatgpt为例):

┌───────────────────────────────────────┐
│          AIService (接口)             │
│     generateAnalysis(prompt)         │
├──────────────────────────────────────┤
│  ┌───────────────┐  ┌─────────────┐  │
│  │ DeepseekImpl  │  │ OpenAIImpl  │  │
│  │ Deepseek      │  │  OpenAI     │  │
│  └───────────────┘  └─────────────┘  │
└───────────────────────────────────────┘

5.3 图片识别功能探索

结合用户上传的食物照片、可穿戴设备截图,调用图像识别API进行:

  • 食物营养成分识别
  • 运动数据自动提取
  • 睡眠监测数据解析

六、总结

本项目的AI模块设计遵循 数据聚合与AI生成解耦 的原则,通过SummaryService获取结构化数据,再通过精心设计的提示词工程调用大模型生成专业健康报告。当前实现已具备完整的报告生成、存储和管理能力,未来可通过定时任务、多模型支持、图片识别等方向进一步扩展AI能力。

这种架构设计的优势在于:

  • 业务逻辑内聚:AI模块专注于分析逻辑,不关心数据存储细节
  • 横向扩展方便:可轻松添加新的健康维度或更换大模型提供商
  • 对前端友好:统一的API接口和格式化输出便于前端展示
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐