总体架构熟悉与预先构想:AI健康助手的后端支撑与智能模块设计
·
一、写在前面
本次项目选题为 基于人工智能的健康日志与智能建议系统。作为负责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 │
└─────────────────────────────────────────────────────────────┘
架构增强亮点:
- Config层集中管理:JWT工具、安全配置、Swagger配置均独立为配置类
- Summary服务独立抽象:针对饮食、运动、睡眠等维度,专门设计了SummaryService层负责数据聚合统计
- Util工具类沉淀:PhotoConverter、ResponseBuilder等封装通用操作
- DTO隔离:通过数据传输对象隔离内部实体与外部交互
- 全局异常处理:统一错误响应格式
三、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 提示词工程设计思路
项目采用 结构化提示词模板,确保大模型输出高质量、格式化的健康报告。提示词结构包含:
- 角色定义:明确AI为专业健康分析师
- 分析周期:指定日期范围
- 重要说明:强调无记录不代表不健康
- 用户数据:饮食、运动、睡眠、情绪、体重五个维度
- 输出要求:严格的格式规范和内容要求
- 健康评价体系:统一的评价标准和等级定义
关键设计原则:
- 数据驱动:所有分析基于实际记录数据
- 客观中立:缺少记录不扣分,基于已有数据评价
- 格式约束:强制使用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接口和格式化输出便于前端展示
更多推荐



所有评论(0)