Skip to content

NoPr/custom-collection-java

Repository files navigation

custom-collection-java

项目概述

项目类型:全栈应用系统
主要功能:文件管理、标签管理、扫描任务和 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-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)

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:扫描任务管理

NLP 任务

功能描述:管理自然语言处理任务,包括文本分析、关键词提取、中文分词等
主要组件

  • NlpTaskController:NLP 任务 API 接口
  • NlpTaskService:NLP 任务业务逻辑
  • NlpTask:NLP 任务实体
  • NlpTag:NLP 标签实体

技术实现

  • 使用 HanLP 进行中文分词和关键词提取
  • 支持文本摘要生成
  • 支持词性标注和命名实体识别

前端页面

  • tasks/NlpTasks.vue:NLP 任务管理

核心 API 接口

文件管理 API

接口路径 方法 功能描述
/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

接口路径 方法 功能描述
/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

接口路径 方法 功能描述
/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 停止扫描任务

NLP 任务 API

接口路径 方法 功能描述
/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

接口路径 方法 功能描述
/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 日期时间类型

配置管理

后端配置(application.yml)

核心配置项

  • 服务器配置:端口 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+

后端部署

  1. 克隆代码仓库
  2. 配置数据库连接(application.yml)
  3. 执行 Maven 构建:mvn clean package
  4. 运行应用:java -jar target/custom-resources.jar

前端部署

  1. 克隆代码仓库
  2. 安装依赖:npm installpnpm install
  3. 开发环境运行:npm run dev
  4. 生产环境构建:npm run build
  5. 部署构建产物到静态文件服务器

代码规范

后端代码规范

  • 命名规范

    • 类名:PascalCase
    • 方法名:camelCase
    • 变量名:camelCase
    • 常量:全大写 + 下划线
  • 代码风格

    • 缩进:4 空格
    • 行宽:≤ 100 字符
    • 大括号:同行
    • 注释:函数/类/复杂逻辑加中文注释

前端代码规范

  • 命名规范

    • 组件名:PascalCase
    • 方法名:camelCase
    • 变量名:camelCase
    • 常量:全大写 + 下划线
  • 代码风格

    • 缩进:2 空格
    • 行宽:≤ 100 字符
    • 语句:加分号
    • 注释:函数/组件加中文注释

开发流程

后端开发流程

  1. 需求分析:理解业务需求
  2. 设计阶段:设计数据模型、API 接口
  3. 编码实现:实现业务逻辑
  4. 测试验证:编写单元测试和集成测试
  5. 代码审查:代码质量检查
  6. 部署上线:构建和部署

前端开发流程

  1. 需求分析:理解页面需求
  2. UI 设计:设计页面布局和交互
  3. 组件开发:实现页面组件
  4. API 集成:与后端 API 集成
  5. 测试验证:功能测试和兼容性测试
  6. 代码审查:代码质量检查
  7. 部署上线:构建和部署

监控与维护

监控

  • Spring Boot Actuator:提供健康检查、metrics、loggers、env 等端点
  • 日志管理:使用 Logback 记录应用日志,支持 ELK 栈集成
  • 性能监控:通过 metrics 监控 HTTP 请求性能(P50、P90、P95、P99)
  • 健康检查:支持 Kubernetes 探针(liveness、readiness)

维护

  • 日志分析:定期分析应用日志,排查问题
  • 数据库维护:定期备份数据库,优化查询
  • 依赖更新:定期更新依赖版本,修复安全漏洞

项目亮点

  1. 现代化技术栈:采用 Spring Boot 3.3.5 + Vue 3.5.24 的最新技术栈
  2. 模块化设计:清晰的模块划分,便于维护和扩展
  3. 丰富的功能:文件管理、标签管理、扫描任务和 NLP 任务
  4. 性能优化:使用 Caffeine 缓存、线程池等技术提升性能
  5. NLP 能力:集成 HanLP 提供中文分词和文本分析功能
  6. 文件处理:使用 Apache Tika 进行文件字符分析和内容提取
  7. API 文档:集成 Knife4j 自动生成 API 文档
  8. 监控体系:集成 Spring Boot Actuator 和 ELK 栈进行监控和日志管理
  9. 代码质量:使用 MapStruct 进行对象映射,Lombok 简化代码
  10. 测试覆盖:集成 Jest 和 Playwright 进行单元测试和 E2E 测试

未来展望

  1. AI 增强:集成更多 AI 模型,提升 NLP 分析能力
  2. 分布式架构:引入 Spring Cloud Alibaba,实现微服务化
  3. 性能优化:进一步优化扫描和 NLP 处理性能
  4. 安全性:集成 Spring Security,加强系统安全性
  5. 云原生:支持 Docker 容器化和 Kubernetes 部署
  6. 实时处理:引入消息队列实现异步任务处理

参与贡献

  1. Fork 本仓库
  2. 新建 Feature 分支
  3. 提交代码
  4. 新建 Pull Request

许可证

MIT License


文档版本:1.1.0
最后更新:2026-04-22

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors