项目类型:全栈应用系统
主要功能:文件管理、标签管理、扫描任务和 NLP 任务管理
项目简介: custom-collection-java 是一个基于 Spring Boot 3 和 Vue 3 的全栈应用系统,专注于文件资源管理和智能分析。系统提供了完整的文件生命周期管理能力,包括文件扫描、元数据提取、标签管理、内容分析和 NLP 处理等功能。通过集成 HanLP 和 Apache Tika 等工具,系统能够对文件内容进行深度分析,提取关键词、生成摘要,并支持中文分词等 NLP 功能。
| 技术/框架 | 版本 | 用途 |
|---|---|---|
| Java | 17 | 主要开发语言 |
| Spring Boot | 3.3.5 | 应用框架 |
| MyBatis Plus | 3.5.9 | ORM 框架 |
| MySQL | 8.0.31 | 数据库 |
| Knife4j | 4.4.0 | API 文档生成 |
| Caffeine | - | 本地缓存 |
| HanLP | 1.8.4 | 中文分词和 NLP 处理 |
| Apache Tika | 3.2.2 | 文件字符分析 |
| MapStruct | 1.5.5 | 对象映射转换 |
| Guava | 33.0.0 | Google 工具库 |
| Hutool | 5.8.20 | Java 工具类库 |
| Lombok | 1.18.40 | 代码简化工具 |
| Logstash Logback | 7.4 | ELK 栈集成 |
| 技术/框架 | 版本 | 用途 |
|---|---|---|
| Vue | 3.5.24 | 前端框架 |
| TypeScript | 5.9.3 | 类型系统 |
| Element Plus | 2.11.9 | UI 组件库 |
| Pinia | 2.3.1 | 状态管理 |
| Tailwind CSS | 3.4.18 | 样式框架 |
| Vue Router | 4.6.3 | 路由管理 |
| Vite | 7.2.4 | 构建工具 |
| Axios | 1.13.2 | HTTP 客户端 |
| @vueuse/core | 14.2.1 | Vue 组合式工具库 |
| Jest | 29.7.0 | 单元测试框架 |
| Playwright | 1.58.2 | E2E 测试框架 |
custom-collection-java/
├── custom-backend/ # 后端代码
│ ├── custom-common/ # 通用模块
│ └── custom-manager/ # 业务模块
├── custom-frontend/ # 前端代码
├── custom-study/ # 学习示例代码
└── .trae/ # 项目配置和文档
custom-backend/
├── custom-common/
│ ├── custom-bom/ # 依赖管理
│ └── custom-core/ # 核心通用代码
└── custom-manager/
├── custom-demo/ # 演示模块
└── custom-resources/ # 资源管理模块(主要业务模块)
├── src/main/java/com/nopr/custom/resource/
│ ├── config/ # 配置类
│ ├── controller/ # 控制器
│ ├── executor/ # 执行器
│ ├── mapper/ # 数据访问
│ ├── model/ # 数据模型
│ ├── service/ # 业务逻辑
│ └── util/ # 工具类
└── src/main/resources/
├── sql/ # SQL 脚本
└── application.yml # 配置文件
custom-frontend/
├── public/ # 静态资源
├── src/
│ ├── api/ # API 接口
│ ├── components/ # 组件
│ ├── composables/ # 组合式函数
│ ├── router/ # 路由
│ ├── store/ # 状态管理
│ ├── types/ # 类型定义
│ ├── utils/ # 工具函数
│ ├── views/ # 页面
│ ├── App.vue # 应用入口
│ └── main.ts # 主文件
├── tests/ # 测试文件
└── package.json # 依赖配置
功能描述:管理文件元数据、文件内容和文件标签
主要组件:
FileController:文件相关 API 接口FileService:文件业务逻辑FileMetaData:文件元数据实体FileContent:文件内容实体FileTagRelation:文件标签关联
技术实现:
- 使用 Apache Tika 进行文件字符编码检测和内容提取
- 支持多种文件格式的元数据提取
- 支持文件校验和计算(MD5、SHA-256)
前端页面:
TextFiles.vue:文本文件管理VideoFiles.vue:视频文件管理Images.vue:图片文件管理
功能描述:管理文件标签和标签组
主要组件:
TagController:标签相关 API 接口TagService:标签业务逻辑FileTagInfo:标签信息实体FileTagGroup:标签组实体
前端页面:
tags/index.vue:标签管理tag-groups/index.vue:标签组管理
功能描述:管理文件扫描任务,包括扫描文件系统、提取元数据等
主要组件:
ScanTaskController:扫描任务 API 接口ScanTaskService:扫描任务业务逻辑ScanExecutor:扫描执行器ScanTask:扫描任务实体ScanTaskLog:扫描任务日志
前端页面:
tasks/ScanTasks.vue:扫描任务管理
功能描述:管理自然语言处理任务,包括文本分析、关键词提取、中文分词等
主要组件:
NlpTaskController:NLP 任务 API 接口NlpTaskService:NLP 任务业务逻辑NlpTask:NLP 任务实体NlpTag:NLP 标签实体
技术实现:
- 使用 HanLP 进行中文分词和关键词提取
- 支持文本摘要生成
- 支持词性标注和命名实体识别
前端页面:
tasks/NlpTasks.vue:NLP 任务管理
| 接口路径 | 方法 | 功能描述 |
|---|---|---|
/api/v1/files |
GET | 获取文件列表 |
/api/v1/files |
POST | 上传文件 |
/api/v1/files/{id} |
GET | 获取文件详情 |
/api/v1/files/{id} |
PUT | 更新文件信息 |
/api/v1/files/{id} |
DELETE | 删除文件 |
/api/v1/files/{id}/tags |
GET | 获取文件标签 |
/api/v1/files/{id}/tags |
POST | 为文件添加标签 |
| 接口路径 | 方法 | 功能描述 |
|---|---|---|
/api/v1/tags |
GET | 获取标签列表 |
/api/v1/tags |
POST | 创建标签 |
/api/v1/tags/{id} |
PUT | 更新标签 |
/api/v1/tags/{id} |
DELETE | 删除标签 |
/api/v1/tag-groups |
GET | 获取标签组列表 |
/api/v1/tag-groups |
POST | 创建标签组 |
| 接口路径 | 方法 | 功能描述 |
|---|---|---|
/api/v1/scan-tasks |
GET | 获取扫描任务列表 |
/api/v1/scan-tasks |
POST | 创建扫描任务 |
/api/v1/scan-tasks/{id} |
GET | 获取任务详情 |
/api/v1/scan-tasks/{id}/start |
POST | 启动扫描任务 |
/api/v1/scan-tasks/{id}/stop |
POST | 停止扫描任务 |
| 接口路径 | 方法 | 功能描述 |
|---|---|---|
/api/v1/nlp-tasks |
GET | 获取 NLP 任务列表 |
/api/v1/nlp-tasks |
POST | 创建 NLP 任务 |
/api/v1/nlp-tasks/{id} |
GET | 获取任务详情 |
/api/v1/nlp-tasks/{id}/start |
POST | 启动 NLP 任务 |
/api/v1/nlp-tasks/{id}/stop |
POST | 停止 NLP 任务 |
| 接口路径 | 方法 | 功能描述 |
|---|---|---|
/api/v1/dict/file-types |
GET | 获取文件类型字典 |
| 表名 | 描述 | 主要字段 |
|---|---|---|
file_metadata |
文件元数据表 | id, file_name, file_path, file_size, file_type, mime_type, file_status, checksum |
file_content |
文件内容表 | id, file_id, content, summary, keywords |
file_tag_info |
标签信息表 | id, tag_name, tag_group_id, tag_type |
file_tag_group |
标签组表 | id, group_name, description |
file_tag_relation |
文件标签关联表 | id, file_id, tag_id |
scan_task |
扫描任务表 | id, task_name, target_path, status, progress, start_time, end_time |
scan_task_log |
扫描任务日志表 | id, task_id, log_content, log_time, log_level |
nlp_task |
NLP 任务表 | id, task_name, file_id, status, progress, start_time, end_time |
nlp_tag |
NLP 标签表 | id, task_id, tag_name, confidence, tag_type |
file_category |
文件分类表 | id, category_name, category_type, parent_id |
file_summary |
文件摘要表 | id, file_id, summary_type, summary_content |
| Java 类型 | 数据库类型 | 描述 |
|---|---|---|
Long |
BIGINT |
主键 ID |
String |
VARCHAR |
字符串类型 |
Integer |
INT |
整数类型 |
Long |
BIGINT |
长整数类型 |
Boolean |
TINYINT |
布尔类型 |
LocalDateTime |
DATETIME |
日期时间类型 |
核心配置项:
- 服务器配置:端口 8888
- 数据库配置:MySQL 连接信息
- MyBatis Plus 配置:映射规则、缓存、枚举类型处理器
- 缓存配置:Caffeine 本地缓存(最大 1000 条,5 分钟过期)
- 日志配置:文件日志和控制台日志,支持 ELK 栈集成
- Knife4j 配置:API 文档生成
- Spring Boot Actuator:健康检查、metrics 监控
- 自定义配置:扫描线程数(5)、批处理大小(100)、文件大小阈值
核心配置文件:
vite.config.ts:Vite 构建配置tsconfig.json:TypeScript 配置tailwind.config.js:Tailwind CSS 配置package.json:项目依赖和脚本
后端环境:
- JDK 17
- MySQL 8.0+
- Maven 3.6+
前端环境:
- Node.js 16+
- npm 7+ 或 pnpm 6+
- 克隆代码仓库
- 配置数据库连接(application.yml)
- 执行 Maven 构建:
mvn clean package - 运行应用:
java -jar target/custom-resources.jar
- 克隆代码仓库
- 安装依赖:
npm install或pnpm install - 开发环境运行:
npm run dev - 生产环境构建:
npm run build - 部署构建产物到静态文件服务器
-
命名规范:
- 类名:PascalCase
- 方法名:camelCase
- 变量名:camelCase
- 常量:全大写 + 下划线
-
代码风格:
- 缩进:4 空格
- 行宽:≤ 100 字符
- 大括号:同行
- 注释:函数/类/复杂逻辑加中文注释
-
命名规范:
- 组件名:PascalCase
- 方法名:camelCase
- 变量名:camelCase
- 常量:全大写 + 下划线
-
代码风格:
- 缩进:2 空格
- 行宽:≤ 100 字符
- 语句:加分号
- 注释:函数/组件加中文注释
- 需求分析:理解业务需求
- 设计阶段:设计数据模型、API 接口
- 编码实现:实现业务逻辑
- 测试验证:编写单元测试和集成测试
- 代码审查:代码质量检查
- 部署上线:构建和部署
- 需求分析:理解页面需求
- UI 设计:设计页面布局和交互
- 组件开发:实现页面组件
- API 集成:与后端 API 集成
- 测试验证:功能测试和兼容性测试
- 代码审查:代码质量检查
- 部署上线:构建和部署
- Spring Boot Actuator:提供健康检查、metrics、loggers、env 等端点
- 日志管理:使用 Logback 记录应用日志,支持 ELK 栈集成
- 性能监控:通过 metrics 监控 HTTP 请求性能(P50、P90、P95、P99)
- 健康检查:支持 Kubernetes 探针(liveness、readiness)
- 日志分析:定期分析应用日志,排查问题
- 数据库维护:定期备份数据库,优化查询
- 依赖更新:定期更新依赖版本,修复安全漏洞
- 现代化技术栈:采用 Spring Boot 3.3.5 + Vue 3.5.24 的最新技术栈
- 模块化设计:清晰的模块划分,便于维护和扩展
- 丰富的功能:文件管理、标签管理、扫描任务和 NLP 任务
- 性能优化:使用 Caffeine 缓存、线程池等技术提升性能
- NLP 能力:集成 HanLP 提供中文分词和文本分析功能
- 文件处理:使用 Apache Tika 进行文件字符分析和内容提取
- API 文档:集成 Knife4j 自动生成 API 文档
- 监控体系:集成 Spring Boot Actuator 和 ELK 栈进行监控和日志管理
- 代码质量:使用 MapStruct 进行对象映射,Lombok 简化代码
- 测试覆盖:集成 Jest 和 Playwright 进行单元测试和 E2E 测试
- AI 增强:集成更多 AI 模型,提升 NLP 分析能力
- 分布式架构:引入 Spring Cloud Alibaba,实现微服务化
- 性能优化:进一步优化扫描和 NLP 处理性能
- 安全性:集成 Spring Security,加强系统安全性
- 云原生:支持 Docker 容器化和 Kubernetes 部署
- 实时处理:引入消息队列实现异步任务处理
- Fork 本仓库
- 新建 Feature 分支
- 提交代码
- 新建 Pull Request
MIT License
文档版本:1.1.0
最后更新:2026-04-22