34 KiB
34 KiB
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)
# 服务端口
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)
module.exports = {
devServer: {
port: 80,
proxy: {
'/api': {
target: 'http://localhost:30081',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
}
}
3. RAG服务配置(config.py)
# 服务端口
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配置
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:删除操作
统一响应格式
{
"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. 后端开发环境
# 安装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. 前端开发环境
# 安装Node.js 14+
# 安装npm或yarn
# 安装依赖
cd xinli-ui
npm install
# 启动开发服务器
npm run dev
# 访问 http://localhost:80
3. Python RAG服务
# 安装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大模型
# 安装Ollama
# 下载地址:https://ollama.ai
# 拉取模型
ollama pull qwen2.5:7b
ollama pull nomic-embed-text
# 启动服务
ollama serve
生产环境部署
1. 后端部署
# 打包
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. 前端部署
# 打包
npm run build:prod
# 上传dist目录到服务器
# 配置Nginx指向dist目录
# 重启Nginx
sudo systemctl restart nginx
3. Android App打包
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(前端服务)
停止服务
# 停止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
🔮 未来规划
功能扩展
- 多租户支持
- 移动端原生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. 参考资料
C. 更新日志
v1.0.0 (2024-01-30)
- 初始版本发布
- 完成核心功能开发
- 集成AI大模型和RAG知识库
- 支持Web端和Android端
文档版本:v1.0
最后更新:2026-01-30
维护者:DDNAI开发团队