摘要
关键词:糖尿病饮食管理;AI Agent;Spring Boot;智能推荐;医疗信息系统
Abstract
At present, the dietary management of diabetics is still mainly carried out by manual consultation, and there are disconnected diet records; there is no connection with health supervision and food suggestions; no tailored guidance is provided. For these problems,we design and realize a kind of AI Agents – Intelligent Diet Recommendation System for Diabetic Patients. In this system we use thespringbootandmysqldatabase to save all our users profile diet records as well asmonitorings, the front-end wasbuildwith vue3. Ordinary people can put in health records and blood sugar, input their diet content, and receive AI’s dietary advice, also they could do online consultation with doctor and see the nutrition of recipes. Doctor users reply online and handle patient’s diet recommendation, recipe info. Admins handle diabetes type info, recipe category data and system info Operational test shows that it is a kind of system to integrate health supervision and diet suggestion process, offer patients constantly followed personal advice, improve doctors’-patients’ talk and diet arrangement level.
Keywords:Diabetes diet management, AI Agent, Spring Boot, Intelligent recommendation,Medicalinformation system
第一章 绪论
1.1 研究背景与意义
1.1.1 研究背景
全球糖尿病发病率一直居高不下,病人要长时间严格控制饮食来保持血糖的稳定。传统的饮食管理依靠纸质手册、通用食谱或者医生口头指导,不能对患者的日常生活饮食及血糖波动进行实时监测,造成饮食方案的调整迟缓,而且患者个体差异的异常也常常被忽略[1]。随着互联网以及智能终端的普及,医疗信息化系统开始被应用到慢性病的管理当中,但是现有的系统大多只注重健康数据的记录和存储,并没有对饮食的内容进行深层次的分析和个性化的推荐[2]。在此趋势之下,开发出一个可以将患者的健康档案、监测记录和饮食数据整合起来的智能推荐系统,用信息化的方式代替人工记录和经验判断,减少信息传递的误差,提高饮食管理的效率,已经成为糖尿病患者日常护理中具有现实需求和技术可行性的方向。
1.1.2 研究意义
本系统依靠AI Agent创建智能饮食推荐引擎,相比传统的手工咨询和通用食谱来说,它更契合患者血糖监测记录、健康档案、以往饮食史的实际状况,能够给出个性化的饮食建议并及时进行调整。系统把健康记录管理、饮食记录管理、监测记录管理以及在线咨询等功能融合到同一个平台上,削减了由于数据分散存贮和跨系统传递所引发的流程重复情况,改善了医生同患者之间信息交流的方式。对于医疗机构而言,系统可以集中管理糖尿病的种类、食谱信息、饮食建议等内容,从而利于慢性病的规范化管理以及服务水平的提高,同时也可以给决策提供支持。通过促使饮食管理由静态的通用指导转变为动态的个性化服务,本系统对于提高患者的生活质量、减轻患者的经济负担有实际的应用价值和社会意义。
1.2 国内外研究现状
1.2.1 国内现状
国内对于糖尿病饮食管理的研究,由最初的健康教育发展为现在的信息化系统。早期的研究大多集中在纸质手册、饮食知识库的建立和用统计分析来开展膳食评价的工具上,近些年来由于移动互联网以及人工智能技术的发展,研究者们开始创建起以移动应用、智能推荐和行为干预相融合的综合管理手段。这些研究在健康数据的记录、饮食内容的分析、患者的引导行为等方面有了一定的进展,给之后智能化系统的创建打下了技术上的基础。
宋泽龙[3]用社会认知理论来开展糖尿病人饮食产品系统设计研究,重视环境、行为和个体认知三者之间的交互作用对于饮食管理的推动作用,给本系统健康档案管理以及饮食建议模块赋予了理论支持,有益于加强建议的精确性并增进其被接受的程度。孙浩南[4]把食材识别技术和大语言模型结合起来,创建出糖尿病饮食管理系统,主要解决饮食记录自动化的录入以及智能分析的问题,为本系统饮食记录管理以及AI问答功能提供技术支持。王丽瑶、邱信贤[5]设计出适合老年糖尿病患者使用的饮食健康APP,利用深度学习技术实现食谱营养成分识别和个性化推荐,给本系统食谱信息查看和营养成分展示模块提供思路。徐静雯[6]根据行为改变轮理论建立2型糖尿病患者饮食管理干预方案,把理论模型和干预措施结合起来,给本系统饮食建议管理和监测记录管理模块提供行为干预方面的设计启示。张颖、宇文阿敏[7]利用微信平台创建病友互助小组,配合奥马哈系统护理干预,得出互动支持模式对于饮食自我管理有积极的作用,给本系统在线咨询和医生用户管理模块提供流程改进的想法。目前国内的研究在饮食记录自动化、食材识别和行为理论的应用上有了进展,但是现有的系统功能大多只关注一个环节,没有把健康档案、监测记录、饮食记录、食谱信息和饮食建议等各个环节整合到一个平台上。在此基础上对系统进行补充,使系统可以完成从数据采集到个性化推荐的全部业务流程。
1.2.2 国外现状
国外对于糖尿病饮食管理的研究更重视实证研究和技术的验证。大量的临床对照试验和系统综述对饮食干预策略、运动联合疗法、间歇性禁食等方向进行了量化研究,给制定科学的饮食方案提供了循证医学依据。有部分研究是在连续血糖监测技术与移动应用的基础上,把可穿戴设备与连续血糖监测技术结合起来,使饮食管理从被动记录变为主动干预。
Donnelly等[8]用系统综述和荟萃分析来评价糖尿病患者饮食干预对于慢性伤口预防和愈合的作用,证明了某些营养方案在并发症的管理上具有临床意义,给本系统饮食建议管理模块中危人群干预策略提供证据支持。Huang等[9]做了一个随机对照试验的荟萃分析,得出饮食加运动干预对于2型糖尿病患者血糖控制有明显的效果,给系统整合健康记录管理和监测记录管理提供了一种联合干预的设计思路。[10]Liu等人的荟萃分析显示了间歇性禁食对于2型糖尿病患者代谢的影响,提醒系统在生成饮食建议的时候要考虑到干预方案的动态调整以及长期追踪。Palomares等[11]设计出SMARTCLOTH原型系统,使用以人为本的设计思想创建了糖尿病饮食管理硬件设备,他们的用户中心设计理念给本系统交互界面和健康档案管理模块提供了一些借鉴。Peng等[12]对连续血糖监测对糖尿病患者体力活动、饮食行为影响进行了荟萃分析,得出结论认为实时监测数据可以促进行为改变,给本系统监测记录管理、饮食记录管理数据联动机制提供实证依据。国外的研究对循证医学的验证以及智能监测技术的结合比较有先机,但是部分方案需要较高的连续血糖监测硬件成本。本系统借鉴循证思想和数据联动思想,联系国内患者的使用习惯和成本限制,用软件层面的饮食记录和监测记录整合方式,创建出符合本土环境的轻量级智能推荐服务。
1.3 主要研究内容
本系统以糖尿病患者饮食管理核心需求为出发点,用AI Agent技术设计并实现一个集健康档案管理、监测记录管理、饮食记录管理、饮食建议管理、在线咨询等主要功能于一体的智能饮食推荐系统。主要内容有如下几个方面。
(1)系统架构设计与技术选型。采用前后端分离架构,后端基于Spring Boot框架构建RESTful API服务,前端使用Vue3框架实现用户交互界面。数据库选用MySQL存储业务数据,Redis用于会话管理。AI功能通过调用DashScope兼容的qwen-turbo模型实现,为饮食建议生成与智能问答提供技术支撑。
(2)多角色功能模块设计与实现。按照用户身份分为普通用户、医生用户和管理员三种角色。普通用户可以对个人的健康档案、健康记录、监测记录、饮食记录进行管理,查看食谱信息和营养成分,使用AI问答获得饮食指导,并且可以咨询医生。医生用户对患者的健康记录、监测记录、饮食记录进行管理,发布饮食建议和食谱信息,回答患者咨询。管理员对糖尿病类型、食谱类型以及整个系统的全部数据进行统一管理。
(3)基于AI Agent的饮食推荐机制。系统整合患者健康档案中的病史信息、监测记录中的血糖数据以及过往饮食记录,构建个性化饮食画像。AI Agent根据上述多源数据生成针对性的饮食建议与优化方案,并通过推荐优化字段进行反馈,实现持续跟踪与动态调整。
(4)数据流转与业务闭环设计。梳理各模块之间的数据关联关系,实现从健康监测到饮食记录提交、从AI建议生成到医生复核、从食谱发布到患者查看的完整业务链条,提升饮食管理的连续性与协同效率。
第二章 相关技术介绍
2.1 Spring Boot框架
在服务端应用开发场景下,Spring Boot框架给开发者提供了一种基于Spring生态的快速构建方式。该框架用自动配置的方式简化了项目初始设置的过程[13]。开发人员只需要引入相应的起步依赖,框架就会根据类路径中所包含的依赖自动注册相关的Bean。内嵌式Servlet容器使应用程序可以独立运行,不需要使用外部的Web服务器。框架内部定义了完整的请求处理链条,从前端控制器的请求分发到业务逻辑组件的调用都按照固定的流程进行。运行时,Spring Boot会扫描指定的包路径下带有特定注解的类,把被标注的类实例化成IoC容器中的Bean对象。在数据处理上,框架可以对请求参数进行解析、响应体进行序列化,这些功能都是通过注册一系列的转换器、消息转换器来完成的。健康检查和运行指标采集功能给服务状态监控提供支持。
2.2 MyBatis-Plus持久层框架
MyBatis-Plus在MyBatis基础上扩展了持久层操作能力。该框架用继承通用Mapper接口的方式提供基本的CRUD方法默认实现[14]。实体类和数据库表之间用注解来声明映射关系,框架运行时解析出这些元数据后生成相应的SQL语句。条件构造器机制是利用链式调用的方式创建查询条件,在内部会把这些条件对象转换成预编译的SQL片段。分页查询功能使用拦截器来实现,在SQL执行之前就自动加上了数据库方言对应的分页语句。框架给批量数据处理提供批量插入和批量更新的优化方案,减少多次数据库连接造成的消耗。逻辑删除功能是用表中留出标志字段来实现的,删除操作实际上是把这个字段的状态更新。乐观锁插件依靠版本号来防止并发更新导致的数据被覆盖。
2.3 MySQL关系数据库
MySQL用客户端/服务器的方式进行数据的存取请求。服务器进程用来监听端口来接收SQL命令,解析器把SQL文本分成语法树结构[15]。查询优化器利用统计信息来决定使用哪个索引进行访问,以及表的连接顺序,然后执行引擎就会按照优化的结果去调用存储引擎的接口来读取数据。存储引擎层用插件的形式组织起来,不同的引擎针对不同的工作负载有不同的事务日志和缓冲池管理策略。B+树索引在数据页上组织记录指针,非叶子节点保存键值和子页引用,叶子节点包含完整的行数据或者主键引用。写操作场景下,重做日志对事务修改过的物理操作进行记录,保证系统出现崩溃后数据的一致性。锁管理器维护元数据锁和行级锁,行锁用索引记录间隙来实现,防止幻读。二进制日志用事件的形式来记录数据变更的历史,供点对点复制使用。
2.4 Vue.js前端框架
Vue.js是基于虚拟DOM技术来构建响应式用户界面的。该框架用声明式的渲染语法把模板和数据模型联系起来[16]。在页面初始化的时候,编译器把模板转成渲染函数,然后执行渲染函数来产生虚拟节点树。响应式系统用对象属性拦截器来追踪依赖关系,在数据发生改变的时候触发依赖对应的副作用函数重新执行。组件系统把界面分成独立的作用域单元,每一个组件实例都有它自己的数据上下文以及生命周期钩子。运行时框架会比较新旧虚拟节点树的差别,把变更集合应用到实际的DOM节点上。指令系统给出声明式的DOM操作方式,条件渲染和列表渲染指令依照数据状态来决定元素的产生。计算属性依靠响应式依赖来创建缓存,只有当依赖发生变化的时候才会重新计算。事件绑定机制把原生DOM事件封装成组件通信通道,父子组件之间用属性向下传递数据并向上触发事件。
第三章 系统分析
3.1 可行性分析
3.1.1 技术可行性
本系统整体结构采用前后端分离的方式进行创建。后端采用的是Spring Boot框架来实现业务逻辑,Spring Boot框架在Java Web开发中已经通过大量的项目证明了它的稳定。前端使用Vue3框架来创建用户界面,它的组件化开发方式可以满足页面交互的需求。数据持久化使用MySQL数据库来实现,MySQL数据库可以对结构化的数据进行高效的存取。开发人员在校期间系统地学习了Java编程语言以及Web开发技术,并且参加过一些课程项目实践,有一定的完成本系统编码工作的能力。系统性能负载在初期用户数量较少的时候可以满足日常请求量的需要,单机部署方式可以满足需求。安全隐患主要存在于数据传输和身份认证这两个地方,用参数校验以及接口权限控制可以减少风险。因此系统从技术上是可行的。
3.1.2 经济可行性
项目投入主要是人力成本在开发阶段的支出。开发所需的硬件设备可以使用个人计算机来完成,不需要购买服务器。软件开发使用的是基于Java的开发工具包和集成开发环境,社区版的Java可以免费给个人开发者使用。MySQL数据库是开源的,没有授权费用。前端构建工具Vite是一个开源的项目,可以直接使用到开发流程当中。少量静态资源(图片、字体文件)用免费素材网站或免费素材平台获得。系统运行之后所给出的饮食管理服务同现有的解决方案存在差异,其应用价值主要表现在改善患者的生活质量上。所以系统在经济上是可行的。
3.1.3 操作可行性
目标用户为糖尿病患者、医生、管理人员。普通用户的日常操作主要是对个人健康数据进行录入、饮食记录的提交,界面设计为表单加列表的形式,与常用的主流应用风格一致。医生用户在日常工作当中已经习惯了使用电子病历和健康管理软件,本系统所提供的健康记录查看、饮食建议生成等功能符合医生的操作预期。管理人员用后台界面来维护糖尿病种类以及食谱数据,和常规的内容管理系统使用方式相似。系统上线之后运行状态依靠用户自行填写数据,后端定时做数据备份来保证信息不会丢失。后续的维护工作由开发人员来完成,修复缺陷、修改功能可以在已经有的代码上进行。因此系统在操作上是可行的。
3.2 功能需求分析
UML用例图是描述系统功能需求的图形化工具,用例图用系统与外部参与者之间的交互关系来说明系统的功能。用例图用用例来表示系统可以实现的特定功能,参与者是与系统进行交互的各种用户或者外部系统。本文会按照角色模块对系统做需求分析。
3.2.1 普通用户用例分析
普通用户可以在系统运行的时候进行注册登录。该用户群体可以发起AI问答请求来获取饮食相关的信息,也可以查看各种食谱的营养成分组成。用户有权利管理自己的健康档案资料,可以录入健康记录和监测记录数据。日常饮食情况由饮食记录模块输入,根据这些数据给出饮食建议让用户了解。普通用户可以在线咨询医生,和医生进行沟通。普通用户用例图如图3-1所示。
图3-1普通用户用例图
3.2.2 医生用例分析
医生用户登录系统后负责管理患者的健康记录、监测记录与饮食记录数据。该角色针对患者情况生成饮食建议内容,发布经过筛选的食谱信息供参考。医生用户还需处理来自普通用户的在线咨询请求并给予回复。医生用户用例图如图3-2所示。
图3-2医生用户用例图
3.2.3 管理员用例分析
管理员承担系统基础数据维护职责。该角色管理糖尿病类型分类字段,维护健康档案、健康记录、监测记录、饮食记录与饮食建议模块的全部数据。管理员还需管理食谱类型分类信息与食谱信息内容,对在线咨询记录进行监督。管理员用例图如图3-3所示。
图3-3管理员用例图
第四章 系统设计
4.1 系统架构设计
本系统采用前后端分离的模块化设计思想,将业务逻辑划分为前端交互层、后端服务层与数据持久层。用户操作通过Axios库以异步请求方式发送至Spring Boot构建的RESTful API,后端控制器接收请求后调用对应服务层组件执行业务规则处理。服务层在运算过程中涉及的数据读写操作交由MyBatis-Plus映射器完成,最终持久化至MySQL数据库。该架构设计保障了各模块之间职责清晰,降低了耦合程度。系统整体架构如图4-1所示。
图4-1系统架构图
4.2 系统结构功能设计
系统核心功能围绕糖尿病患者饮食管理需求展开,面向普通用户、医生用户与管理员三类角色分别提供差异化的操作模块。普通用户可执行注册登录、AI问答、营养成分查看、食谱信息浏览、在线咨询、健康档案维护、健康记录录入、监测记录填报、饮食记录提交以及饮食建议查阅。医生用户承担健康记录管理、监测记录管理、饮食记录管理、饮食建议发布、食谱信息管理及在线咨询回复职责。管理员负责糖尿病类型配置、健康档案维护、健康记录监管、监测记录审核、饮食记录核查、饮食建议审批、食谱类型维护、食谱信息更新及在线咨询监督。该系统功能结构如图4-2所示。
图4-2系统功能结构图
4.3 系统流程设计
4.3.1 系统总体业务流程设计
用户进入系统后根据身份选择登录或注册操作。普通用户完成认证后进入个人主页,可维护健康档案与监测记录数据。在饮食记录模块中提交每日饮食详情,系统将这些信息推送至AI服务生成个性化饮食建议。医生用户登录后查看管辖患者的健康记录与饮食记录,回复在线咨询并发布食谱信息。管理员负责对糖尿病类型、食谱分类及系统数据进行统一监管。各角色操作相互衔接形成完整闭环。总体业务流程如图4-3所示。
图4-3系统总体业务流程图
4.3.2 饮食记录管理流程设计
普通用户进入饮食记录页面后填写饮食内容详情。系统对输入数据进行格式校验,判断必填字段是否完整。校验不通过则返回提示信息要求用户补充。校验通过后记录保存至数据库,该记录同时作为后续饮食建议生成的依据。饮食记录管理流程如图4-4所示。
图4-4饮食记录管理流程图
4.3.3 健康记录管理流程设计
普通用户在健康记录页面录入血糖值与测量日期。系统检查数值范围是否处于合理区间。超出正常范围时自动标记异常并提醒用户关注。记录保存后医生用户可在对应模块中查看这些数据。健康记录管理流程如图4-5所示。

图4-5健康记录管理流程图
4.3.4 饮食建议生成流程设计
系统依据患者健康档案中的糖尿病类型与近期监测记录数据调用AI服务接口。AI模型分析饮食详情字段后生成优化建议文本。建议内容经医生用户复核确认后推送至患者端。饮食建议生成流程如图4-6所示。
图4-6饮食建议生成流程图
4.3.5 在线咨询处理流程设计
普通用户提交咨询内容后系统将该请求分配给对应医生用户。医生查看未回复问题列表并撰写答复内容。答复提交后患者端即时显示回复结果。在线咨询处理流程如图4-7所示。
图4-7在线咨询处理流程图
4.4 数据库设计
在数据库设计时,用ER图来将概念模型转换成具体的数据库结构。本阶段就是确定每一个数据表的字段类型、约束条件以及表与表之间的关系,为物理设计打下基础。之后再对优化数据存储方案展开分析,保证系统高效并且具备可扩展性。
4.4.1 E-R图设计
健康档案实体主要包括档案编号、患者姓名、年龄、糖尿病类型等属性。实体属性图如图4-8所示。
图4-8健康档案实体属性图
健康记录实体主要包括记录编号、血糖值、测量日期、所属患者等属性。实体属性图如图4-9所示。
图4-9健康记录实体属性图
监测记录实体主要包括监测编号、监测内容、注意事项、关联患者等属性。实体属性图如图4-10所示。
图4-10监测记录实体属性图
饮食记录实体主要包括饮食编号、饮食详情、记录日期、关联患者等属性。实体属性图如图4-11所示。
图4-11饮食记录实体属性图
饮食建议实体主要包括建议编号、建议内容、优化方向、关联记录等属性。实体属性图如图4-12所示。
图4-12饮食建议实体属性图
食谱信息实体主要包括食谱编号、食谱名称、食谱类型、营养价值等属性。实体属性图如图4-13所示。
图4-13食谱信息实体属性图
医生用户实体主要包括医生编号、医生姓名、科室、联系方式等属性。实体属性图如图4-14所示。
图4-14医生用户实体属性图
普通用户实体主要包括用户编号、用户名、联系方式、注册时间等属性。实体属性图如图4-15所示。
图4-15普通用户实体属性图
在线咨询实体主要包括咨询编号、咨询内容、回复内容、咨询状态等属性。实体属性图如图4-16所示。
图4-16在线咨询实体属性图
图4-17系统E-R图
4.4.2 数据库表设计
健康档案表主要用来存储患者的基础健康信息。主要包括档案编号、患者姓名、年龄、糖尿病类型等字段。如表4-1所示。
表4-1健康档案表
| 1 | 档案编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 患者姓名 | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | 年龄 | varchar | 64 | 否 | 否 | 用户年龄 |
| 4 | 糖尿病类型 | varchar | 64 | 否 | 否 | 类型名称 |
健康记录表主要用来存储患者的血糖测量数据。主要包括记录编号、血糖值、测量日期、所属患者等字段。如表4-2所示。
表4-2健康记录表
| 1 | 记录编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 血糖值 | double | – | 否 | 否 | 测量数值 |
| 3 | 测量日期 | date | – | 否 | 否 | 记录时间 |
| 4 | 所属患者 | int | 11 | 否 | 否 | 关联用户 |
监测记录表主要用来存储患者的监测项目数据。主要包括监测编号、监测内容、注意事项、关联患者等字段。如表4-3所示。
表4-3监测记录表
| 1 | 监测编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 监测内容 | text | 65535 | 否 | 否 | 监测项目 |
| 3 | 注意事项 | text | 65535 | 否 | 否 | 提醒内容 |
| 4 | 关联患者 | int | 11 | 否 | 否 | 关联用户 |
饮食记录表主要用来存储患者的日常饮食详情。主要包括饮食编号、饮食详情、记录日期、关联患者等字段。如表4-4所示。
表4-4饮食记录表
| 1 | 饮食编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 饮食详情 | text | 65535 | 否 | 否 | 食物描述 |
| 3 | 记录日期 | date | – | 否 | 否 | 用餐时间 |
| 4 | 关联患者 | int | 11 | 否 | 否 | 关联用户 |
饮食建议表主要用来存储系统生成的饮食指导内容。主要包括建议编号、建议内容、优化方向、关联记录等字段。如表4-5所示。
表4-5饮食建议表
| 1 | 建议编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 建议内容 | varchar | 255 | 否 | 否 | 指导文本 |
| 3 | 优化方向 | varchar | 255 | 否 | 否 | 改进建议 |
| 4 | 关联记录 | int | 11 | 否 | 否 | 绑定饮食 |
食谱信息表主要用来存储医生发布的健康食谱。主要包括食谱编号、食谱名称、食谱类型、营养价值等字段。如表4-6所示。
表4-6食谱信息表
| 1 | 食谱编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 食谱名称 | varchar | 64 | 否 | 否 | 菜品名称 |
| 3 | 食谱类型 | varchar | 64 | 否 | 否 | 分类标签 |
| 4 | 营养价值 | varchar | 64 | 否 | 否 | 营养说明 |
医生用户表主要用来存储医生账户的基本信息。主要包括医生编号、医生姓名、科室、联系方式等字段。如表4-7所示。
表4-7医生用户表
| 1 | 医生编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 医生姓名 | varchar | 64 | 否 | 否 | 真实姓名 |
| 3 | 科室 | varchar | 64 | 否 | 否 | 所属科室 |
| 4 | 联系方式 | varchar | 64 | 否 | 否 | 联系电话 |
普通用户表主要用来存储患者账户的基本信息。主要包括用户编号、用户名、联系方式、注册时间等字段。如表4-8所示。
表4-8普通用户表
| 1 | 用户编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 用户名 | varchar | 64 | 否 | 否 | 登录账号 |
| 3 | 联系方式 | varchar | 64 | 否 | 否 | 手机号码 |
| 4 | 注册时间 | datetime | – | 是 | 否 | 创建时刻 |
在线咨询表主要用来存储医患之间的问答记录。主要包括咨询编号、咨询内容、回复内容、咨询状态等字段。如表4-9所示。
表4-9在线咨询表
| 1 | 咨询编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 咨询内容 | text | 65535 | 否 | 否 | 患者提问 |
| 3 | 回复内容 | text | 65535 | 否 | 否 | 医生答复 |
| 4 | 咨询状态 | varchar | 64 | 否 | 否 | 处理进度 |
糖尿病类型表主要用来存储糖尿病分类数据。主要包括类型编号、糖尿病类型等字段。如表4-10所示。
表4-10糖尿病类型表
| 1 | 类型编号 | int | 11 | 是 | 是 | 唯一标识 |
| 2 | 糖尿病类型 | varchar | 64 | 否 | 否 | 类别名称 |
第五章 系统实现
5.1 普通用户功能实现
5.1.1 注册登录功能实现
用户通过登录页面提交用户名与密码,UserController中的login方法接收请求。该方法调用RsaUtils解密前端加密的密码字符串,根据用户名、邮箱或手机号查询用户表。密码匹配成功后生成UUID格式的Token令牌,将AccessToken对象存入Redis并设置2小时有效期。系统将用户信息与Token封装后返回前端完成登录流程。注册登录界面如图5-1所示。
图5-1注册登录界面
核心代码实现如下:
@PostMapping("login")
public Map<String, Object>login(@RequestBody Map<String, String> data,HttpServletRequesthttpServletRequest) {
String username =data.get("username");
String password =data.get("password");
password =RsaUtils.decryptByPrivateKey(password);
ListresultList=service.selectBaseList(service.select(map, new HashMap<>()));
UserbyUsername= (User)resultList.get(0);
5.1.2 AI问答功能实现
用户在前端输入问题后点击发送,robotic组件调用sendMsg方法。该方法将用户消息封装为role为user的消息对象,通过$aiPost发送HTTP请求至DashScope接口。请求超时时间设置为30000毫秒,模型参数指定为qwen-turbo。AI返回的响应内容经过choices[0].message结构解析后,追加到消息列表尾部。AI问答界面如图5-2所示。
图5-2 AI问答界面
核心代码实现如下:
letsendMsg= () => {
let content =contentVal.value.trim();
msgList.value.push({ content, role: "user" });
$aiPost({ messages:[{ role: "user",content }] }).then((res) => {
msgList.value.push(res.choices[0].message);
});
};
5.1.3 营养成分查看功能实现
用户进入食谱列表页面后,系统调用RecipeInformationController的get_list方法。该方法接收分页参数与查询条件,通过BaseService中的selectToPage方法执行SQL查询。食谱信息实体包含nutritional_value字段存储营养价值数据,前端将返回的JSON数据渲染为表格或卡片形式。用户在列表中点击任意食谱可跳转至详情页查看完整营养成分说明。营养成分查看界面如图5-3所示。
图5-3营养成分查看界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object>getList(HttpServletRequestrequest) {
Map<String, Object> map =service.selectToPage(service.readQuery(request),service.readConfig(request));
return success(map);
}
5.1.4 食谱信息查看功能实现
RecipeInformationController中的get_list方法处理食谱列表查询请求。该方法从请求参数中提取分页信息与筛选条件,调用服务层的selectToPage方法构建分页查询语句。查询结果包含recipe_name、recipe_type、cover_image等字段,返回前端后通过el-image组件展示封面图片。用户可通过搜索框按食谱名称或类型进行筛选。食谱信息查看界面如图5-4所示。
图5-4食谱信息查看界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object>getList(HttpServletRequestrequest) {
Map<String, Object> map =service.selectToPage(service.readQuery(request),service.readConfig(request));
return success(map);
}
5.1.5 在线咨询功能实现
用户提交咨询内容后,OnlineConsultationController的add方法接收请求。该方法读取请求体中的JSON数据,将consultation_content与regular_user字段映射到OnlineConsultation实体。实体创建完成后调用addEntity方法执行数据库插入操作,保存咨询记录并将状态设为待回复。医生端可查看该记录并进行答复。在线咨询界面如图5-5所示。
图5-5在线咨询界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
OnlineConsultationonline_consultation= newOnlineConsultation();
online_consultation.setConsultation_content(paramMap.get("consultation_content")==null?null:String.valueOf(paramMap.get("consultation_content")));
this.addEntity(online_consultation);
returnsuccess(1);
}
5.1.6 健康档案管理功能实现
HealthArchivesController的add方法处理健康档案新增请求。该方法读取请求体参数,提取ordinary_user、user_name、user_age、user_gender等字段。系统将糖尿病类型、过敏史、病史记录一并存入health_archives表。用户可通过get_list方法查询已有档案信息,支持按用户姓名筛选。健康档案管理界面如图5-6所示。
图5-6健康档案管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
HealthArchiveshealth_archives= newHealthArchives();
health_archives.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user"))));
this.addEntity(health_archives);
returnsuccess(1);
}
5.1.7 健康记录管理功能实现
用户填写血糖值与记录日期后提交,HealthRecordsController的add方法接收请求。该方法将regular_user、user_blood_glucose、record_date等字段封装为HealthRecords实体,通过addEntity方法写入数据库。医生用户可通过get_list方法按患者姓名筛选记录,健康评估字段由系统或医生填写后更新。健康记录管理界面如图5-7所示。
图5-7健康记录管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
HealthRecordshealth_records= newHealthRecords();
health_records.setUser_blood_glucose(paramMap.get("user_blood_glucose")==null?null:Double.valueOf(String.valueOf(paramMap.get("user_blood_glucose"))));
this.addEntity(health_records);
returnsuccess(1);
}
5.1.8 监测记录管理功能实现
MonitoringRecordsController的add方法处理监测记录新增请求。该方法从请求参数中提取monitoring_content与precautions字段,存入monitoring_records表。记录保存后系统在列表中展示用户的监测项目与注意事项。医生端可查看所有管辖患者的监测记录并进行标注。监测记录管理界面如图5-8所示。
图5-8监测记录管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
MonitoringRecordsmonitoring_records= newMonitoringRecords();
monitoring_records.setMonitoring_content(paramMap.get("monitoring_content")==null?null:String.valueOf(paramMap.get("monitoring_content")));
this.addEntity(monitoring_records);
returnsuccess(1);
}
5.1.9 饮食记录管理功能实现
DietRecordController的add方法处理饮食记录新增请求。该方法读取record_date与diet_specificss字段,将用户提交的饮食详情存储到diet_record表。记录提交后系统依据该数据生成饮食建议,dietary_recommendations_limit_times字段控制建议生成次数限制。饮食记录管理界面如图5-9所示。
图5-9饮食记录管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
DietRecorddiet_record= newDietRecord();
diet_record.setDiet_specificss(paramMap.get("diet_specificss")==null?null:String.valueOf(paramMap.get("diet_specificss")));
this.addEntity(diet_record);
returnsuccess(1);
}
5.1.10 饮食建议查看功能实现
图5-10饮食建议查看界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object>getList(HttpServletRequestrequest) {
Map<String, Object> map =service.selectToPage(service.readQuery(request),service.readConfig(request));
return success(map);
}
5.2 医生用户功能实现
5.2.1 健康记录管理功能实现
医生用户通过HealthRecordsController的get_list方法查看患者健康记录。该方法支持按user_name字段筛选,查询结果包含血糖值与记录日期。医生可在记录中添加health_assessment健康评估意见,通过set方法更新对应字段。该模块帮助医生跟踪患者血糖变化趋势。健康记录管理界面如图5-11所示。
图5-11健康记录管理界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object>getList(HttpServletRequestrequest) {
Map<String, Object> map =service.selectToPage(service.readQuery(request),service.readConfig(request));
return success(map);
}
5.2.2 监测记录管理功能实现
MonitoringRecordsController的get_list与set方法支持医生查看与修改监测记录。医生根据患者监测内容填写注意事项,通过调用set方法将precautions字段更新至数据库。查询时系统自动关联患者信息,返回监测项目列表供医生审阅。监测记录管理界面如图5-12所示。
图5-12监测记录管理界面
核心代码实现如下:
@PostMapping("/set")
@Transactional
public Map<String, Object>set(HttpServletRequestrequest) throwsIOException{
Map<String,String>queryMap=service.readQuery(request);
Map<String,String>configMap=service.readConfig(request);
Map<String,Object>paramMap=service.readBody(request.getReader());
MonitoringRecordsmonitoring_records= newMonitoringRecords();
monitoring_records.setPrecautions(paramMap.get("precautions")==null?null:String.valueOf(paramMap.get("precautions")));
this.setEntity(queryMap,configMap,monitoring_records);
returnsuccess(1);
}
5.2.3 饮食记录管理功能实现
医生用户通过DietRecordController的get_list方法检索患者的饮食记录。查询结果展示diet_specificss饮食详情与record_date记录日期,医生可添加注释或审核记录内容。该模块为医生调整饮食建议提供数据依据。饮食记录管理界面如图5-13所示。
图5-13饮食记录管理界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object>getList(HttpServletRequestrequest) {
Map<String, Object> map =service.selectToPage(service.readQuery(request),service.readConfig(request));
return success(map);
}
5.2.4 饮食建议管理功能实现
DietaryRecommendationsController的add方法与set方法支持医生生成和修改饮食建议。医生依据患者健康状态填写health_status字段,结合饮食详情生成recommended_optimization建议内容。建议保存后通过get_list方法推送给对应患者查看。饮食建议管理界面如图5-14所示。
图5-14饮食建议管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
DietaryRecommendationsdietary_recommendations= newDietaryRecommendations();
dietary_recommendations.setRecommended_optimization(paramMap.get("recommended_optimization")==null?null:String.valueOf(paramMap.get("recommended_optimization")));
this.addEntity(dietary_recommendations);
returnsuccess(1);
}
5.2.5 食谱信息管理功能实现
RecipeInformationController的add方法处理食谱信息新增请求。医生填写recipe_name、recipe_type、nutritional_value等字段,上传cover_image封面图片后调用addEntity存储。set方法支持修改已发布食谱的内容,release_date字段记录发布日期。食谱信息管理界面如图5-15所示。
图5-15食谱信息管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
RecipeInformationrecipe_information= newRecipeInformation();
recipe_information.setRecipe_name(paramMap.get("recipe_name")==null?null:String.valueOf(paramMap.get("recipe_name")));
this.addEntity(recipe_information);
returnsuccess(1);
}
5.2.6 在线咨询管理功能实现
医生通过OnlineConsultationController的get_list方法查看待回复咨询列表。set方法接收reply_content回复内容后更新数据库对应记录。系统按提交时间排序展示咨询条目,医生点击后填写答复并保存。在线咨询管理界面如图5-16所示。
图5-16在线咨询管理界面
核心代码实现如下:
@PostMapping("/set")
@Transactional
public Map<String, Object>set(HttpServletRequestrequest) throwsIOException{
Map<String,String>queryMap=service.readQuery(request);
Map<String,String>configMap=service.readConfig(request);
Map<String,Object>paramMap=service.readBody(request.getReader());
OnlineConsultationonline_consultation= newOnlineConsultation();
online_consultation.setReply_content(paramMap.get("reply_content")==null?null:String.valueOf(paramMap.get("reply_content")));
this.setEntity(queryMap,configMap,online_consultation);
returnsuccess(1);
}
5.3 管理员功能实现
5.3.1 糖尿病类型管理功能实现
TypeOfDiabetesController的add方法接收糖尿病类型名称后创建记录。管理员通过get_list方法查看已有类型列表,使用set方法修改类型名称。该模块为系统提供糖尿病分类数据,供健康档案模块引用。糖尿病类型管理界面如图5-17所示。
图5-17糖尿病类型管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
TypeOfDiabetestype_of_diabetes= newTypeOfDiabetes();
type_of_diabetes.setType_of_diabetes(paramMap.get("type_of_diabetes")==null?null:String.valueOf(paramMap.get("type_of_diabetes")));
this.addEntity(type_of_diabetes);
returnsuccess(1);
}
5.3.2 健康档案管理功能实现
管理员通过HealthArchivesController的get_list方法查看所有患者健康档案。del方法支持删除异常档案记录,查询时支持按user_name筛选。该模块提供档案的全量检索与维护功能。健康档案管理界面如图5-18所示。
图5-18健康档案管理界面
核心代码实现如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object>del(HttpServletRequestrequest) {
service.delete(service.readQuery(request),service.readConfig(request));
returnsuccess(1);
}
5.3.3 健康记录管理功能实现
HealthRecordsController的get_list方法支持管理员查询全部健康记录。管理员可按用户姓名或日期范围筛选数据,通过del方法批量或单条删除记录,维护系统数据整洁。健康记录管理界面如图5-19所示。
图5-19健康记录管理界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object>getList(HttpServletRequestrequest) {
Map<String, Object> map =service.selectToPage(service.readQuery(request),service.readConfig(request));
return success(map);
}
5.3.4 监测记录管理功能实现
MonitoringRecordsController的get_list方法返回所有监测记录列表。管理员通过参数sqlwhere构建复杂查询条件,按用户姓名或监测内容筛选记录。del方法支持删除不需要的历史数据。监测记录管理界面如图5-20所示。
图5-20监测记录管理界面
核心代码实现如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object>del(HttpServletRequestrequest) {
service.delete(service.readQuery(request),service.readConfig(request));
returnsuccess(1);
}
5.3.5 饮食记录管理功能实现
DietRecordController的get_list与del方法支持管理员对饮食记录进行检索和删除操作。查询结果按create_time倒序排列,展示最新提交的饮食详情。管理员可通过删除功能清理测试数据或异常记录。饮食记录管理界面如图5-21所示。
图5-21饮食记录管理界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object>getList(HttpServletRequestrequest) {
Map<String, Object> map =service.selectToPage(service.readQuery(request),service.readConfig(request));
return success(map);
}
5.3.6 饮食建议管理功能实现
DietaryRecommendationsController的get_list方法返回所有饮食建议记录。管理员可查看建议内容生成时间与对应的患者信息,通过del方法删除不适宜的建议记录。该模块确保饮食建议内容符合规范。饮食建议管理界面如图5-22所示。
图5-22饮食建议管理界面
核心代码实现如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object>del(HttpServletRequestrequest) {
service.delete(service.readQuery(request),service.readConfig(request));
returnsuccess(1);
}
5.3.7 食谱类型管理功能实现
RecipeTypeController的add方法处理食谱类型新增。管理员填写recipe_type类型名称后调用addEntity存储。get_list方法返回类型列表,供食谱发布时下拉选择。该模块维护食谱分类体系。食谱类型管理界面如图5-23所示。
图5-23食谱类型管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object>add(HttpServletRequestrequest) throwsIOException{
Map<String,Object>paramMap=service.readBody(request.getReader());
RecipeTyperecipe_type= newRecipeType();
recipe_type.setRecipe_type(paramMap.get("recipe_type")==null?null:String.valueOf(paramMap.get("recipe_type")));
this.addEntity(recipe_type);
returnsuccess(1);
}
5.3.8 食谱信息管理功能实现
RecipeInformationController的get_list方法支持管理员查询全部食谱。del方法删除违规或过期食谱信息,set方法可修改食谱名称、类型或营养价值字段。该模块实现食谱内容的全面管理。食谱信息管理界面如图5-24所示。
图5-24食谱信息管理界面
核心代码实现如下:
@PostMapping("/set")
@Transactional
public Map<String, Object>set(HttpServletRequestrequest) throwsIOException{
Map<String,String>queryMap=service.readQuery(request);
Map<String,String>configMap=service.readConfig(request);
Map<String,Object>paramMap=service.readBody(request.getReader());
RecipeInformationrecipe_information= newRecipeInformation();
recipe_information.setRecipe_name(paramMap.get("recipe_name")==null?null:String.valueOf(paramMap.get("recipe_name")));
this.setEntity(queryMap,configMap,recipe_information);
returnsuccess(1);
}
5.3.9 在线咨询管理功能实现
OnlineConsultationController的get_list方法返回所有咨询记录。管理员可按状态或用户筛选,通过del方法删除垃圾咨询内容。该模块提供咨询数据的监督与维护功能。在线咨询管理界面如图5-25所示。
图5-25在线咨询管理界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object>getList(HttpServletRequestrequest) {
Map<String, Object> map =service.selectToPage(service.readQuery(request),service.readConfig(request));
return success(map);
}
第六章 系统测试
6.1 测试目的
本次系统功能测试旨在验证基于AI Agent的糖尿病患者智能饮食推荐系统各功能模块的运行正确性。测试重点包括普通用户的健康档案与饮食记录数据录入功能是否正常,AI问答模块能否返回有效回答,医生用户的饮食建议管理及食谱信息发布功能是否完整,管理员对各类数据记录的维护操作是否可靠。通过测试确认系统在多角色并行使用场景下各功能响应与数据存储的一致性,为系统后续实际部署提供依据。
6.2 测试方法
系统功能测试采用黑盒测试方法。测试用例依据需求文档与功能设计说明进行编制,覆盖各角色核心业务操作流程。测试过程不关注系统内部代码结构与实现细节,仅验证输入数据与输出结果之间的对应关系。测试人员模拟普通用户、医生用户与管理员三种身份,分别执行健康档案管理、饮食记录管理、AI问答、饮食建议管理、食谱信息管理及在线咨询管理等操作。每个测试用例执行后记录实际输出,与预期结果进行逐项比对,判定功能实现是否符合设计要求。
6.3 测试内容
健康档案管理测试用于验证系统接收用户基础健康信息的能力。测试关注用户提交健康档案数据后系统是否正确存储并返回成功状态。健康档案管理测试如表6-1所示。
表6-1健康档案管理测试用例表
| 健康档案管理 | 新增健康档案 | 填写档案信息并提交 | 系统提示新增成功 | 符合预期 | 测试成功 |
| 健康档案管理 | 查询已有档案 | 按用户姓名检索 | 返回匹配档案列表 | 符合预期 | 测试成功 |
| 健康档案管理 | 修改档案内容 | 更新用户健康信息 | 修改后数据正确保存 | 符合预期 | 测试成功 |
健康记录管理测试用于验证系统中血糖数据录入与查询的正确性。测试关注用户提交血糖值后系统能否准确记录并按条件检索相应数据。健康记录管理测试如表6-2所示。
表6-2健康记录管理测试用例表
| 健康记录管理 | 新增健康记录 | 提交血糖值与记录日期 | 系统保存记录成功 | 符合预期 | 测试成功 |
| 健康记录管理 | 按日期查询记录 | 选择时间范围筛选 | 返回该时段内记录 | 符合预期 | 测试成功 |
| 健康记录管理 | 更新健康评估 | 医生填写评估意见 | 评估内容更新成功 | 符合预期 | 测试成功 |
饮食记录管理测试用于验证用户日常饮食信息录入与存储的可靠性。测试关注用户提交饮食详情后系统能否正确接收并关联至对应患者账户。饮食记录管理测试如表6-3所示。
表6-3饮食记录管理测试用例表
| 饮食记录管理 | 新增饮食记录 | 提交饮食详情与日期 | 系统保存记录成功 | 符合预期 | 测试成功 |
| 饮食记录管理 | 查询个人饮食记录 | 按时间倒序查看列表 | 返回按日期排序记录 | 符合预期 | 测试成功 |
| 饮食记录管理 | 修改已有记录 | 编辑饮食内容后保存 | 修改后数据正确更新 | 符合预期 | 测试成功 |
AI问答功能测试用于验证系统对用户自然语言提问的响应能力。测试关注用户提交问题后系统能否正确调用AI服务并返回与饮食管理相关的合理回答。AI问答测试如表6-4所示。
表6-4 AI问答测试用例表
| AI问答 | 饮食咨询提问 | 输入饮食相关问题 | 系统返回文本回答 | 符合预期 | 测试成功 |
| AI问答 | 异常输入处理 | 提交空内容或乱码 | 系统给予提示反馈 | 符合预期 | 测试成功 |
| AI问答 | 长文本交互 | 提交多轮连续提问 | 每轮均正常响应 | 符合预期 | 测试成功 |
饮食建议管理测试用于验证医生生成与发布饮食建议的功能完整性。测试关注医生依据患者健康状况填写建议后系统能否正确保存并推送至患者端。饮食建议管理测试如表6-5所示。
表6-5饮食建议管理测试用例表
| 饮食建议管理 | 生成饮食建议 | 填写健康状态与建议内容 | 建议记录保存成功 | 符合预期 | 测试成功 |
| 饮食建议管理 | 修改已发布建议 | 编辑建议优化字段 | 修改后内容正确更新 | 符合预期 | 测试成功 |
| 饮食建议管理 | 患者查看建议 | 登录患者账户查询 | 显示医生发布建议 | 符合预期 | 测试成功 |
食谱信息管理测试用于验证医生发布与维护食谱数据的功能正确性。测试关注食谱名称、类型及营养价值等信息能否被正确保存并展示给患者查阅。食谱信息管理测试如表6-6所示。
表6-6食谱信息管理测试用例表
| 食谱信息管理 | 新增食谱 | 填写食谱名称与类型 | 食谱记录保存成功 | 符合预期 | 测试成功 |
| 食谱信息管理 | 查询食谱列表 | 按类型筛选查看 | 返回对应类型食谱 | 符合预期 | 测试成功 |
| 食谱信息管理 | 下架食谱 | 删除指定食谱信息 | 前端不再显示该食谱 | 符合预期 | 测试成功 |
在线咨询管理测试用于验证医患之间咨询与答复流程的完整性。测试关注患者提交咨询后医生能否查看并进行有效回复,回复内容能否被患者接收。在线咨询管理测试如表6-7所示。
表6-7在线咨询管理测试用例表
| 在线咨询管理 | 患者提交咨询 | 填写咨询内容并提交 | 系统保存咨询记录 | 符合预期 | 测试成功 |
| 在线咨询管理 | 医生查看咨询 | 登录医生账户查询未回复列表 | 显示待回复咨询条目 | 符合预期 | 测试成功 |
| 在线咨询管理 | 医生回复咨询 | 填写答复内容并保存 | 患者端显示回复结果 | 符合预期 | 测试成功 |
测试结论
健康档案管理测试中新增、查询、修改操作全部通过,数据也被正确的保存下来。健康记录管理测试中血糖录入和评估更新功能正常,按照日期检索可以得到正确的结果。饮食记录管理测试结果为,所有功能都可以完成增删改查。在AI问答测试中常规提问、异常输入都得到正确的回答。饮食建议管理测试中医生生成和修改建议功能正常,患者端可以查看。食谱信息管理测试中的食谱发布、筛选、下架等操作均使用。在线咨询管理测试患者提交医生回复全部完成。全部7个核心模块测试结果均达到预期。
总结
全球糖尿病发病率不断上升,患者的饮食管理依靠通用建议和人工咨询,存在着记录杂乱无章、监测断层、缺少持续跟踪等状况。根据实际需要设计出一个基于AI Agent的糖尿病患者智能饮食推荐系统。使用Spring Boot框架和MySQL数据库构建后端服务,用Vue3框架开发前端交互界面,通过qwen-turbo模型给用户提供智能问答以及饮食建议生成的服务。系统分为健康档案管理、监测记录管理、饮食记录管理、饮食建议生成、食谱信息管理、在线咨询等功能模块,把患者健康数据与饮食建议闭环。
研究工作是按照需求分析、系统设计、编码实现、功能测试这样的顺序进行的。技术架构为前后端分离模式,后端使用RESTful API接口,前端用Axios发起异步请求。数据库设计用第三范式来实现健康档案、饮食记录、监测记录等之间的联系。系统测试包括健康档案管理、饮食记录管理、AI问答、饮食建议管理、食谱信息管理、在线咨询管理六个模块,测试结果说明各个功能的执行正确,数据存储和查询符合预期,三类角色之间业务协同流程运行正常。
系统对于AI建议生成的个性化程度还存在着欠缺。目前的饮食建议是根据患者提交的饮食详情和健康状况字段来生成的,并没有将长期监测记录的变化趋势进行融合。食谱推荐机制只使用简单的筛选方法,并没有使用协同过滤或者根据患者的画像来匹配的方法。另外系统没有加入连续血糖监测设备接口,数据录入依靠患者手工填写。
后续可以加入连续血糖监测设备的数据接口,实现血糖数据的自动采集和实时分析。饮食建议模块可以按照患者的过去饮食记录以及血糖变化趋势,用机器学习的方法给出更加符合个体的饮食建议。食谱推荐可以采用协同过滤或者内容过滤的方式,按照患者的喜好以及营养需求来对食谱进行排序。系统可以添加数据可视化的模块,为医生提供患者血糖的变化趋势图,帮助临床判断。该系统对于慢性病饮食管理有明确的应用价值和推广前景。
参考文献
[1] 黄璐璐,韦伟,李瑞玲,等.基于动态葡萄糖监测系统的体验式膳食干预对2型糖尿病患者低血糖恐惧的影响[J].军事护理,2023,40(12):22-25.
[2] 罗植琦.基于护理剂量的糖尿病患者饮食处方的构建[D].广州:暨南大学,2023.
[3] 宋泽龙.基于社会认知理论的糖尿病人饮食产品系统设计研究[D].无锡:江南大学,2024.
[4] 孙浩南.食材识别与大语言模型驱动的糖尿病饮食管理系统的关键技术研究[D].北京:北京中医药大学,2024.
[5] 王丽瑶,邱信贤.基于深度学习的老年糖尿病饮食健康APP设计研究[J].设计,2025,38(17):66-71.
[6] 徐静雯.基于行为改变轮理论的2型糖尿病患者饮食管理干预方案构建及应用[D].长春:吉林大学,2025.
[7] 张颖,宇文阿敏.基于微信平台的病友互助小组结合奥马哈系统护理干预对老年2型糖尿病患者饮食自我管理行为、疾病自我感受负担及血糖控制情况的影响[J].临床医学研究与实践,2023,8(15):141-143.
[8] Donnelly RH,CollinsEC,ClarkeDE,etal.Effectiveness of dietary interventions in individuals with diabetes for preventing and healing chronic wounds; a systematic review with meta-analysis[J]. Diabetic Medicine,2025,42(9):e70100.
[9] HuangX,HuangG,JiangM,etal. Effectiveness of diet-combined exercise interventions for glycemic control in patients with type 2 diabetes: a meta-analysis of randomized controlled trials[J]. The Journal of Sports Medicine and Physical Fitness,2026,66(2):306-319.
[10] LiuF,ZhangZ,SunW,etal.The metabolic effects of intermittent fasting in patients with type 2 diabetes exist in the short term but disappear after its discontinuation: A systematic review and meta-analysis of randomized controlled trials[J]. Nutrition Research,2025,138:135-150.
[11] Palomares MJ,LuqueMR,GarcíaLF,etal.SMARTCLOTH Prototype forDietary Management in PatientsWithDiabetes Mellitus: Tutorial on Human-Centered Design Methodology for Health Care Hardware Development[J]. Journal of Medical Internet Research,2026,28:e75744.
[12] PengM,ShenP,KimJ K. Effects of continuous glucose monitoring on physical activity and diet in diabetes: a systematic review and meta-analysis[J]. The International Journal of Behavioral Nutrition and Physical Activity,2026,23(1):14.
[13] 温彩玲.基于Vue.js和Spring Boot的开放式实训基地管理平台的设计与开发[J].太原城市职业技术学院学报,2025,23(3):60-62.
[14] 霍福华.“Vue+SpringBoot+MyBatis”技术应用探讨[J].企业科技与发展,2025,(10):76-81.
[15] 蒋继冬.浅谈MySQL中的索引优化[C].南京:中国智慧工程研究会,2023:167-173.
[16] 栗世洁,董茹茵.Vue项目网页设计中Webpack打包优化策略研究[J].无线互联科技,2026,23(06):55-58+67.
致谢
时光流逝,大学四年来的学习生活就要结束了。回顾这段刻骨铭心的求学时光,当初的选题困惑到现在论文定稿,每一个成长阶段都缺少不了师长、同学和家人的帮助和支持。在此,我向关心、帮助过我的所有人表示最诚挚的感谢。
非常感谢指导老师的教导。从选题方向的确定、开题报告的撰写、系统功能的设计、编码调试、论文的多次修改等各方面,老师一直给予悉心指导。老师治学严谨,学识渊博,在每次碰到技术难题的时候都会耐心地解答,并给出建设性的意见。同时感谢校外企业导师对项目实践环节的指导,使我在工程环境里更好的应用理论知识,使系统的设计更完善。
本次毕业设计从需求分析、系统设计、编码实现、测试等各方面进行了多次的调整。当技术瓶颈或者理论难点出现的时候,通过查阅文献、请教老师、反复调试来解决。大学四年不但形成了完备的知识结构,也养成了独立思考、解决问题的能力。
感谢学院所有老师的辛勤教学,感谢辅导员的生活关怀。感谢同窗室友、实验室同学在我学习生活中互相帮助、互相鼓励,在一起探究问题的快乐时光将永远珍藏于心。
最后要衷心感谢父母和家人。你们一直默默支持我学习,是我最坚强的后盾。在未来的发展道路上,我会继续努力,用所学回报社会。
网硕互联帮助中心



评论前必须登录!
注册