# AI心理健康测评系统 - 项目架构说明 ## 📋 项目概述 **项目名称**:DDNAIAI心理健康测评系统 (ry-xinli) **项目版本**:1.0.0 **技术架构**:前后端分离 + AI微服务 **开发团队**:DDNAI 这是一个集成了AI大模型和RAG知识库的智能心理健康测评系统,提供专业的心理量表测评、智能分析和个性化建议。 --- ## 🎯 核心功能模块 ### 1. 心理量表测评系统 - **量表管理** - 支持多种标准心理量表(焦虑自评量表SAS、抑郁自评量表SDS等) - 量表配置管理(题目、选项、因子、计分规则) - 量表权限控制与分配 - 量表导入导出(JSON格式) - **在线测评** - 用户在线答题 - 自动计分与因子分析 - 实时保存答题进度 - 支持移动端和Web端 - **测评报告** - 自动生成专业测评报告 - 多维度因子分析 - 分数解释与等级评定 - 历史报告查询与对比 ### 2. AI智能分析 - **大模型集成** - 集成Ollama本地大模型 - 支持多种开源模型(Llama、Qwen等) - 可配置模型地址和参数 - **RAG知识库增强** - 基于专业心理学知识库 - 语义检索相关知识 - 上下文增强生成 - 提高分析专业性和准确性 - **智能分析功能** - 测评结果深度解读 - 个性化心理健康建议 - 心理状态趋势分析 - 专业术语解释 ### 3. RAG知识库管理 - **文档管理** - 支持多种格式(txt、md、pdf、docx) - 文档上传与批量导入 - 文档分类与标签 - 文档版本管理 - **智能索引** - 自动文档解析与分块 - 向量化存储(FAISS) - 实时文件监控 - 增量索引更新 - **语义检索** - 基于向量的语义搜索 - 支持中文语义理解 - Top-K相关文档检索 - 检索结果排序优化 - **知识库内容** - 心理健康基础知识 - 心理量表专业解读 - 个性化分析案例库 - 青少年心理发展特点 ### 4. 用户与权限管理 - **用户管理** - 用户注册与登录 - 用户档案管理 - 用户分组与角色 - 测评历史记录 - **权限控制** - 基于角色的访问控制(RBAC) - 量表访问权限 - 数据隔离与安全 - 操作日志审计 - **用户画像** - 基本信息管理 - 测评历史统计 - 心理健康档案 - 数据可视化展示 ### 5. 心理风险预警系统 - **预警规则配置** - 自定义预警条件 - 多维度风险评估 - 阈值动态调整 - 规则优先级管理 - **风险识别** - 异常结果自动识别 - 高危人群筛查 - 趋势分析预警 - 多次测评对比 - **预警处理** - 预警通知机制 - 预警记录管理 - 处理流程跟踪 - 统计分析报表 ### 6. 门户网站功能 - **内容管理** - 心理健康资讯发布 - 文章分类管理 - 富文本编辑器 - 图片上传管理 - **互动功能** - 用户评论系统 - 内容点赞收藏 - 评论审核管理 - 敏感词过滤 - **门户展示** - 首页内容推荐 - 分类浏览导航 - 搜索功能 - 响应式布局 ### 7. 系统管理功能 - **菜单管理**:动态菜单配置 - **字典管理**:系统字典维护 - **参数配置**:系统参数设置 - **通知公告**:系统消息发布 - **日志管理**:操作日志、登录日志 - **在线用户**:在线用户监控 - **定时任务**:任务调度管理 - **代码生成**:快速生成CRUD代码 --- ## 🏗️ 技术架构 ### 整体架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ 客户端层 │ ├──────────────────────────┬──────────────────────────────────┤ │ Android App (Gradle) │ Web前端 (Vue.js) │ │ - WebView加载前端 │ - Element UI │ │ - 语音读题功能 │ - Axios HTTP │ │ - PaddleSpeech集成 │ - Vuex状态管理 │ └──────────────────────────┴──────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 网关层 │ ├─────────────────────────────────────────────────────────────┤ │ Nginx (端口80) │ │ - 静态资源服务(前端dist) │ │ - API反向代理(/api → 后端30081) │ │ - 负载均衡 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ Java应用层 (Spring Boot) │ ├─────────────────────────────────────────────────────────────┤ │ 端口:30081 │ │ │ │ ├─ ry-xinli-admin (Web控制层) │ │ │ └─ Controller层:处理HTTP请求 │ │ │ │ │ ├─ ry-xinli-system (业务逻辑层) │ │ │ ├─ Service:业务逻辑实现 │ │ │ ├─ Mapper:数据访问接口 │ │ │ └─ Domain:实体类与VO │ │ │ │ │ ├─ ry-xinli-framework (框架核心) │ │ │ ├─ Security:安全认证(JWT) │ │ │ ├─ Config:系统配置 │ │ │ └─ Interceptor:拦截器 │ │ │ │ │ ├─ ry-xinli-common (通用工具) │ │ │ ├─ Utils:工具类 │ │ │ ├─ Exception:异常处理 │ │ │ └─ Annotation:自定义注解 │ │ │ │ │ ├─ ry-xinli-quartz (定时任务) │ │ │ └─ Quartz任务调度 │ │ │ │ │ └─ ry-xinli-generator (代码生成) │ │ └─ Velocity模板生成 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ AI服务层 (Python) │ ├─────────────────────────────────────────────────────────────┤ │ RAG知识库服务 (Flask) - 端口5000 │ │ ├─ app.py (Flask应用入口) │ │ ├─ document_parser.py (文档解析:PDF/DOCX/TXT/MD) │ │ ├─ text_splitter.py (文本分块:智能切分) │ │ ├─ vector_store.py (向量存储:FAISS索引) │ │ ├─ knowledge_service.py(知识库服务:检索与管理) │ │ └─ file_watcher.py (文件监控:自动索引) │ │ │ │ Ollama大模型服务 - 端口11434 │ │ ├─ 文本生成模型(Llama/Qwen等) │ │ ├─ 嵌入模型(nomic-embed-text) │ │ └─ 模型管理与推理 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 数据层 │ ├──────────────────────────┬──────────────────────────────────┤ │ MySQL (端口3306) │ Redis (端口6379) │ │ - 业务数据存储 │ - 缓存与会话 │ │ - 量表配置数据 │ - Token管理 │ │ - 用户测评记录 │ - 分布式锁 │ │ - 系统配置数据 │ - 消息队列 │ └──────────────────────────┴──────────────────────────────────┘ ``` ### 技术栈详情 #### 后端技术栈(Java) | 技术 | 版本 | 说明 | |------|------|------| | Spring Boot | 2.5.15 | 应用框架 | | Spring Security | 5.7.14 | 安全认证 | | Spring Framework | 5.3.39 | 核心框架 | | MyBatis | - | ORM框架 | | PageHelper | 1.4.7 | 分页插件 | | Druid | 1.2.23 | 数据库连接池 | | JWT | 0.9.1 | Token生成与解析 | | Swagger | 3.0.0 | API文档 | | FastJSON | 2.0.58 | JSON解析 | | OkHttp | 4.12.0 | HTTP客户端 | | POI | 4.1.2 | Excel/Word处理 | | PDFBox | 2.0.29 | PDF处理 | | Quartz | - | 定时任务 | | Velocity | 2.3 | 模板引擎 | | Kaptcha | 2.3.3 | 验证码 | | ZXing | 3.5.1 | 二维码生成 | #### 前端技术栈(Vue) | 技术 | 版本 | 说明 | |------|------|------| | Vue.js | 2.x | 前端框架 | | Element UI | - | UI组件库 | | Axios | - | HTTP请求 | | Vuex | - | 状态管理 | | Vue Router | - | 路由管理 | | Webpack | - | 模块打包 | | Babel | - | ES6+转译 | | Sass/Less | - | CSS预处理 | #### AI服务技术栈(Python) | 技术 | 版本 | 说明 | |------|------|------| | Flask | - | Web框架 | | FAISS | - | 向量检索引擎 | | Sentence Transformers | - | 文本向量化 | | PyPDF2 | - | PDF解析 | | python-docx | - | Word解析 | | Watchdog | - | 文件监控 | | Ollama | - | 本地大模型服务 | #### 移动端技术栈(Android) | 技术 | 版本 | 说明 | |------|------|------| | Gradle | 7.x | 构建工具 | | Android SDK | 33 | 开发工具包 | | WebView | - | 网页加载 | | PaddleSpeech | - | 语音合成(读题功能) | #### 数据库与中间件 | 技术 | 版本 | 说明 | |------|------|------| | MySQL | 5.7+ | 关系型数据库 | | Redis | 6.x | 缓存数据库 | | Nginx | 1.x | Web服务器 | --- ## 🔄 核心业务流程 ### 1. 用户测评流程 ``` 用户登录 ↓ 选择量表 ↓ 开始答题 ──→ 实时保存进度 ↓ 提交答卷 ↓ 后端计算得分 ──→ 因子分析 ──→ 等级评定 ↓ 调用RAG服务 ──→ 检索相关知识 ↓ 构建Prompt ──→ 调用Ollama生成分析 ↓ 生成测评报告 ──→ 保存数据库 ↓ 返回报告给用户 ──→ 支持导出/打印 ``` ### 2. AI分析流程 ``` 测评结果数据 ↓ 提取关键信息(得分、因子、等级) ↓ 调用RAG服务API ↓ RAG向量检索 ──→ 查询FAISS索引 ↓ 返回Top-K相关文档片段 ↓ 构建增强Prompt ├─ 测评结果 ├─ 量表信息 ├─ 用户画像 └─ 检索到的专业知识 ↓ 调用Ollama API ↓ 流式生成分析报告 ↓ 后处理与格式化 ↓ 返回最终分析结果 ``` ### 3. RAG知识库索引流程 ``` 文档上传/添加 ↓ 文档格式检测 ├─ PDF ──→ PyPDF2解析 ├─ DOCX ──→ python-docx解析 ├─ TXT ──→ 直接读取 └─ MD ──→ Markdown解析 ↓ 文本预处理 ├─ 清洗特殊字符 ├─ 去除多余空白 └─ 编码转换 ↓ 智能分块(text_splitter) ├─ 按段落分割 ├─ 保持语义完整 ├─ 设置重叠区域 └─ 控制块大小(500字符) ↓ 向量化(Sentence Transformers) └─ 使用多语言模型(支持中文) ↓ 存储到FAISS索引 ├─ 向量数据 └─ 元数据(文件名、块ID等) ↓ 持久化到磁盘 ├─ faiss.index(向量索引) └─ documents.json(文档元数据) ``` ### 4. 文件监控与增量更新 ``` 启动file_watcher ↓ 监控knowledge_docs目录 ↓ 检测文件变化 ├─ 新增文件 ──→ 自动索引 ├─ 修改文件 ──→ 重新索引 └─ 删除文件 ──→ 移除索引 ↓ 触发索引更新 ↓ 更新FAISS索引 ↓ 保存到磁盘 ``` --- ## 📊 数据库设计 ### 核心数据表 #### 心理测评相关表 - `psy_scale` - 心理量表主表 - `psy_scale_item` - 量表题目表 - `psy_scale_option` - 题目选项表 - `psy_factor` - 量表因子表 - `psy_factor_rule` - 因子计分规则表 - `psy_result_interpretation` - 结果解释表 - `psy_warning_rule` - 预警规则表 #### 问卷答题相关表 - `psy_questionnaire` - 问卷实例表 - `psy_questionnaire_item` - 问卷题目表 - `psy_questionnaire_option` - 问卷选项表 - `psy_questionnaire_answer` - 用户答题记录表 - `psy_assessment_report` - 测评报告表 - `psy_warning` - 预警记录表 #### 用户相关表 - `psy_user_profile` - 用户档案表 - `psy_scale_permission` - 量表权限表 - `sys_user` - 系统用户表 - `sys_role` - 角色表 - `sys_user_role` - 用户角色关联表 #### 门户网站相关表 - `psy_website_category` - 内容分类表 - `psy_website_content` - 内容表 - `psy_website_comment` - 评论表 #### 系统管理相关表 - `sys_menu` - 菜单表 - `sys_dept` - 部门表 - `sys_post` - 岗位表 - `sys_dict_type` - 字典类型表 - `sys_dict_data` - 字典数据表 - `sys_config` - 参数配置表 - `sys_notice` - 通知公告表 - `sys_oper_log` - 操作日志表 - `sys_logininfor` - 登录日志表 --- ## 🔐 安全设计 ### 认证与授权 - **JWT Token认证**:无状态认证机制 - **RBAC权限模型**:基于角色的访问控制 - **密码加密**:BCrypt加密存储 - **Token刷新机制**:支持Token自动续期 - **单点登录**:支持多端登录控制 ### 数据安全 - **SQL注入防护**:MyBatis预编译 - **XSS防护**:输入输出过滤 - **CSRF防护**:Token验证 - **敏感数据加密**:AES加密存储 - **数据脱敏**:日志脱敏处理 ### 接口安全 - **接口鉴权**:统一鉴权拦截器 - **限流控制**:防止接口滥用 - **签名验证**:关键接口签名校验 - **HTTPS传输**:生产环境强制HTTPS --- ## 🚀 部署架构 ### 开发环境 ``` 本机 (192.168.1.164) ├─ MySQL (3306) ├─ Redis (6379) ├─ Java后端 (30081) ├─ Python RAG (5000) ├─ Ollama (11434) └─ 前端开发服务器 (80) ``` ### 生产环境(内网部署) ``` 服务器 (192.168.0.106) ├─ Nginx (80) ──→ 前端静态文件 + API代理 ├─ Java后端 (30081) ──→ xinli-admin.jar ├─ Python RAG (5000) ──→ rag-python/app.py ├─ Ollama (11434) ──→ 本地大模型服务 ├─ MySQL (远程: 1.15.149.240:3306) └─ Redis (6379) ``` ### 服务端口汇总 | 服务 | 端口 | 说明 | 访问方式 | |------|------|------|----------| | Nginx | 80 | 前端入口 | http://192.168.0.106 | | Java后端 | 30081 | 后端API | http://localhost:30081 | | Python RAG | 5000 | 知识库服务 | http://localhost:5000 | | Ollama | 11434 | 大模型服务 | http://localhost:11434 | | MySQL | 3306 | 数据库 | 远程:1.15.149.240:3306 | | Redis | 6379 | 缓存 | localhost:6379 | --- ## 📁 项目目录结构 ``` xinli/ ├─ ry-xinli-admin/ # Web控制层模块 │ └─ src/main/ │ ├─ java/com/ddnai/web/ │ │ └─ controller/ # 控制器 │ │ ├─ psychology/ # 心理测评相关 │ │ ├─ system/ # 系统管理相关 │ │ └─ monitor/ # 监控相关 │ └─ resources/ │ ├─ application.yml # 主配置文件 │ └─ mybatis/ # MyBatis配置 │ ├─ ry-xinli-system/ # 业务逻辑层模块 │ └─ src/main/java/com/ddnai/system/ │ ├─ domain/ # 实体类 │ ├─ mapper/ # 数据访问接口 │ └─ service/ # 业务逻辑实现 │ ├─ ry-xinli-framework/ # 框架核心模块 │ └─ src/main/java/com/ddnai/framework/ │ ├─ config/ # 系统配置 │ ├─ security/ # 安全认证 │ ├─ interceptor/ # 拦截器 │ └─ aspectj/ # AOP切面 │ ├─ ry-xinli-common/ # 通用工具模块 │ └─ src/main/java/com/ddnai/common/ │ ├─ utils/ # 工具类 │ ├─ exception/ # 异常处理 │ ├─ annotation/ # 自定义注解 │ └─ core/ # 核心组件 │ ├─ ry-xinli-quartz/ # 定时任务模块 │ └─ src/main/java/com/ddnai/quartz/ │ ├─ ry-xinli-generator/ # 代码生成模块 │ └─ src/main/java/com/ddnai/generator/ │ ├─ xinli-ui/ # 前端Vue项目 │ ├─ src/ │ │ ├─ api/ # API接口 │ │ ├─ assets/ # 静态资源 │ │ ├─ components/ # 组件 │ │ ├─ layout/ # 布局 │ │ ├─ router/ # 路由 │ │ ├─ store/ # Vuex状态 │ │ ├─ utils/ # 工具类 │ │ └─ views/ # 页面视图 │ ├─ public/ # 公共资源 │ ├─ package.json # 依赖配置 │ └─ vue.config.js # Vue配置 │ ├─ xinli-App/ # Android应用 │ ├─ app/ │ │ └─ src/main/ │ │ ├─ java/ # Java代码 │ │ └─ res/ # 资源文件 │ ├─ build.gradle # Gradle配置 │ └─ gradlew.bat # Gradle包装器 │ ├─ rag-python/ # Python RAG服务 │ ├─ app.py # Flask应用入口 │ ├─ config.py # 配置文件 │ ├─ document_parser.py # 文档解析 │ ├─ text_splitter.py # 文本分块 │ ├─ vector_store.py # 向量存储 │ ├─ knowledge_service.py # 知识库服务 │ ├─ file_watcher.py # 文件监控 │ ├─ requirements.txt # Python依赖 │ ├─ knowledge_docs/ # 知识库文档目录 │ ├─ index_data/ # 索引数据目录 │ ├─ uploads/ # 上传临时目录 │ ├─ install.bat # 安装脚本 │ └─ start.bat # 启动脚本 │ ├─ PaddleSpeech-develop/ # 语音合成库(App读题功能) │ ├─ Archive/ # 归档文档 │ ├─ 项目介绍/ # 项目文档 │ ├─ 环境配置/ # 环境配置说明 │ ├─ 量表/ # 量表配置文件 │ └─ 项目/ # 项目相关文档 │ └─ pom.xml # Maven主配置 ``` --- ## 🔧 关键配置文件 ### 1. 后端配置(application.yml) ```yaml # 服务端口 server: port: 30081 # 数据库配置 spring: datasource: url: jdbc:mysql://1.15.149.240:3306/xinli?useUnicode=true&characterEncoding=utf8 username: root password: ****** # Redis配置 redis: host: localhost port: 6379 # RAG服务配置 rag: enabled: true service-url: http://127.0.0.1:5000 # Ollama配置 ollama: base-url: http://localhost:11434 model: qwen2.5:7b ``` ### 2. 前端配置(vue.config.js) ```javascript module.exports = { devServer: { port: 80, proxy: { '/api': { target: 'http://localhost:30081', changeOrigin: true, pathRewrite: { '^/api': '' } } } } } ``` ### 3. RAG服务配置(config.py) ```python # 服务端口 PORT = 5000 # 文本分块配置 CHUNK_SIZE = 500 CHUNK_OVERLAP = 50 # 向量模型(支持中文) EMBEDDING_MODEL = "paraphrase-multilingual-MiniLM-L12-v2" # 检索返回数量 TOP_K = 5 # 知识库目录 KNOWLEDGE_DOCS_DIR = "knowledge_docs" INDEX_DATA_DIR = "index_data" ``` ### 4. Nginx配置 ```nginx server { listen 80; server_name 192.168.0.106; # 前端静态文件 location / { root /www/wwwroot/xinli/dist; index index.html; try_files $uri $uri/ /index.html; } # 后端API代理 location /api/ { proxy_pass http://127.0.0.1:30081/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` --- ## 🎨 前端页面结构 ### 管理后台页面 - **首页**:数据统计、快速入口 - **心理测评管理** - 量表管理:量表列表、新增/编辑、导入/导出 - 题目管理:题目配置、选项设置 - 因子管理:因子配置、计分规则 - 解释管理:结果解释、等级设置 - 预警规则:规则配置、阈值设置 - **问卷管理** - 问卷列表:查看所有问卷实例 - 答题记录:用户答题详情 - 测评报告:报告查看、导出 - 预警记录:预警查看、处理 - **知识库管理** - 文档管理:上传、删除、查看 - 索引管理:重建索引、统计信息 - 检索测试:测试语义检索 - **AI分析管理** - 模型配置:Ollama地址、模型选择 - 分析记录:历史分析查看 - 提示词管理:Prompt模板配置 - **用户管理** - 用户列表:用户信息管理 - 用户档案:详细档案查看 - 权限分配:量表权限设置 - **门户管理** - 分类管理:内容分类设置 - 内容管理:文章发布、编辑 - 评论管理:评论审核、删除 - **系统管理** - 菜单管理、角色管理、部门管理 - 字典管理、参数设置、通知公告 - 日志管理、在线用户、定时任务 ### 用户端页面(App/Web) - **登录注册**:用户登录、注册 - **首页**:推荐量表、最新资讯 - **量表测评** - 量表列表:可用量表展示 - 在线答题:答题界面(支持语音读题) - 测评报告:查看报告、AI分析 - 历史记录:历史测评查看 - **个人中心** - 个人信息:资料编辑 - 我的测评:测评历史 - 我的报告:报告管理 - **资讯浏览** - 文章列表:分类浏览 - 文章详情:阅读、评论 --- ## 🚦 接口设计规范 ### RESTful API规范 - **GET**:查询操作 - **POST**:新增操作 - **PUT**:修改操作 - **DELETE**:删除操作 ### 统一响应格式 ```json { "code": 200, "msg": "操作成功", "data": { // 业务数据 } } ``` ### 主要API接口 #### 心理测评相关 ``` GET /psychology/scale/list # 获取量表列表 POST /psychology/scale # 新增量表 PUT /psychology/scale # 修改量表 DELETE /psychology/scale/{id} # 删除量表 POST /psychology/scale/import # 导入量表JSON GET /psychology/scale/export/{id} # 导出量表JSON GET /psychology/questionnaire/list # 获取问卷列表 POST /psychology/questionnaire/answer # 提交答题 GET /psychology/questionnaire/report/{id} # 获取测评报告 ``` #### AI分析相关 ``` POST /psychology/ai/analyze # AI分析测评结果 GET /psychology/ai/status # 获取AI服务状态 POST /psychology/ai/chat # AI对话接口 ``` #### RAG知识库相关 ``` GET /psychology/rag/health # 健康检查 GET /psychology/rag/documents # 获取文档列表 POST /psychology/rag/upload # 上传文档 DELETE /psychology/rag/documents/{filename} # 删除文档 POST /psychology/rag/search # 语义搜索 POST /psychology/rag/rebuild # 重建索引 GET /psychology/rag/stats # 获取统计信息 ``` #### 用户相关 ``` POST /login # 用户登录 POST /register # 用户注册 GET /getInfo # 获取用户信息 POST /logout # 退出登录 GET /psychology/profile/{id} # 获取用户档案 PUT /psychology/profile # 更新用户档案 ``` --- ## 🔍 核心算法与逻辑 ### 1. 量表计分算法 ``` 总分计算: 总分 = Σ(题目得分) 因子分计算: 因子分 = Σ(因子内题目得分 × 权重) 等级评定: 根据分数范围匹配对应等级 - 正常:0-20分 - 轻度:21-40分 - 中度:41-60分 - 重度:61-80分 ``` ### 2. RAG检索算法 ``` 1. 查询向量化 query_vector = embedding_model.encode(query) 2. 相似度计算(余弦相似度) similarity = cosine_similarity(query_vector, doc_vectors) 3. Top-K检索 top_k_docs = faiss_index.search(query_vector, k=5) 4. 结果排序与过滤 - 按相似度降序 - 过滤低相关文档(阈值0.5) - 返回文档内容 ``` ### 3. AI分析Prompt构建 ``` 系统提示词: 你是一位专业的心理咨询师... 用户信息: 姓名:{name} 年龄:{age} 性别:{gender} 测评结果: 量表:{scale_name} 总分:{total_score} 等级:{level} 因子得分:{factor_scores} 专业知识(RAG检索): {retrieved_knowledge} 分析要求: 1. 结合测评结果进行专业分析 2. 参考提供的专业知识 3. 给出个性化建议 4. 语言通俗易懂 ``` ### 4. 预警规则匹配 ``` 规则类型: 1. 单因子阈值:某因子分数 > 阈值 2. 总分阈值:总分 > 阈值 3. 多因子组合:多个因子同时满足条件 4. 趋势预警:连续多次测评分数上升 匹配逻辑: for rule in warning_rules: if match_condition(result, rule): create_warning(user, result, rule) send_notification(user, warning) ``` --- ## 📈 性能优化策略 ### 后端优化 - **数据库优化** - 索引优化:关键字段建立索引 - 查询优化:避免N+1查询 - 连接池:Druid连接池配置 - 读写分离:主从复制(可选) - **缓存策略** - Redis缓存:热点数据缓存 - 本地缓存:Caffeine缓存 - 缓存预热:启动时加载常用数据 - 缓存更新:定时刷新策略 - **异步处理** - 异步任务:@Async注解 - 消息队列:Redis队列 - 定时任务:Quartz调度 ### 前端优化 - **资源优化** - 代码分割:路由懒加载 - 图片优化:压缩、懒加载 - 打包优化:Webpack配置 - CDN加速:静态资源CDN - **渲染优化** - 虚拟滚动:长列表优化 - 防抖节流:频繁操作优化 - Keep-alive:页面缓存 ### AI服务优化 - **向量检索优化** - FAISS索引优化:IVF索引 - 批量检索:减少调用次数 - 缓存热门查询:Redis缓存 - **模型推理优化** - 模型量化:减少显存占用 - 批处理:批量推理 - 流式输出:提升用户体验 --- ## 🛠️ 开发与部署 ### 开发环境搭建 #### 1. 后端开发环境 ```bash # 安装JDK 1.8 # 安装Maven 3.6+ # 安装MySQL 5.7+ # 安装Redis 6.x # 克隆项目 git clone # 导入数据库 mysql -u root -p < 项目介绍/项目/心理备份.sql # 修改配置 # 编辑 ry-xinli-admin/src/main/resources/application.yml # 修改数据库连接、Redis配置等 # 启动后端 cd ry-xinli-admin mvn spring-boot:run ``` #### 2. 前端开发环境 ```bash # 安装Node.js 14+ # 安装npm或yarn # 安装依赖 cd xinli-ui npm install # 启动开发服务器 npm run dev # 访问 http://localhost:80 ``` #### 3. Python RAG服务 ```bash # 安装Python 3.8+ # 安装依赖 cd rag-python python -m venv venv venv\Scripts\activate pip install -r requirements.txt # 启动服务 python app.py # 访问 http://localhost:5000 ``` #### 4. Ollama大模型 ```bash # 安装Ollama # 下载地址:https://ollama.ai # 拉取模型 ollama pull qwen2.5:7b ollama pull nomic-embed-text # 启动服务 ollama serve ``` ### 生产环境部署 #### 1. 后端部署 ```bash # 打包 mvn clean package -DskipTests # 上传jar包到服务器 # 文件位置:ry-xinli-admin/target/xinli-admin.jar # 启动服务 nohup java -jar xinli-admin.jar > xinli.log 2>&1 & # 或使用systemd服务 sudo systemctl start xinli-backend ``` #### 2. 前端部署 ```bash # 打包 npm run build:prod # 上传dist目录到服务器 # 配置Nginx指向dist目录 # 重启Nginx sudo systemctl restart nginx ``` #### 3. Android App打包 ```bash cd xinli-App # 检查JDK和SDK ./check-jdk.bat # 打包正式版APK ./gradlew assembleRelease # APK位置:app/build/outputs/apk/release/app-release.apk ``` ### 启动顺序 ``` 1. MySQL、Redis(基础服务) 2. Ollama(大模型服务) 3. Python RAG服务 4. Java后端服务 5. Nginx(前端服务) ``` ### 停止服务 ```bash # 停止Java后端 ps -ef | grep xinli-admin.jar kill -9 # 停止Python RAG ps -ef | grep app.py kill -9 # 停止Ollama ps -ef | grep ollama kill -9 # 停止Nginx sudo systemctl stop nginx ``` --- ## 🧪 测试说明 ### 单元测试 - 使用JUnit 5进行单元测试 - Service层业务逻辑测试 - Mapper层数据访问测试 - 工具类测试 ### 接口测试 - 使用Swagger进行接口测试 - Postman接口集合 - 自动化接口测试脚本 ### 性能测试 - JMeter压力测试 - 接口响应时间监控 - 并发用户测试 - 数据库性能分析 --- ## 📝 开发规范 ### 代码规范 - **命名规范** - 类名:大驼峰(PascalCase) - 方法名:小驼峰(camelCase) - 常量:全大写下划线分隔 - 包名:全小写 - **注释规范** - 类注释:说明类的功能、作者、日期 - 方法注释:说明参数、返回值、异常 - 关键逻辑注释:复杂算法说明 - **日志规范** - ERROR:系统错误 - WARN:警告信息 - INFO:关键业务信息 - DEBUG:调试信息 ### Git规范 - **分支管理** - master:生产环境 - develop:开发环境 - feature/*:功能分支 - hotfix/*:紧急修复 - **提交规范** - feat:新功能 - fix:修复bug - docs:文档更新 - style:代码格式 - refactor:重构 - test:测试 - chore:构建/工具 ### 数据库规范 - 表名:小写下划线分隔 - 字段名:小写下划线分隔 - 主键:id(自增) - 创建时间:create_time - 更新时间:update_time - 逻辑删除:del_flag --- ## 🔮 未来规划 ### 功能扩展 - [ ] 多租户支持 - [ ] 移动端原生App(Flutter) - [ ] 微信小程序版本 - [ ] 视频咨询功能 - [ ] 在线预约系统 - [ ] 数据分析大屏 - [ ] 导出PDF报告 - [ ] 多语言支持 ### 技术升级 - [ ] 升级Spring Boot 3.x - [ ] 引入Spring Cloud微服务 - [ ] 使用Elasticsearch全文检索 - [ ] 引入消息队列(RabbitMQ/Kafka) - [ ] 容器化部署(Docker/K8s) - [ ] 前端升级Vue 3 - [ ] 引入TypeScript - [ ] 使用GraphQL API ### AI能力增强 - [ ] 支持更多大模型(GPT、Claude等) - [ ] 多模态分析(语音、图像) - [ ] 情感分析 - [ ] 对话式测评 - [ ] 智能推荐量表 - [ ] 预测性分析 - [ ] 知识图谱构建 --- ## 📞 联系方式 **开发团队**:DDNAI **项目地址**:http://www.ddnai.com **技术支持**:详见项目文档 --- ## 📄 附录 ### A. 常见问题 **Q1: 首次启动RAG服务很慢?** A: 首次启动需要下载向量模型(约500MB),请耐心等待。模型会缓存到用户目录。 **Q2: Ollama连接失败?** A: 检查Ollama服务是否启动,端口11434是否被占用,防火墙是否开放。 **Q3: 前端访问后端接口跨域?** A: 开发环境使用vue.config.js代理,生产环境使用Nginx代理。 **Q4: 数据库连接失败?** A: 检查数据库地址、端口、用户名、密码是否正确,数据库是否启动。 **Q5: App打包失败?** A: 检查JDK版本(需要JDK 11),Android SDK是否安装,Gradle配置是否正确。 ### B. 参考资料 - [Spring Boot官方文档](https://spring.io/projects/spring-boot) - [Vue.js官方文档](https://vuejs.org/) - [Element UI文档](https://element.eleme.io/) - [MyBatis文档](https://mybatis.org/) - [Ollama文档](https://ollama.ai/docs) - [FAISS文档](https://github.com/facebookresearch/faiss) - [Flask文档](https://flask.palletsprojects.com/) ### C. 更新日志 **v1.0.0 (2024-01-30)** - 初始版本发布 - 完成核心功能开发 - 集成AI大模型和RAG知识库 - 支持Web端和Android端 --- **文档版本**:v1.0 **最后更新**:2026-01-30 **维护者**:DDNAI开发团队