xinli/项目介绍/项目架构说明.md

1230 lines
34 KiB
Markdown
Raw Permalink Normal View History

# 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 <repository-url>
# 导入数据库
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 <pid>
# 停止Python RAG
ps -ef | grep app.py
kill -9 <pid>
# 停止Ollama
ps -ef | grep ollama
kill -9 <pid>
# 停止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
---
## 🔮 未来规划
### 功能扩展
- [ ] 多租户支持
- [ ] 移动端原生AppFlutter
- [ ] 微信小程序版本
- [ ] 视频咨询功能
- [ ] 在线预约系统
- [ ] 数据分析大屏
- [ ] 导出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 11Android 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开发团队