xinli/项目介绍/项目架构说明.md
2026-01-30 16:23:00 +08:00

1230 lines
34 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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开发团队