# hospital **Repository Path**: zzlhw/hospital ## Basic Information - **Project Name**: hospital - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-12-24 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能医院预约挂号系统 - 重构改造说明 ## 📋 项目介绍 这是一个基于Spring Boot框架的**医院预约挂号系统**,经过前后端分离重构,并加入了AI智能化功能: - **后端**:Spring Boot 2.7.18 + Spring AI Alibaba + MyBatis + Shiro - **前端**:Vue 3 + Element Plus + Vite - **AI能力**:基于阿里云通义千问,**Agentic RAG + Self-RAG 自适应检索 + Self-Improving Memory 自我进化**,智能导诊、智能问答、智能推荐 ## 📁 项目结构 ``` hospital/ ├── backend/ # 后端Java项目 │ ├── src/main/ │ │ ├── java/com/yunzhong/appointment/ │ │ │ ├── ai/ # AI智能模块 │ │ │ │ ├── agent/ # Spring AI Alibaba Agent (Agentic RAG + Self-RAG) │ │ │ │ ├── chunk/ # 文档分块处理器 │ │ │ │ ├── config/ # 向量存储动态配置 │ │ │ │ ├── entity/ # 实体类 │ │ │ │ ├── controller/ │ │ │ │ └── service/ # 服务层 │ │ │ │ └── impl/ │ │ │ ├── payment/ # ✅ 新增: 移动支付模块 (微信+支付宝) │ │ │ ├── parking/ # ✅ 新增: 停车预约模块 │ │ │ ├── config/ # 配置类 │ │ │ ├── entity/ # 原有实体 │ │ │ ├── mapper/ # MyBatis Mapper │ │ │ └── ... │ │ └── resources/ │ │ └── application.yml # 配置文件 │ └── pom.xml ├── frontend/ # 前端Vue项目 │ ├── src/ │ │ ├── api/ # API接口封装 │ │ │ ├── parking.js # ✅ 新增: 停车预约API │ │ │ ├── payment.js # ✅ 新增: 移动支付API │ │ ├── components/ # 公共组件 │ │ ├── views/ # 页面 │ │ │ ├── AIGuidance.vue # AI智能导诊页 │ │ │ ├── AIChat.vue # AI智能问答页 │ │ │ ├── ParkingBooking.vue # ✅ 新增: 停车预约页面 │ │ │ ├── Home.vue # 首页 (已增加敬老模式开关) │ │ │ ├── Appointment.vue # 预约挂号 │ │ │ └── admin/ # 管理后台 │ │ ├── router/ # 路由配置 │ │ └── main.js │ ├── vite.config.js │ └── package.json ├── sql/ # 数据库SQL │ └── appointment.sql # 完整建表SQL ├── docs/sql/ # ✅ 新增: 扩展SQL │ └── extension_add.sql # 新增表SQL (支付订单/停车预约/AI分诊问题) └── doc/ # 项目文档 ``` ## 🎯 AI智能化功能 ### 1. **智能导诊** (`POST /api/ai/guidance`) - 用户描述症状,AI分析可能的病情 - 自动推荐对应科室和医生 - 判断是否需要紧急就医 - 给出健康建议 ### 2. **智能问答 Agentic RAG + Self-RAG + Self-Improving Memory** (`GET /api/ai/answer`) - **Self-RAG 自适应增强**: - 第一步:大模型**自动判断**问题是否需要检索知识库,不需要直接回答,减少延迟 - 检索后:大模型**自动过滤**每个chunk是否相关,过滤噪音 - 生成回答后:**自我反思**回答是否足够,不够自动补充检索 - **Agentic RAG**: - 支持多轮反思检索,不满足自动重试最多 **3 次** - 多种向量存储**动态配置**:memory/redis/elasticsearch/milvus - **Self-Improving Memory 自我进化**: - 记录用户满意度反馈 - 检索时根据历史反馈自动调整chunk排序得分 - 用户越用越准确,实现自我进化 - 完整优化策略: - 优化分块:句号切分 + 相似度合并,保证语义连贯 - 每个 chunk 生成摘要 + 预生成候选问题 - Query 重写 + 子问题分解,揣摩用户真实意图 - 混合召回(关键词+向量)+ 大模型相关性重排序 - 上下文压缩 + 大模型自评反思 + 不满足则重试 - 基于用户角色的权限过滤 - 支持用户满意度反馈,用于学习优化 - 回答患者关于医院、挂号、就诊、流程等问题 - 24小时在线服务,减少人工咨询压力 ### 3. **智能预约推荐** (`GET /api/ai/recommend-time/{departmentId}`) - 自动查找未来一周内有可预约号源的日期 - 推荐给用户,方便预约 ## 🚀 技术升级改造内容 ### 依赖版本升级 | 依赖 | 旧版本 | 新版本 | |------|--------|--------| | Spring Boot | 1.5.7 | 2.7.18 | | Apache Shiro | 1.2.4 | 1.12.0 | | MyBatis Spring Boot | 1.3.1 | 2.3.1 | | PageHelper | 4.1.0 | pagehelper-spring-boot-starter 1.4.6 | | Druid | 1.0.28 | druid-spring-boot-starter 1.2.20 | ### 新增依赖 - `spring-ai-alibaba-starter` - Spring AI Alibaba框架 - `spring-ai-core` - Spring AI核心,支持Agent接口 - `openai-gpt3-java` - 兼容OpenAI API - `springdoc-openapi-ui` - API文档支持 ## ⚙️ 配置说明 ### 1. 数据库配置 在 `backend/src/main/resources/application.yml` 中修改: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/appointment username: 你的用户名 password: 你的密码 ``` ### 2. AI配置(二选一) #### 方式一:使用阿里云通义千问(推荐) ```yaml spring: ai: dashscope: api-key: 你的通义千问API Key # Agentic RAG 向量存储配置 app: rag: store: # 向量存储类型: memory (默认)/redis/elasticsearch/milvus type: memory ``` 获取API Key:https://dashscope.aliyun.com/ #### 方式二:使用OpenAI ```yaml openai: api-key: your OpenAI API Key app: rag: store: type: memory ``` **向量存储说明**: | 类型 | 说明 | 使用场景 | |----------|------|----------| | `memory` | 内存存储,暴力计算余弦相似度 | 小规模数据,开发测试 | | `redis` | Redis Stack 原生向量搜索 | 中等规模,已有 Redis 环境 | | `elasticsearch` | Elasticsearch 稠密向量 KNN | 中大规模,已有 ES 环境 | | `milvus` | 专业向量数据库,高性能 | 大规模生产环境 | 不配置API Key时,系统会自动使用规则匹配降级方案,基本功能仍然可用。 ## 📝 业务场景分析 ### 主要用户角色 | 角色 | 功能 | |------|------| | **患者/用户** | 注册登录、AI智能导诊、智能问答、在线预约挂号、查看我的预约 | | **医生** | 查看排班、管理预约订单 | | **管理员** | 科室管理、医生管理、排班管理、用户管理 | ### AI赋能业务场景 1. **首次就诊患者**:不知道该挂哪个科室 → **AI智能导诊**根据症状推荐 2. **就诊前疑问**:不知道医院营业时间/挂号流程 → **AI智能问答**随时回答 3. **预约挂号**:不知道哪天有号 → **AI智能推荐**可预约日期 ## 🚀 本地运行步骤 ### 后端启动 ```bash cd backend mvn clean install mvn spring-boot:run ``` 服务启动在 `http://localhost:8081` ### 前端启动 ```bash cd frontend npm install npm run dev ``` 前端服务在 `http://localhost:3000` ### 数据库初始化 执行 `sql/appointment.sql` 创建数据库和表结构 ## 📊 API文档 启动后端后访问: - Swagger UI: `http://localhost:8081/swagger-ui.html` - SpringDoc: `http://localhost:8081/swagger-ui/index.html` ## ✨ 改造总结 1. ✅ **前后端分离**:分离前后端代码,便于独立开发部署 2. ✅ **Spring AI Alibaba 集成**:使用阿里云通义千问提供AI能力 3. ✅ **Agentic RAG + Self-RAG 自适应**:大模型自动判断/过滤/反思,提升准确率 4. ✅ **Self-Improving Memory 自我进化**:记录用户反馈,自动调整排序得分,越用越准 5. ✅ **Vue3 + Element Plus**:现代化前端界面,用户体验提升 6. ✅ **依赖版本升级**:升级到稳定维护版本,修复安全问题 7. ✅ **完整AI功能**:智能导诊/问答/推荐三大核心AI功能 8. ✅ **向下兼容**:原有功能保持不变,平滑升级 9. ✅ **配置化支持**:可选择使用通义千问/OpenAI/规则降级三种模式 10. ✅ **动态向量存储**:支持多种向量存储,配置切换即可 ## 📄 项目文档 项目文档已生成Word版本,存放在 `doc/` 目录: - `doc/医院预约挂号系统项目说明.docx` - 完整项目说明文档 - `doc/医院预约挂号系统接口文档.docx` - 所有API接口说明文档 ## ✨ 功能清单 ### 用户端功能 - [x] 用户注册/登录 - [x] **全局敬老模式** - 首页开关,开启后全局大字体适配,方便老年用户使用(区县级医院专属优化) ✨ - [x] AI智能导诊 - 根据症状推荐科室医生,支持规则引擎降级(无API Key也可用) - [x] **AI智能问答 - Agentic RAG + Self-RAG + Self-Improving Memory** - 完整优化 RAG,反思重试,自我进化 - [x] **移动支付** - 完整支持微信/支付宝,挂号费/检查费/药品费在线支付 ✨ - [x] **停车预约** - 提前预约停车位,解决到院停车难问题(区县级医院刚需) ✨ - [x] 在线预约挂号 - 选择科室医生日期 - [x] 我的预约 - 查看已预约记录,管理停车预约 - [x] 智能推荐可预约日期 ### 管理端功能 - [x] 科室管理 - [x] 医生管理 - [x] 排班管理 - [x] 用户管理 - [x] 预约订单统计 - [x] RAG 知识库管理(API 支持添加文档) ### Agentic RAG + Self-RAG + Self-Improving 优化特性 - [x] 优化分块:句号切分 + 相似度合并,保证语义连贯 - [x] 每个 chunk 生成摘要 + 预生成候选问题 - [x] Query 重写 + 子问题分解 - [x] 混合召回 + 大模型相关性重排序 - [x] 上下文压缩去除噪音 - [x] **Self-RAG 自适应**:判断是否需要检索 → 过滤chunk → 反思回答是否足够 → 不够补充检索 - [x] **Self-Improving Memory 自我进化**:记录用户满意度反馈,检索时自动调整chunk排序得分 - [x] 大模型自评反思,不满足自动重试(最多 3 次) - [x] 基于用户角色的权限访问控制 - [x] **动态多种向量存储**:memory/redis/elasticsearch/milvus 配置切换 - [x] 遵循 Spring AI Alibaba Agent 框架规范 ## ❓ 常见问题 **Q1: 不配置AI API Key能运行吗?** A: 可以,基本预约功能完全正常。如果不配置AI API Key,AI相关接口会返回提示需要配置,但不影响其他功能。 **Q2: 数据库需要什么版本?** A: MySQL 5.7+ 都可以,SQL脚本在 `sql/appointment.sql` 导入即可。 **Q3: 前端和后端端口是什么?怎么跨域?** A: - 后端端口: `8081` - 前端端口: `3000` - 前端 Vite 已经配置了代理转发 `/api` 到后端,开发环境直接运行即可 ## 📝 更新日志 | 版本 | 日期 | 更新内容 | |------|------|----------| | v2.2 | 2026-03-11 | 增加 Agentic RAG + Self-RAG 自适应检索 + Self-Improving Memory 自我进化,支持多种向量存储动态配置 | | v2.1 | 2026-03-11 | 增加 Agentic RAG + Self-RAG 自适应检索,支持多种向量存储动态配置 | | v2.0 | 2026-03-11 | 前后端分离重构 + AI智能化升级 | | v1.0 | - | 原始JSP单体版本 | ## 👨‍💻 开发说明 - 遵循原有项目的 `Controller → Service → ServiceImpl → Mapper` 分层架构 - AI功能作为新模块添加,不侵入原有代码 - 保持代码风格和原有项目一致 - 使用 Lombok 简化代码 ## 📜 许可证 本项目仅供学习交流使用。