|
|
|
|
@ -0,0 +1,121 @@
|
|
|
|
|
# 文物资源知识管理系统后端
|
|
|
|
|
|
|
|
|
|
这是“ArtifactLLM”(大模型增强的文物资源知识管理系统)的后端多模块工程,基于 Spring Boot 3 与 Java 21 构建,提供文物浏览、智能检索、知识图谱、AI 助手、用户与权限管理、模型管理等核心服务能力。
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
|
|
|
后端采用 Maven 多模块结构,按领域拆分为系统管理、文物建模、知识图谱、AI 服务等模块。主应用通常由 artifact-web 模块启动,其他服务模块可按需独立运行(注意端口与资源占用)。
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
|
|
|
- Java 21
|
|
|
|
|
- Spring Boot 3
|
|
|
|
|
- Spring Web
|
|
|
|
|
- Spring Security + 自定义 JWT 拦截器
|
|
|
|
|
- MyBatis-Plus
|
|
|
|
|
- MySQL
|
|
|
|
|
- Redis
|
|
|
|
|
- Neo4j
|
|
|
|
|
- Spring Mail
|
|
|
|
|
- Maven
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
ArtifactLLM_banker/
|
|
|
|
|
├── artifact-web/ # 主应用启动模块(入口、聚合接口、全局配置)
|
|
|
|
|
│ └── src/main/
|
|
|
|
|
│ ├── java/cn/edu/hnu/artifactweb/ArtifactWebApplication.java
|
|
|
|
|
│ └── resources/application.yml
|
|
|
|
|
├── artifact-system/ # 系统管理(用户、角色、权限、反馈等)
|
|
|
|
|
│ └── src/main/
|
|
|
|
|
│ ├── java/cn/edu/hnu/artifactsystem/{controller,service,mapper,config,interceptor}
|
|
|
|
|
│ └── resources/application.yml
|
|
|
|
|
├── artifact-relic/ # 文物建模与审核
|
|
|
|
|
│ └── src/main/
|
|
|
|
|
│ ├── java/cn/edu/hnu/artifactrelic/{controller,service,mapper,config,utils}
|
|
|
|
|
│ └── resources/application.yml
|
|
|
|
|
├── artifact-knowledge/ # 知识图谱服务(Neo4j)
|
|
|
|
|
│ └── src/main/
|
|
|
|
|
│ ├── java/cn/edu/hnu/artifactknowledge/{controller,service,connector}
|
|
|
|
|
│ └── resources/application.yml
|
|
|
|
|
├── artifact-ai/ # AI 服务(智能问答、会话)
|
|
|
|
|
│ └── src/main/
|
|
|
|
|
│ ├── java/cn/edu/hnu/artifactai/{controller,service,mapper,config}
|
|
|
|
|
│ └── resources/application.properties
|
|
|
|
|
├── artifact-common/ # 通用模块(统一返回、上下文、JWT 等)
|
|
|
|
|
│ └── src/main/java/cn/edu/hnu/artifactcommon/{result,utils,context}
|
|
|
|
|
└── pom.xml # Maven 父 POM(依赖与版本管理)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 开发环境搭建
|
|
|
|
|
|
|
|
|
|
1. 安装 JDK 21 与 Maven(推荐 Maven 3.9+)
|
|
|
|
|
2. 准备依赖服务:
|
|
|
|
|
- MySQL:创建数据库并配置连接
|
|
|
|
|
- Redis:本地或远程实例
|
|
|
|
|
- Neo4j:本地或远程图数据库
|
|
|
|
|
3. 根据实际环境修改各模块的配置文件(数据库地址、账号密码、Redis、Neo4j、邮件、AI 密钥等):
|
|
|
|
|
- artifact-web: `src/main/resources/application.yml`
|
|
|
|
|
- artifact-system: `src/main/resources/application.yml`
|
|
|
|
|
- artifact-relic: `src/main/resources/application.yml`
|
|
|
|
|
- artifact-knowledge: `src/main/resources/application.yml`
|
|
|
|
|
- artifact-ai: `src/main/resources/application.properties`
|
|
|
|
|
4. 在项目根目录执行依赖安装与编译:
|
|
|
|
|
```
|
|
|
|
|
mvn clean install
|
|
|
|
|
```
|
|
|
|
|
5. 启动主应用(artifact-web):
|
|
|
|
|
```
|
|
|
|
|
cd artifact-web
|
|
|
|
|
mvn spring-boot:run
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 构建部署
|
|
|
|
|
|
|
|
|
|
- 构建生产版本(以主应用为例):
|
|
|
|
|
```
|
|
|
|
|
mvn -pl artifact-web -am clean package
|
|
|
|
|
```
|
|
|
|
|
- 运行打包产物:
|
|
|
|
|
```
|
|
|
|
|
java -jar artifact-web/target/artifact-web-*.jar
|
|
|
|
|
```
|
|
|
|
|
- 也可按需在各模块内独立运行(注意端口避免冲突)。
|
|
|
|
|
|
|
|
|
|
## 端口与配置
|
|
|
|
|
|
|
|
|
|
- artifact-web:默认 8080(前端开发代理指向该端口)
|
|
|
|
|
- artifact-relic:默认 8080(与主应用共端口,避免同时独立运行)
|
|
|
|
|
- artifact-knowledge:默认 8083
|
|
|
|
|
- artifact-ai:默认 8083
|
|
|
|
|
- 数据源与中间件:
|
|
|
|
|
- MySQL:各模块独立配置
|
|
|
|
|
- Redis:主要在 artifact-web 使用
|
|
|
|
|
- Neo4j:artifact-web 与 artifact-knowledge 使用
|
|
|
|
|
|
|
|
|
|
## 功能模块
|
|
|
|
|
|
|
|
|
|
1. 系统管理(用户、角色、权限、反馈)
|
|
|
|
|
2. 文物建模与审核(建模实体创建、类型创建、批量导入、审核)
|
|
|
|
|
3. 智能检索与知识图谱(Neo4j 关联查询、图谱可视化数据服务)
|
|
|
|
|
4. AI 助手(模型问答、消息交互)
|
|
|
|
|
5. 通用能力(统一返回结构、JWT 工具、上下文封装)
|
|
|
|
|
|
|
|
|
|
## 安全与认证
|
|
|
|
|
|
|
|
|
|
- 使用 Spring Security 的无状态基础配置,关闭 CSRF
|
|
|
|
|
- 通过自定义拦截器实现:
|
|
|
|
|
- JWT 认证拦截器:保护 `/api/**`,放行登录、注册、验证码、图谱与文物公共接口
|
|
|
|
|
- 权限拦截器:基于注解驱动的细粒度权限校验
|
|
|
|
|
- JWT 采用 HS256 签名,包含用户角色与用户 ID 的声明
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
- 开发联调:前端开发服务器默认代理到 `http://localhost:8080`
|
|
|
|
|
- 生产环境务必:
|
|
|
|
|
- 使用强密钥并通过环境变量或外部配置注入
|
|
|
|
|
- 不要在代码库中硬编码任何敏感信息(数据库、Redis、Neo4j、邮件、AI 密钥等)
|
|
|
|
|
- 合理拆分与部署各模块,避免端口冲突与资源竞争
|
|
|
|
|
- 运行各模块前请确保依赖服务已启动(MySQL、Redis、Neo4j)
|
|
|
|
|
|