基于大模型的糖尿病智能健康助理系统,帮助糖尿病患者进行血糖监测、饮食管理、健康咨询等全方位健康管理。
本项目旨在利用人工智能技术,特别是大语言模型,为糖尿病患者提供个性化的健康管理服务。系统集成了血糖监测、饮食管理、健康知识库和智能问答等功能,通过大模型提供智能化的健康建议和咨询服务。
- 用户管理:注册、登录、个人信息管理
- 血糖监测:记录、分析、预警
- 饮食管理:饮食记录、营养分析、饮食建议
- 健康数据:体重、血压、运动等健康指标记录与分析
- 智能助理:基于大模型的健康咨询与建议
- 知识库:糖尿病相关知识、文章、健康指南
- 框架:Vue 3 + TypeScript
- UI 库:Element Plus
- 状态管理:Pinia
- 路由:Vue Router
- HTTP 客户端:Axios
- 图表:ECharts, Chart.js
- 框架:FastAPI
- 数据库:MySQL
- ORM:SQLAlchemy
- 认证:JWT
- 迁移:Alembic
- 大模型集成:Ollama、Hugging Face Transformers
- 向量检索:ChromaDB
xiaoxueqi/
├── backend/ # 后端代码
│ ├── app/ # 应用代码
│ │ ├── api/ # API路由
│ │ ├── core/ # 核心配置
│ │ ├── db/ # 数据库
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 业务逻辑
│ │ └── utils/ # 工具函数
│ ├── ml/ # 机器学习相关
│ │ ├── llm/ # 大语言模型
│ │ └── prediction/ # 预测模型
│ ├── tests/ # 测试
│ ├── main.py # 入口文件
│ └── requirements.txt # 依赖
├── frontend/ # 前端代码
│ ├── src/ # 源代码
│ │ ├── api/ # API请求
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 组件
│ │ ├── composables/ # 组合式函数
│ │ ├── layouts/ # 布局
│ │ ├── router/ # 路由
│ │ ├── stores/ # 状态管理
│ │ ├── types/ # 类型定义
│ │ ├── utils/ # 工具函数
│ │ └── views/ # 页面
│ ├── index.html # HTML入口
│ └── package.json # 依赖
└── docx/ # 文档
├── prd.md # 产品需求文档
└── 需求分析与设计.md # 需求分析与设计文档
如何部署糖尿病智能健康助理系统。请按照以下步骤一步一步操作。
在开始前,我们需要下载并安装几个软件。这些软件都是免费的,请按照以下链接下载:
Python 是运行后端服务的必要软件。
- 访问 Python 官网
- 点击"Download Python 3.10.x"按钮(x 是版本号,选择最新的即可)
- 下载完成后,双击安装文件
- 重要:在安装过程中,勾选"Add Python to PATH"选项
- 点击"Install Now"完成安装
Node.js 是运行前端服务的必要软件。
- 访问 Node.js 官网
- 下载"LTS"(长期支持版)版本
- 下载完成后,双击安装文件
- 按照安装向导完成安装,全部使用默认选项即可
如果你想使用 MySQL 数据库,需要安装 MySQL:
- 访问 MySQL 官网
- 下载"MySQL Installer"
- 运行安装程序,选择"Server only"或"Custom"安装
- 设置 root 用户密码(请记住这个密码,后面需要用到)
- 完成安装
Navicat Premium 是一款强大的数据库管理工具,可以帮助你更方便地管理 MySQL 数据库。
- 访问 Navicat Premium 下载页面
- 下载"Navicat Premium 17.0.8 (x64) 中文版.zip"或"Navicat Premium 17.0.8 (x64) 英语版.zip"
- 下载完成后,解压缩文件
- 按照以下步骤进行安装和激活:
- 运行解压后的安装文件,进行安装(记住安装位置,默认为
C:\Program Files\PremiumSoft\Navicat Premium 17) - 安装完成后,先不要运行软件
- 进入解压目录中的"crack"文件夹
- 如果之前安装过 Navicat,运行"无限试用 Navicat.bat"删除注册表
- 将"winmm.dll"文件复制到 Navicat 的安装目录中
- 运行 Navicat Premium,如果没有提示试用,表示激活成功
- 运行解压后的安装文件,进行安装(记住安装位置,默认为
Visual Studio Code (VSCode) 是一款免费、功能强大的代码编辑器,非常适合用来查看和编辑项目代码。
- 访问 Visual Studio Code 官网
- 点击"Download for Windows"(或你的操作系统对应的版本)
- 下载完成后,运行安装程序
- 按照安装向导完成安装,建议勾选"Add to PATH"选项
Ollama 让你可以在自己的电脑上运行 AI 大模型。
- 访问 Ollama 官网
- 根据你的操作系统(Windows/Mac/Linux)下载对应版本
- 安装完成后,Ollama 会在后台运行
有两种方式可以获取项目代码:
方式一:直接下载压缩包
- 访问项目网站或获取项目压缩包
- 解压到你喜欢的位置,如
C:\Projects\diabetes-assistant或D:\diabetes-assistant - 记住这个位置,后续步骤会用到
方式二:使用 Git 克隆
- 安装 Git
- 打开命令提示符(在 Windows 搜索栏中输入"cmd"并打开)
- 输入以下命令:
git clone https://github.com/username/diabetes-assistant.git cd diabetes-assistant
虚拟环境可以避免不同项目之间的依赖冲突。您可以选择使用 Python 内置的 venv 或 Anaconda 创建虚拟环境。
-
打开命令提示符(在 Windows 搜索栏中输入"cmd"并打开)
-
导航到项目的后端目录:
cd 路径\到\项目\diabetes-assistant\backend例如:
cd C:\Projects\diabetes-assistant\backend -
创建虚拟环境:
python -m venv venv -
激活虚拟环境:
- Windows 系统:
venv\Scripts\activate - Mac/Linux 系统:
source venv/bin/activate
激活成功后,命令行前面会出现
(venv)字样 - Windows 系统:
Anaconda 提供了更强大的包管理和环境管理功能,特别适合数据科学和机器学习项目。
-
首先,下载并安装 Anaconda:
- 访问 Anaconda 官网
- 下载适合您操作系统的安装包
- 按照安装向导完成安装
-
打开 Anaconda Prompt(在 Windows 搜索栏中输入"Anaconda Prompt"并打开)
-
创建一个名为
diabetes_env的新环境,指定 Python 版本为 3.10:conda create -n diabetes_env python=3.10 -
激活环境:
conda activate diabetes_env -
导航到项目的后端目录:
cd 路径\到\项目\diabetes-assistant\backend -
安装项目依赖:
pip install -r requirements.txt -
如果遇到某些包安装失败,可以尝试使用 conda 安装:
conda install -c conda-forge package_name
在激活的虚拟环境中,安装项目所需的所有库:
pip install -r requirements.txt
这个过程可能需要几分钟时间,请耐心等待。如果出现错误,可能是网络问题,请重试几次。
-
在后端目录下创建一个名为
.env的文件(注意文件名前面有一个点)Windows 创建 .env 文件的方法:
- 打开记事本
- 写入以下内容
- 保存时,文件名输入
.env(包括引号),保存类型选择"所有文件"
-
在
.env文件中添加以下内容:# 数据库配置(使用 SQLite,最简单的方式) DATABASE_URL=sqlite:///diabetes_assistant.db # 大模型配置 MODEL_PROVIDER=ollama MODEL_NAME=deepseek-r1:7b MODEL_DEVICE=cpu # 调试模式 DEBUG=True如果你安装了 MySQL 并想使用它,可以替换为:
DATABASE_URL=mysql+pymysql://root:你的MySQL密码@localhost/diabetes_assistant
-
如果你选择使用 MySQL,需要先创建数据库:
- 打开命令提示符
- 输入:
mysql -u root -p - 输入你的 MySQL 密码
- 在 MySQL 命令行中执行:
CREATE DATABASE diabetes_assistant CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; exit;
-
初始化数据库表和数据:
- 确保你在后端目录,并且虚拟环境已激活(命令行前面有
(venv)字样) - 运行:
python setup_dev.py --sample-data
这个命令会创建所有必要的数据库表,并添加一些示例数据。
- 确保你在后端目录,并且虚拟环境已激活(命令行前面有
如果你想使用本地 AI 模型,需要通过 Ollama 下载模型:
-
确保 Ollama 已安装并运行
-
打开命令提示符,运行:
ollama pull deepseek-r1:7b这将下载大约 4GB 的模型文件,取决于你的网络速度,可能需要一段时间。
-
打开一个新的命令提示符窗口
-
导航到项目的前端目录:
cd 路径\到\项目\diabetes-assistant\frontend例如:
cd C:\Projects\diabetes-assistant\frontend -
安装依赖:
npm install这个过程可能需要几分钟时间。
- 在前端目录下创建一个名为
.env.local的文件 - 在文件中添加以下内容:
VITE_API_URL=http://localhost:8000
- 确保你在后端目录,并且虚拟环境已激活
- 运行:
python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000 - 看到类似以下输出表示成功:
INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) - 保持这个窗口开着,不要关闭
-
打开一个新的命令提示符窗口
-
导航到前端目录
-
运行:
npm run dev -
看到类似以下输出表示成功:
VITE v4.x.x ready in xxx ms ➜ Local: http://localhost:5173/ ➜ Network: http://192.168.x.x:5173/ -
同样保持这个窗口开着,不要关闭
- 打开你的浏览器(推荐使用 Chrome、Edge 或 Firefox 的最新版本)
- 访问:http://localhost:5173
- 你应该能看到系统的登录页面
- 使用以下默认账户登录:
- 邮箱:admin@example.com
- 密码:admin123
Navicat Premium 是一款功能强大的数据库管理工具,可以帮助你方便地查看和管理数据库。以下是使用 Navicat Premium 连接项目数据库的步骤:
如果你使用的是 MySQL 数据库:
- 打开 Navicat Premium
- 点击左上角的"连接"按钮,选择"MySQL"
- 在弹出的窗口中填写以下信息:
- 连接名:自定义一个名称,如"糖尿病助理"
- 主机:localhost(本地主机)
- 端口:3306(MySQL 默认端口)
- 用户名:root(或你设置的其他用户名)
- 密码:你在安装 MySQL 时设置的密码
- 点击"测试连接"确保连接成功
- 点击"确定"保存连接
- 在左侧连接列表中,双击你刚创建的连接
- 展开连接后,你应该能看到"diabetes_assistant"数据库
- 展开该数据库,你可以看到所有表格
如果你使用的是 SQLite 数据库:
- 打开 Navicat Premium
- 点击左上角的"连接"按钮,选择"SQLite"
- 在弹出的窗口中填写以下信息:
- 连接名:自定义一个名称,如"糖尿病助理 SQLite"
- 数据库文件:点击"浏览",找到项目目录中的"diabetes_assistant.db"文件 (通常位于项目的根目录或 backend 目录)
- 点击"确定"保存连接
- 在左侧连接列表中,双击你刚创建的连接
- 你应该能看到所有表格
- 在表格列表中,双击任意表格(如"users"表)查看其内容
- 你可以直接在表格视图中编辑数据:
- 双击某个单元格进行编辑
- 点击工具栏中的"保存"按钮保存更改
- 你也可以执行 SQL 查询:
- 点击工具栏中的"查询"按钮
- 在查询编辑器中输入 SQL 语句,如:
SELECT * FROM users; - 点击"运行"按钮执行查询
- 右键点击数据库名称
- 选择"转储 SQL 文件" > "结构和数据"
- 选择保存位置,点击"保存"
- 这将创建一个包含所有数据的 SQL 文件,可用于备份或迁移
本项目使用的数据库表结构已经在 backend/diabetes_assistant.sql 文件中定义。这个文件是由 Navicat 导出的完整数据库结构,包含了所有必要的表、字段、索引和外键约束。
在首次启动后端服务时,系统会自动检查并创建所需的数据库表。这是通过 SQLAlchemy ORM 和 Alembic 迁移工具实现的。具体流程如下:
- 系统检查数据库连接
- 如果表不存在,会根据 ORM 模型定义自动创建表结构
- 如果需要,会执行预定义的数据迁移脚本
您也可以手动初始化数据库:
# 在后端目录下执行
python setup_dev.py --init-db如果需要添加示例数据:
python setup_dev.py --sample-data项目包含以下主要数据表:
-
users - 用户信息表
- 存储用户的基本信息、认证信息和健康目标
- 主要字段:id, email, name, hashed_password, gender, diabetes_type, target_glucose_min, target_glucose_max
-
glucose_records - 血糖记录表
- 存储用户的血糖测量数据
- 主要字段:id, user_id, value, measurement_time, measurement_method, measured_at
-
diet_records - 饮食记录表
- 存储用户的饮食信息
- 主要字段:id, user_id, meal_type, meal_time, food_items, total_carbs, total_calories
-
health_records - 健康记录表
- 存储用户的综合健康信息
- 主要字段:id, user_id, record_date, notes
-
weight_records - 体重记录表
- 存储用户的体重测量数据
- 主要字段:id, user_id, weight, bmi, measured_at
-
blood_pressure_records - 血压记录表
- 存储用户的血压测量数据
- 主要字段:id, user_id, systolic, diastolic, pulse, measured_at
-
medication_records - 药物记录表
- 存储用户的用药信息
- 主要字段:id, user_id, name, dosage, taken_at, scheduled_at
-
exercise_records - 运动记录表
- 存储用户的运动信息
- 主要字段:id, user_id, exercise_type, duration, intensity, calories_burned
-
conversations 和 messages - 对话和消息表
- 存储用户与智能助理的对话历史
- 主要字段:id, user_id, content, role, timestamp
-
knowledge_base - 知识库表
- 存储糖尿病相关知识和文章
- 主要字段:id, title, content, tags
-
reminders - 提醒事项表
- 存储用户的各类提醒
- 主要字段:id, user_id, title, description, reminder_type, scheduled_time
如果您希望手动导入表结构,可以使用以下方法:
- 确保 MySQL 服务已启动
- 创建数据库:
CREATE DATABASE diabetes_assistant CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 导入表结构:
mysql -u root -p diabetes_assistant < backend/diabetes_assistant.sql
如果使用 SQLite,系统会自动创建数据库文件和表结构,无需手动导入。
您可以使用 Navicat Premium 或其他数据库管理工具查看完整的表结构。具体步骤请参考第六部分的说明。
Visual Studio Code (VSCode) 是一款功能强大的代码编辑器,可以帮助你查看和编辑项目代码。以下是使用 VSCode 的基本步骤:
- 打开 Visual Studio Code
- 点击"文件" > "打开文件夹"
- 导航到项目根目录(例如:
C:\Projects\diabetes-assistant) - 点击"选择文件夹"
为了更好地开发和查看代码,需要安装一些 VSCode 扩展。下面分为必装插件和推荐插件两类:
这些插件是使用项目的必要组件,请确保安装:
-
Python(Microsoft 官方)
- 提供 Python 语言支持、调试、智能提示等功能
- 对后端 Python 代码编辑必不可少
-
Vue Language Features (Volar)
- Vue 3 项目专用插件,提供语法高亮、智能提示等功能
- 前端 Vue 代码开发必备(如使用 Vue 2,则安装 Vetur)
-
ESLint
- JavaScript 和 TypeScript 代码检查工具
- 帮助按照项目的代码规范编写代码
-
SQLite Viewer
- 直接在 VSCode 中查看和操作 SQLite 数据库文件
- 方便在不打开 Navicat 的情况下快速查看 SQLite 数据
这些插件可以提升开发体验,建议安装:
-
Prettier
- 代码格式化工具,保持代码风格统一
- 自动调整代码格式,提高可读性
-
HTML CSS Support
- 提供 HTML 和 CSS 的智能提示
- 对编辑前端代码有帮助
-
GitLens
- Git 增强功能,可以查看每行代码的提交历史、作者等信息
- 帮助理解代码的变更历史
-
Auto Rename Tag
- 自动重命名 HTML/XML 配对的标签
- 编辑 Vue 模板时非常有用
-
REST Client
- 直接在 VSCode 中测试 API 请求
- 方便测试后端接口
-
YAML
- YAML 文件支持,提供语法高亮和验证
- 编辑配置文件时有用
要检查您是否已安装所需的插件,可以按照以下步骤操作:
- 打开 VSCode
- 点击左侧边栏的扩展图标(或按 Ctrl+Shift+X)
- 在扩展面板上方,可以看到"已安装"选项,点击它即可查看所有已安装的插件
- 如果列表中没有某个必要的插件,在搜索框中输入插件名称进行安装
- 按 Ctrl+Shift+P 打开命令面板
- 输入"Python: Select Interpreter"并选择
- 选择项目虚拟环境(通常显示为 ./venv 或 ./backend/venv)
VSCode 左侧的文件浏览器可以帮助你浏览整个项目结构:
backend/目录包含所有后端代码app/包含主要的应用代码main.py是后端的入口文件
frontend/目录包含所有前端代码src/包含主要的源代码src/views/包含所有页面组件
- 在文件浏览器中点击任何文件以打开
- 编辑文件内容
- 使用 Ctrl+S 保存更改
- 如果你修改了后端代码,由于启动时使用了
--reload参数,服务会自动重启 - 如果你修改了前端代码,页面会自动刷新以反映更改
VSCode 内置了终端,可以直接在编辑器中运行命令:
- 点击顶部菜单的"终端" > "新建终端"(或按 Ctrl+`)
- 在终端中,你可以运行前面提到的所有命令
- 症状:启动时出现
ImportError: No module named xxx - 解决方法:确保你已激活虚拟环境,并运行
pip install -r requirements.txt
- 症状:出现
ImportError: cannot import name 'cached_download' from 'huggingface_hub' - 解决方法:运行以下命令安装兼容版本:
pip install huggingface-hub==0.13.3 pip install transformers==4.26.0 pip install tokenizers==0.13.2 pip install sentence-transformers==2.2.2
- 症状:出现
OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server") - 解决方法:
- 确保 MySQL 服务已启动
- 检查
.env文件中的数据库连接信息是否正确 - 或者切换到 SQLite:修改
.env文件中的DATABASE_URL=sqlite:///diabetes_assistant.db
- 症状:出现
OSError: [Errno 48] Address already in use - 解决方法:
- 关闭可能占用 8000 端口的其他程序
- 或者使用不同的端口:
python -m uvicorn main:app --reload --port 8001 - 如果使用不同的端口,记得同时修改前端的
.env.local文件中的 API 地址
- 症状:启动时出现与 Node.js 版本相关的错误
- 解决方法:下载并安装最新的 Node.js LTS 版本
- 症状:
npm install命令出现错误 - 解决方法:
- 删除
node_modules文件夹和package-lock.json文件 - 重新运行
npm install - 如果仍然失败,尝试使用
npm install --legacy-peer-deps
- 删除
- 症状:登录或其他操作失败,控制台显示网络错误
- 解决方法:
- 确保后端服务正在运行
- 检查前端的
.env.local文件中的 API 地址是否正确 - 如果后端使用了不同的端口,相应更新前端配置
-
症状:登录失败,返回401 Unauthorized
- 前端登录时返回 401 Unauthorized 错误
- 后端日志显示
ERROR:app.db.session:数据库会话错误 - 响应状态码为 401 Unauthorized
-
可能原因:
- 数据库中没有对应的用户记录
- 密码验证失败
- 数据库连接问题导致无法查询用户
- 前端请求格式不正确
- CORS配置问题
-
诊断步骤:
-
检查数据库连接和用户表:
# 在后端目录下执行 python check_users.py确认数据库中是否有用户记录
-
创建管理员账号(如果不存在):
# 在后端目录下执行 python create_admin.py -
测试后端登录API:
# 在后端目录下执行 python test_login_api.py -
验证完整登录流程:
# 在后端目录下执行 python verify_login.py
-
-
解决方法:
- 确保数据库中存在用户记录,可以使用
create_admin.py创建管理员账号 - 确保前端使用正确的请求格式:
- 使用
application/x-www-form-urlencoded内容类型 - 使用
URLSearchParams构造表单数据 - 确保用户名字段为
username(不是email)
- 使用
- 检查前端请求中的 CORS 配置,特别是当使用
withCredentials: true时 - 在浏览器控制台中使用
test-login.js脚本测试登录流程 - 检查浏览器开发者工具的网络面板,监控登录请求和响应
- 确保数据库中存在用户记录,可以使用
-
症状:
- 浏览器控制台显示 CORS 相关错误
- 使用了
withCredentials: true但请求被阻止
-
解决方法:
- 确保后端的 CORS 配置明确列出了所有允许的源(不能使用通配符
*) - 修改后端 CORS 配置,添加前端域名到
allow_origins列表 - 确保
allow_credentials=True已在后端 CORS 中间件中设置 - 如果问题仍然存在,可以尝试在前端临时禁用
withCredentials
- 确保后端的 CORS 配置明确列出了所有允许的源(不能使用通配符
- 症状:
ollama pull命令失败或中断 - 解决方法:
- 检查网络连接
- 重新运行
ollama pull deepseek-r1:7b - 如果仍然失败,可以尝试下载较小的模型:
ollama pull tinyllama
- 症状:系统提示无法连接到 Ollama 服务
- 解决方法:
- 检查 Ollama 是否已安装
- Windows: 在任务管理器中查找 Ollama 进程,如果没有,重新安装
- Mac/Linux: 运行
ollama serve启动服务
- 症状:使用 AI 功能时系统变慢或崩溃
- 解决方法:
- 关闭其他内存占用大的程序
- 尝试使用较小的模型:修改
.env文件中的MODEL_NAME=tinyllama - 确保
MODEL_DEVICE=cpu设置已添加到.env文件中
- 症状:尝试连接 MySQL 数据库时出现错误
- 解决方法:
- 确保 MySQL 服务正在运行
- 验证用户名和密码是否正确
- 检查主机名和端口是否正确(默认为 localhost:3306)
- 症状:无法找到或打开 SQLite 数据库文件
- 解决方法:
- 确认数据库文件的位置(通常在项目根目录或 backend 目录)
- 确保文件存在且未被锁定(可能需要关闭其他正在使用该文件的程序)
- 症状:Navicat Premium 显示试用期限或需要激活
- 解决方法:
- 确保正确完成了激活步骤
- 重新运行"无限试用 Navicat.bat"脚本
- 确保"winmm.dll"文件已正确复制到安装目录
- 注册新用户:点击登录页面的"注册"按钮
- 登录:使用邮箱和密码登录
- 修改个人信息:登录后,点击右上角用户头像,选择"设置"
- 添加血糖记录:在"血糖管理"页面,点击"添加记录"按钮
- 查看血糖趋势:在"血糖管理"页面,可以查看血糖变化图表
- 设置目标:在"设置"页面,可以设置血糖目标范围
- 记录饮食:在"饮食管理"页面,点击"添加饮食记录"
- 查看营养分析:系统会自动分析记录的食物营养成分
- 获取饮食建议:基于血糖和饮食记录,系统会提供个性化建议
- 咨询健康问题:在"智能助理"页面,直接输入问题
- 查看历史对话:所有与助理的对话都会保存,可以随时查看
- 清除对话历史:如果需要,可以点击"清除历史"按钮
- 主项目文档:位于项目根目录的
README.md - 后端文档:位于
backend/README.md - 前端文档:位于
frontend/README.md - 产品需求文档:位于
docx/prd.md - 需求分析与设计:位于
docx/需求分析与设计.md
如果你在使用过程中遇到任何问题,可以:
- 查看本文档的常见问题解决部分
- 查看详细的项目文档
- 联系项目维护者寻求支持
希望本指南能帮助你顺利部署和使用糖尿病智能健康助理系统!如有任何问题或建议,欢迎反馈。
欢迎提交 Issue 和 Pull Request,一起完善这个项目。
MIT
