From 63f4e3e4471e4cc5d492fb380c1d0817d5dd55b6 Mon Sep 17 00:00:00 2001 From: hefanli <76611805+hefanli@users.noreply.github.com> Date: Tue, 30 Dec 2025 18:48:43 +0800 Subject: [PATCH] refactor: modify data collection to python implementation (#214) * feature: LabelStudio jumps without login * refactor: modify data collection to python implementation * refactor: modify data collection to python implementation * refactor: modify data collection to python implementation * refactor: modify data collection to python implementation * refactor: modify data collection to python implementation * refactor: modify data collection to python implementation * fix: remove terrabase dependency * feature: add the collection task executions page and the collection template page * fix: fix the collection task creation * fix: fix the collection task creation --- backend/api-gateway/pom.xml | 19 - .../gateway/ApiGatewayApplication.java | 8 +- .../gateway/filter/UserContextFilter.java | 8 +- .../data-collection-service/README.md | 229 ------- .../data-collection-service/image.png | Bin 80705 -> 0 bytes .../data-collection-service/image1.png | Bin 53113 -> 0 bytes .../data-collection-service/image2.png | Bin 68926 -> 0 bytes .../data-collection-service/image3.png | Bin 109289 -> 0 bytes .../services/data-collection-service/pom.xml | 163 ----- .../DataCollectionServiceConfiguration.java | 25 - .../application/CollectionTaskService.java | 73 --- .../application/TaskExecutionService.java | 65 -- .../collection/common/enums/SyncMode.java | 12 - .../collection/common/enums/TaskStatus.java | 22 - .../collection/common/enums/TemplateType.java | 11 - .../domain/model/entity/CollectionTask.java | 62 -- .../domain/model/entity/DataxTemplate.java | 71 --- .../domain/model/entity/TaskExecution.java | 44 -- .../domain/process/ProcessRunner.java | 21 - .../repository/CollectionTaskRepository.java | 19 - .../repository/TaskExecutionRepository.java | 19 - .../datax/DataxProcessRunner.java | 147 ----- .../infrastructure/datax/DataxProperties.java | 17 - .../datax/config/BaseConfig.java | 4 - .../datax/config/MysqlConfig.java | 73 --- .../datax/config/NasConfig.java | 54 -- .../datax/config/ObsConfig.java | 61 -- .../mapper/CollectionTaskMapper.java | 15 - .../mapper/TaskExecutionMapper.java | 22 - .../CollectionTaskRepositoryImpl.java | 36 -- .../TaskExecutionRepositoryImpl.java | 37 -- .../converter/CollectionTaskConverter.java | 59 -- .../dto/CollectionTaskPagingQuery.java | 25 - .../dto/CollectionTaskResponse.java | 52 -- .../dto/CreateCollectionTaskRequest.java | 64 -- .../dto/UpdateCollectionTaskRequest.java | 53 -- .../rest/CollectionTaskController.java | 79 --- .../scheduler/TaskSchedulerInitializer.java | 64 -- .../config/application-datacollection.yml | 23 - .../mappers/CollectionTaskMapper.xml | 51 -- .../resources/mappers/TaskExecutionMapper.xml | 28 - .../client/CollectionTaskClient.java | 2 +- backend/services/main-application/pom.xml | 5 - backend/services/pom.xml | 1 - .../DataCollection/Create/CreateTask.tsx | 602 ++++++++---------- .../Home/DataCollectionPage.tsx | 31 +- .../pages/DataCollection/Home/Execution.tsx | 291 +++++++++ .../DataCollection/Home/ExecutionLog.tsx | 149 ----- .../DataCollection/Home/TaskManagement.tsx | 132 ++-- .../Home/TemplateManagement.tsx | 173 +++++ .../pages/DataCollection/collection.apis.ts | 38 +- .../pages/DataCollection/collection.const.ts | 34 +- .../pages/DataCollection/collection.model.ts | 18 +- .../app/db/models/data_collection.py | 66 ++ .../datamate-python/app/module/__init__.py | 2 + .../app/module/collection/__init__.py | 0 .../app/module/collection/client/__init__.py | 0 .../module/collection/client/datax_client.py | 200 ++++++ .../module/collection/interface/__init__.py | 15 + .../module/collection/interface/collection.py | 157 +++++ .../module/collection/interface/execution.py | 120 ++++ .../module/collection/interface/template.py | 67 ++ .../app/module/collection/schema/__init__.py | 0 .../module/collection/schema/collection.py | 182 ++++++ .../app/module/collection/service/__init__.py | 0 .../module/collection/service/collection.py | 70 ++ runtime/datax/package.xml | 28 +- runtime/datax/pom.xml | 4 +- scripts/db/data-collection-init.sql | 160 ++--- scripts/images/backend-python/Dockerfile | 23 +- scripts/images/gateway/Dockerfile | 13 +- 71 files changed, 1861 insertions(+), 2557 deletions(-) delete mode 100644 backend/services/data-collection-service/README.md delete mode 100644 backend/services/data-collection-service/image.png delete mode 100644 backend/services/data-collection-service/image1.png delete mode 100644 backend/services/data-collection-service/image2.png delete mode 100644 backend/services/data-collection-service/image3.png delete mode 100644 backend/services/data-collection-service/pom.xml delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/DataCollectionServiceConfiguration.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/application/CollectionTaskService.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/application/TaskExecutionService.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/SyncMode.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/TaskStatus.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/TemplateType.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/CollectionTask.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/DataxTemplate.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/TaskExecution.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/process/ProcessRunner.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/repository/CollectionTaskRepository.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/repository/TaskExecutionRepository.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/DataxProcessRunner.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/DataxProperties.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/BaseConfig.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/MysqlConfig.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/NasConfig.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/ObsConfig.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/mapper/CollectionTaskMapper.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/mapper/TaskExecutionMapper.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/repository/CollectionTaskRepositoryImpl.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/repository/TaskExecutionRepositoryImpl.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/converter/CollectionTaskConverter.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CollectionTaskPagingQuery.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CollectionTaskResponse.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CreateCollectionTaskRequest.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/UpdateCollectionTaskRequest.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/rest/CollectionTaskController.java delete mode 100644 backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/scheduler/TaskSchedulerInitializer.java delete mode 100644 backend/services/data-collection-service/src/main/resources/config/application-datacollection.yml delete mode 100644 backend/services/data-collection-service/src/main/resources/mappers/CollectionTaskMapper.xml delete mode 100644 backend/services/data-collection-service/src/main/resources/mappers/TaskExecutionMapper.xml create mode 100644 frontend/src/pages/DataCollection/Home/Execution.tsx delete mode 100644 frontend/src/pages/DataCollection/Home/ExecutionLog.tsx create mode 100644 frontend/src/pages/DataCollection/Home/TemplateManagement.tsx create mode 100644 runtime/datamate-python/app/db/models/data_collection.py create mode 100644 runtime/datamate-python/app/module/collection/__init__.py create mode 100644 runtime/datamate-python/app/module/collection/client/__init__.py create mode 100644 runtime/datamate-python/app/module/collection/client/datax_client.py create mode 100644 runtime/datamate-python/app/module/collection/interface/__init__.py create mode 100644 runtime/datamate-python/app/module/collection/interface/collection.py create mode 100644 runtime/datamate-python/app/module/collection/interface/execution.py create mode 100644 runtime/datamate-python/app/module/collection/interface/template.py create mode 100644 runtime/datamate-python/app/module/collection/schema/__init__.py create mode 100644 runtime/datamate-python/app/module/collection/schema/collection.py create mode 100644 runtime/datamate-python/app/module/collection/service/__init__.py create mode 100644 runtime/datamate-python/app/module/collection/service/collection.py diff --git a/backend/api-gateway/pom.xml b/backend/api-gateway/pom.xml index 2c3b68a..067e6af 100644 --- a/backend/api-gateway/pom.xml +++ b/backend/api-gateway/pom.xml @@ -27,25 +27,6 @@ org.springframework.cloud spring-cloud-starter-gateway - - com.terrabase - enterprise-impl-commercial - 1.0.0 - - - spring-web - org.springframework - - - spring-boot-starter-web - org.springframework.boot - - - spring-boot-starter-logging - org.springframework.boot - - - org.springframework.boot diff --git a/backend/api-gateway/src/main/java/com/datamate/gateway/ApiGatewayApplication.java b/backend/api-gateway/src/main/java/com/datamate/gateway/ApiGatewayApplication.java index 0f1b232..caac81e 100644 --- a/backend/api-gateway/src/main/java/com/datamate/gateway/ApiGatewayApplication.java +++ b/backend/api-gateway/src/main/java/com/datamate/gateway/ApiGatewayApplication.java @@ -4,9 +4,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; -import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; /** * API Gateway & Auth Service Application @@ -14,8 +12,6 @@ import org.springframework.context.annotation.ComponentScan; * 提供路由、鉴权、限流等功能 */ @SpringBootApplication -@ComponentScan(basePackages = {"com.datamate.gateway", "com.terrabase"}) -@EnableFeignClients(basePackages = {"com.terrabase"}) public class ApiGatewayApplication { public static void main(String[] args) { @@ -37,6 +33,10 @@ public class ApiGatewayApplication { .route("data-evaluation", r -> r.path("/api/evaluation/**") .uri("http://datamate-backend-python:18000")) + // 数据归集服务路由 + .route("data-collection", r -> r.path("/api/data-collection/**") + .uri("http://datamate-backend-python:18000")) + .route("deer-flow-frontend", r -> r.path("/chat/**") .uri("http://deer-flow-frontend:3000")) diff --git a/backend/api-gateway/src/main/java/com/datamate/gateway/filter/UserContextFilter.java b/backend/api-gateway/src/main/java/com/datamate/gateway/filter/UserContextFilter.java index 5f3b35e..d549a39 100644 --- a/backend/api-gateway/src/main/java/com/datamate/gateway/filter/UserContextFilter.java +++ b/backend/api-gateway/src/main/java/com/datamate/gateway/filter/UserContextFilter.java @@ -1,9 +1,6 @@ package com.datamate.gateway.filter; -import com.terrabase.enterprise.api.UserManagementService; -import com.terrabase.enterprise.api.dto.LoginUserDto; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; @@ -21,16 +18,13 @@ public class UserContextFilter implements GlobalFilter { @Value("${commercial.switch:false}") private boolean isCommercial; - @Autowired - private UserManagementService userManagementService; - @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { if (!isCommercial) { return chain.filter(exchange); } try { - LoginUserDto loginUserDto = userManagementService.getCurrentUserInfo().getData().getFirst(); + } catch (Exception e) { log.error("get current user info error", e); return chain.filter(exchange); diff --git a/backend/services/data-collection-service/README.md b/backend/services/data-collection-service/README.md deleted file mode 100644 index 773b570..0000000 --- a/backend/services/data-collection-service/README.md +++ /dev/null @@ -1,229 +0,0 @@ -# 数据归集服务 (Data Collection Service) - -基于DataX的数据归集和同步服务,提供多数据源之间的数据同步功能。 - -## 功能特性 - -- 🔗 **多数据源支持**: 支持MySQL、PostgreSQL、Oracle、SQL Server等主流数据库 -- 📊 **任务管理**: 创建、配置、执行和监控数据同步任务 -- ⏰ **定时调度**: 支持Cron表达式的定时任务 -- 📈 **实时监控**: 任务执行进度、状态和性能指标监控 -- 📝 **执行日志**: 详细的任务执行日志记录 -- 🔌 **插件化**: DataX Reader/Writer插件化集成 - -## 技术架构 - -- **框架**: Spring Boot 3.x -- **数据库**: MySQL + MyBatis -- **同步引擎**: DataX -- **API**: OpenAPI 3.0 自动生成 -- **架构模式**: DDD (领域驱动设计) - -## 项目结构 - -``` -src/main/java/com/datamate/collection/ -├── DataCollectionApplication.java # 应用启动类 -├── domain/ # 领域层 -│ ├── model/ # 领域模型 -│ │ ├── DataSource.java # 数据源实体 -│ │ ├── CollectionTask.java # 归集任务实体 -│ │ ├── TaskExecution.java # 任务执行记录 -│ │ └── ExecutionLog.java # 执行日志 -│ └── service/ # 领域服务 -│ ├── DataSourceService.java -│ ├── CollectionTaskService.java -│ ├── TaskExecutionService.java -│ └── impl/ # 服务实现 -├── infrastructure/ # 基础设施层 -│ ├── config/ # 配置类 -│ ├── datax/ # DataX执行引擎 -│ │ └── DataXExecutionEngine.java -│ └── persistence/ # 持久化 -│ ├── mapper/ # MyBatis Mapper -│ └── typehandler/ # 类型处理器 -└── interfaces/ # 接口层 - ├── api/ # OpenAPI生成的接口 - ├── dto/ # OpenAPI生成的DTO - └── rest/ # REST控制器 - ├── DataSourceController.java - ├── CollectionTaskController.java - ├── TaskExecutionController.java - └── exception/ # 异常处理 - -src/main/resources/ -├── mappers/ # MyBatis XML映射文件 -├── application.properties # 应用配置 -└── ... -``` - -## 环境要求 - -- Java 17+ -- Maven 3.6+ -- MySQL 8.0+ -- DataX 3.0+ -- Redis (可选,用于缓存) - -## 配置说明 - -### 应用配置 (application.properties) - -```properties -# 服务端口 -server.port=8090 - -# 数据库配置 -spring.datasource.url=jdbc:mysql://localhost:3306/knowledge_base -spring.datasource.username=root -spring.datasource.password=123456 - -# DataX配置 -datax.home=/runtime/datax -datax.python.path=/runtime/datax/bin/datax.py -datax.job.timeout=7200 -datax.job.memory=2g -``` - -### DataX配置 - -确保DataX已正确安装并配置: - -1. 下载DataX到 `/runtime/datax` 目录 -2. 配置相关Reader/Writer插件 -3. 确保Python环境可用 - -## 数据库初始化 - -执行数据库初始化脚本: - -```bash -mysql -u root -p knowledge_base < scripts/db/data-collection-init.sql -``` - -## 构建和运行 - -### 1. 编译项目 - -```bash -cd backend/services/data-collection-service -mvn clean compile -``` - -这将触发OpenAPI代码生成。 - -### 2. 打包 - -```bash -mvn clean package -DskipTests -``` - -### 3. 运行 - -作为独立服务运行: -```bash -java -jar target/data-collection-service-1.0.0-SNAPSHOT.jar -``` - -或通过main-application统一启动: -```bash -cd backend/services/main-application -mvn spring-boot:run -``` - -## API文档 - -服务启动后,可通过以下地址访问API文档: - -- Swagger UI: http://localhost:8090/swagger-ui.html -- OpenAPI JSON: http://localhost:8090/v3/api-docs - -## 主要API端点 - -### 数据源管理 - -- `GET /api/v1/collection/datasources` - 获取数据源列表 -- `POST /api/v1/collection/datasources` - 创建数据源 -- `GET /api/v1/collection/datasources/{id}` - 获取数据源详情 -- `PUT /api/v1/collection/datasources/{id}` - 更新数据源 -- `DELETE /api/v1/collection/datasources/{id}` - 删除数据源 -- `POST /api/v1/collection/datasources/{id}/test` - 测试连接 - -### 归集任务管理 - -- `GET /api/v1/collection/tasks` - 获取任务列表 -- `POST /api/v1/collection/tasks` - 创建任务 -- `GET /api/v1/collection/tasks/{id}` - 获取任务详情 -- `PUT /api/v1/collection/tasks/{id}` - 更新任务 -- `DELETE /api/v1/collection/tasks/{id}` - 删除任务 - -### 任务执行管理 - -- `POST /api/v1/collection/tasks/{id}/execute` - 执行任务 -- `POST /api/v1/collection/tasks/{id}/stop` - 停止任务 -- `GET /api/v1/collection/executions` - 获取执行历史 -- `GET /api/v1/collection/executions/{executionId}` - 获取执行详情 -- `GET /api/v1/collection/executions/{executionId}/logs` - 获取执行日志 - -### 监控统计 - -- `GET /api/v1/collection/monitor/statistics` - 获取统计信息 - -## 开发指南 - -### 添加新的数据源类型 - -1. 在 `DataSource.DataSourceType` 枚举中添加新类型 -2. 在 `DataXExecutionEngine` 中添加对应的Reader/Writer映射 -3. 更新数据库表结构和初始化数据 - -### 自定义DataX插件 - -1. 将插件放置在 `/runtime/datax/plugin` 目录下 -2. 在 `DataXExecutionEngine` 中配置插件映射关系 -3. 根据插件要求调整配置模板 - -### 扩展监控指标 - -1. 在 `StatisticsService` 中添加新的统计逻辑 -2. 更新 `CollectionStatistics` DTO -3. 在数据库中添加相应的统计表或字段 - -## 故障排查 - -### 常见问题 - -1. **DataX执行失败** - - 检查DataX安装路径和Python环境 - - 确认数据源连接配置正确 - - 查看执行日志获取详细错误信息 - -2. **数据库连接失败** - - 检查数据库配置和网络连通性 - - 确认数据库用户权限 - -3. **API调用失败** - - 检查请求参数格式 - - 查看应用日志获取详细错误信息 - -### 日志查看 - -```bash -# 应用日志 -tail -f logs/data-collection-service.log - -# 任务执行日志 -curl http://localhost:8090/api/v1/collection/executions/{executionId}/logs -``` - -## 贡献指南 - -1. Fork项目 -2. 创建特性分支: `git checkout -b feature/new-feature` -3. 提交更改: `git commit -am 'Add new feature'` -4. 推送分支: `git push origin feature/new-feature` -5. 提交Pull Request - -## 许可证 - -MIT License diff --git a/backend/services/data-collection-service/image.png b/backend/services/data-collection-service/image.png deleted file mode 100644 index 4584a6fd434fdffa332652d6e4cfe2398e3cb96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80705 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

BX*qu+E(}C;#XqFmY0yaKmW^*44AWOuv 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 G<9`4|DN;-T diff --git a/backend/services/data-collection-service/image1.png b/backend/services/data-collection-service/image1.png deleted file mode 100644 index 772c9d4fed2625bb5cface9693899937f3c2ddd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53113 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≦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 R<^cF7dsFd7=5?b-{|7Ag1zi9D diff --git a/backend/services/data-collection-service/pom.xml b/backend/services/data-collection-service/pom.xml deleted file mode 100644 index e0979b7..0000000 --- a/backend/services/data-collection-service/pom.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - 4.0.0 - - - com.datamate - services - 1.0.0-SNAPSHOT - ../pom.xml - - - data-collection-service - jar - Data Collection Service - DataX-based data collection and aggregation service - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-validation - - - org.springframework.boot - spring-boot-starter-actuator - - - - - com.mysql - mysql-connector-j - 8.0.33 - runtime - - - - - org.springframework.boot - spring-boot-starter-data-redis - - - - - org.apache.commons - commons-exec - 1.3 - - - - - com.zaxxer - HikariCP - - - - - com.oracle.database.jdbc - ojdbc8 - 21.5.0.0 - - - - - org.postgresql - postgresql - - - - - com.fasterxml.jackson.core - jackson-databind - - - - - com.datamate - domain-common - ${project.version} - - - com.datamate - data-management-service - ${project.version} - - - - - org.springdoc - springdoc-openapi-starter-webmvc-ui - - - org.openapitools - jackson-databind-nullable - - - jakarta.validation - jakarta.validation-api - - - - - org.springframework.boot - spring-boot-starter-test - test - - - commons-io - commons-io - 2.16.1 - compile - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - true - exec - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.11.0 - - ${maven.compiler.source} - ${maven.compiler.target} - - - - org.projectlombok - lombok - ${lombok.version} - - - org.projectlombok - lombok-mapstruct-binding - ${lombok-mapstruct-binding.version} - - - org.mapstruct - mapstruct-processor - ${mapstruct.version} - - - - -parameters - -Amapstruct.defaultComponentModel=spring - - - - - - diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/DataCollectionServiceConfiguration.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/DataCollectionServiceConfiguration.java deleted file mode 100644 index 8230ab2..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/DataCollectionServiceConfiguration.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.datamate.collection; - -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -/** - * 数据归集服务配置类 - * - * 基于DataX的数据归集和同步服务,支持多种数据源的数据采集和归集 - */ -@SpringBootApplication -@EnableAsync -@EnableScheduling -@EnableTransactionManagement -@ComponentScan(basePackages = { - "com.datamate.collection", - "com.datamate.datamanagement", - "com.datamate.shared" -}) -public class DataCollectionServiceConfiguration { - // Configuration class for JAR packaging - no main method needed -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/application/CollectionTaskService.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/application/CollectionTaskService.java deleted file mode 100644 index 97d8fdc..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/application/CollectionTaskService.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.datamate.collection.application; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.datamate.collection.domain.model.entity.TaskExecution; -import com.datamate.collection.domain.repository.CollectionTaskRepository; -import com.datamate.collection.common.enums.SyncMode; -import com.datamate.common.domain.utils.ChunksSaver; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.Objects; - -@Slf4j -@Service -@RequiredArgsConstructor -public class CollectionTaskService { - private final TaskExecutionService taskExecutionService; - private final CollectionTaskRepository collectionTaskRepository; - - @Transactional - public CollectionTask create(CollectionTask task, String datasetId) { - task.initCreateParam(); - collectionTaskRepository.save(task); - executeTaskNow(task, datasetId); - return task; - } - - private void executeTaskNow(CollectionTask task, String datasetId) { - if (Objects.equals(task.getSyncMode(), SyncMode.ONCE)) { - TaskExecution exec = taskExecutionService.createExecution(task); - int timeout = task.getTimeoutSeconds() == null ? 3600 : task.getTimeoutSeconds(); - taskExecutionService.runAsync(task, exec.getId(), timeout, datasetId); - log.info("Triggered DataX execution for task {} at {}, execId={}", task.getId(), LocalDateTime.now(), exec.getId()); - } - } - - @Transactional - public CollectionTask update(CollectionTask task, String datasetId) { - task.setUpdatedAt(LocalDateTime.now()); - task.addPath(); - collectionTaskRepository.updateById(task); - executeTaskNow(task, datasetId); - return task; - } - - @Transactional - public void delete(String id) { - CollectionTask task = collectionTaskRepository.getById(id); - if (task != null) { - ChunksSaver.deleteFolder("/dataset/local/" + task.getId()); - } - collectionTaskRepository.removeById(id); - } - - public CollectionTask get(String id) { - return collectionTaskRepository.getById(id); - } - - public IPage getTasks(Page page, LambdaQueryWrapper wrapper) { - return collectionTaskRepository.page(page, wrapper); - } - - public List selectActiveTasks() { - return collectionTaskRepository.selectActiveTasks(); - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/application/TaskExecutionService.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/application/TaskExecutionService.java deleted file mode 100644 index 6d27a65..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/application/TaskExecutionService.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.datamate.collection.application; - -import com.datamate.collection.common.enums.TemplateType; -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.datamate.collection.domain.model.entity.TaskExecution; -import com.datamate.collection.common.enums.TaskStatus; -import com.datamate.collection.domain.process.ProcessRunner; -import com.datamate.collection.domain.repository.CollectionTaskRepository; -import com.datamate.collection.domain.repository.TaskExecutionRepository; -import com.datamate.datamanagement.application.DatasetApplicationService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.time.LocalDateTime; - -@Slf4j -@Service -@RequiredArgsConstructor -public class TaskExecutionService { - private final ProcessRunner processRunner; - private final TaskExecutionRepository executionRepository; - private final CollectionTaskRepository collectionTaskRepository; - private final DatasetApplicationService datasetApplicationService; - - - @Transactional - public TaskExecution createExecution(CollectionTask task) { - TaskExecution exec = TaskExecution.initTaskExecution(); - exec.setTaskId(task.getId()); - exec.setTaskName(task.getName()); - executionRepository.save(exec); - collectionTaskRepository.updateLastExecution(task.getId(), exec.getId()); - collectionTaskRepository.updateStatus(task.getId(), TaskStatus.RUNNING.name()); - return exec; - } - - public TaskExecution selectLatestByTaskId(String taskId) { - return executionRepository.selectLatestByTaskId(taskId); - } - - @Async - @Transactional - public void runAsync(CollectionTask task, String executionId, int timeoutSeconds, String datasetId) { - try { - int code = processRunner.runJob(task, executionId, timeoutSeconds); - log.info("DataX finished with code {} for execution {}", code, executionId); - // 简化:成功即完成 - executionRepository.completeExecution(executionId, TaskStatus.SUCCESS.name(), LocalDateTime.now(), - 0, 0L, 0L, 0L, null); - collectionTaskRepository.updateStatus(task.getId(), TaskStatus.SUCCESS.name()); - if (StringUtils.isNotBlank(datasetId)) { - datasetApplicationService.processDataSourceAsync(datasetId, task.getId()); - } - } catch (Exception e) { - log.error("DataX execution failed", e); - executionRepository.completeExecution(executionId, TaskStatus.FAILED.name(), LocalDateTime.now(), - 0, 0L, 0L, 0L, e.getMessage()); - collectionTaskRepository.updateStatus(task.getId(), TaskStatus.FAILED.name()); - } - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/SyncMode.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/SyncMode.java deleted file mode 100644 index 85c961d..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/SyncMode.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.datamate.collection.common.enums; - -/** - * 同步方式:一次性(ONCE) 或 定时(SCHEDULED) - */ -public enum SyncMode { - /** 一次性(ONCE) */ - ONCE, - /// 定时(SCHEDULED) - SCHEDULED -} - diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/TaskStatus.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/TaskStatus.java deleted file mode 100644 index ed9585a..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/TaskStatus.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.datamate.collection.common.enums; - -/** - * 统一的任务和执行状态枚举 - * 任务和执行状态枚举: - DRAFT: 草稿状态 - READY: 就绪状态 - RUNNING: 运行中 - SUCCESS: 执行成功 (对应原来的COMPLETED/SUCCESS) - FAILED: 执行失败 - STOPPED: 已停止 - * - * @author Data Mate Platform Team - */ -public enum TaskStatus { - /** 草稿状态 */ - DRAFT, - /** 就绪状态 */ - READY, - /** 运行中 */ - RUNNING, - /** 执行成功(对应原来的COMPLETED) */ - SUCCESS, - /** 执行失败 */ - FAILED, - /** 已停止 */ - STOPPED -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/TemplateType.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/TemplateType.java deleted file mode 100644 index 33fd230..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/common/enums/TemplateType.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.datamate.collection.common.enums; - -/** - * 模板类型枚举 - * - */ -public enum TemplateType { - NAS, - OBS, - MYSQL -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/CollectionTask.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/CollectionTask.java deleted file mode 100644 index 1c51e00..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/CollectionTask.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.datamate.collection.domain.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.datamate.collection.common.enums.SyncMode; -import com.datamate.collection.common.enums.TaskStatus; -import com.datamate.collection.common.enums.TemplateType; -import com.datamate.common.domain.model.base.BaseEntity; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; -import java.util.Collections; -import java.util.Map; -import java.util.UUID; - -/** - * 数据采集任务实体(与数据库表 t_dc_collection_tasks 对齐) - */ -@Getter -@Setter -@TableName(value = "t_dc_collection_tasks", autoResultMap = true) -public class CollectionTask extends BaseEntity { - private String name; - private String description; - private TemplateType taskType; // 任务类型 - private String targetPath; // 目标存储路径 - private String config; // DataX JSON 配置,包含源端和目标端配置信息 - private TaskStatus status; - private SyncMode syncMode; // ONCE / SCHEDULED - private String scheduleExpression; - private Integer retryCount; - private Integer timeoutSeconds; - private Long maxRecords; - private String sortField; - private String lastExecutionId; - - public void addPath() { - try { - ObjectMapper objectMapper = new ObjectMapper(); - Map parameter = objectMapper.readValue( - config, - new TypeReference<>() {} - ); - parameter.put("destPath", "/dataset/local/" + id); - parameter.put("filePaths", Collections.singletonList(parameter.get("destPath"))); - config = objectMapper.writeValueAsString(parameter); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } - } - - public void initCreateParam() { - this.id = UUID.randomUUID().toString(); - this.targetPath = "/dataset/local/" + id; - this.status = TaskStatus.READY; - this.createdAt = LocalDateTime.now(); - this.updatedAt = LocalDateTime.now(); - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/DataxTemplate.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/DataxTemplate.java deleted file mode 100644 index 54792fd..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/DataxTemplate.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.datamate.collection.domain.model.entity; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; - -@Data -@EqualsAndHashCode(callSuper = false) -public class DataxTemplate { - - /** - * 模板ID(UUID) - */ - private String id; - - /** - * 模板名称 - */ - private String name; - - /** - * 源数据源类型 - */ - private String sourceType; - - /** - * 目标数据源类型 - */ - private String targetType; - - /** - * 模板内容(JSON格式) - */ - private String templateContent; - - /** - * 模板描述 - */ - private String description; - - /** - * 版本号 - */ - private String version; - - /** - * 是否为系统模板 - */ - private Boolean isSystem; - - /** - * 创建时间 - */ - private LocalDateTime createdAt; - - /** - * 更新时间 - */ - private LocalDateTime updatedAt; - - /** - * 创建者 - */ - private String createdBy; - - /** - * 更新者 - */ - private String updatedBy; -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/TaskExecution.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/TaskExecution.java deleted file mode 100644 index 6009957..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/model/entity/TaskExecution.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.datamate.collection.domain.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.datamate.collection.common.enums.TaskStatus; -import com.datamate.common.domain.model.base.BaseEntity; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; -import java.util.UUID; - -@Getter -@Setter -@TableName(value = "t_dc_task_executions", autoResultMap = true) -public class TaskExecution extends BaseEntity { - private String taskId; - private String taskName; - private TaskStatus status; - private Double progress; - private Long recordsTotal; - private Long recordsProcessed; - private Long recordsSuccess; - private Long recordsFailed; - private Double throughput; - private Long dataSizeBytes; - private LocalDateTime startedAt; - private LocalDateTime completedAt; - private Integer durationSeconds; - private String errorMessage; - private String dataxJobId; - private String config; - private String result; - - public static TaskExecution initTaskExecution() { - TaskExecution exec = new TaskExecution(); - exec.setId(UUID.randomUUID().toString()); - exec.setStatus(TaskStatus.RUNNING); - exec.setProgress(0.0); - exec.setStartedAt(LocalDateTime.now()); - exec.setCreatedAt(LocalDateTime.now()); - return exec; - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/process/ProcessRunner.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/process/ProcessRunner.java deleted file mode 100644 index 73d904e..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/process/ProcessRunner.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.datamate.collection.domain.process; - -import com.datamate.collection.domain.model.entity.CollectionTask; - -/** - * 归集执行器接口 - * - * @since 2025/10/23 - */ -public interface ProcessRunner { - /** - * 执行归集任务 - * - * @param task 任务 - * @param executionId 执行ID - * @param timeoutSeconds 超时时间(秒) - * @return 执行结果 - * @throws Exception 执行异常 - */ - int runJob(CollectionTask task, String executionId, int timeoutSeconds) throws Exception; -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/repository/CollectionTaskRepository.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/repository/CollectionTaskRepository.java deleted file mode 100644 index 21b0d16..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/repository/CollectionTaskRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.datamate.collection.domain.repository; - -import com.baomidou.mybatisplus.extension.repository.IRepository; -import com.datamate.collection.domain.model.entity.CollectionTask; - -import java.util.List; - -/** - * 归集任务仓储层 - * - * @since 2025/10/23 - */ -public interface CollectionTaskRepository extends IRepository { - List selectActiveTasks(); - - void updateStatus(String id, String status); - - void updateLastExecution(String id, String lastExecutionId); -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/repository/TaskExecutionRepository.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/repository/TaskExecutionRepository.java deleted file mode 100644 index 9b0c059..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/domain/repository/TaskExecutionRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.datamate.collection.domain.repository; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.datamate.collection.domain.model.entity.TaskExecution; - -import java.time.LocalDateTime; - -/** - * TaskExecutionRepository - * - * @since 2025/10/23 - */ -public interface TaskExecutionRepository extends IService { - TaskExecution selectLatestByTaskId(String taskId); - - void completeExecution(String executionId, String status, LocalDateTime completedAt, - Integer recordsProcessed, Long recordsTotal, - Long recordsSuccess, Long recordsFailed, String errorMessage); -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/DataxProcessRunner.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/DataxProcessRunner.java deleted file mode 100644 index f0b3145..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/DataxProcessRunner.java +++ /dev/null @@ -1,147 +0,0 @@ -// java -package com.datamate.collection.infrastructure.datax; - -import com.datamate.collection.common.enums.TemplateType; -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.datamate.collection.domain.process.ProcessRunner; -import com.datamate.collection.infrastructure.datax.config.MysqlConfig; -import com.datamate.collection.infrastructure.datax.config.NasConfig; -import com.datamate.collection.infrastructure.datax.config.ObsConfig; -import com.datamate.common.infrastructure.exception.BusinessException; -import com.datamate.common.infrastructure.exception.SystemErrorCode; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.exec.*; -import org.apache.commons.io.output.TeeOutputStream; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; - -import java.io.*; -import java.nio.file.*; -import java.time.Duration; -import java.util.*; -import java.util.regex.Pattern; - -@Slf4j -@Component -@RequiredArgsConstructor -public class DataxProcessRunner implements ProcessRunner { - - private final DataxProperties props; - - @Override - public int runJob(CollectionTask task, String executionId, int timeoutSeconds) throws Exception { - Path job = buildJobFile(task); - int code = runJob(job.toFile(), executionId, Duration.ofSeconds(timeoutSeconds)); - // 任务成功后做后处理(仅针对 MYSQL 类型) - postProcess(task); - return code; - } - - private int runJob(File jobFile, String executionId, Duration timeout) throws Exception { - File logFile = new File(props.getLogPath(), String.format("datax-%s.log", executionId)); - String python = props.getPythonPath(); - String dataxPy = props.getHomePath() + File.separator + "bin" + File.separator + "datax.py"; - String cmd = String.format("%s %s %s", python, dataxPy, jobFile.getAbsolutePath()); - - log.info("Execute DataX: {}", cmd); - - CommandLine cl = CommandLine.parse(cmd); - DefaultExecutor executor = getExecutor(timeout, logFile); - - return executor.execute(cl); - } - - private static DefaultExecutor getExecutor(Duration timeout, File logFile) throws FileNotFoundException { - DefaultExecutor executor = new DefaultExecutor(); - - // 将日志追加输出到文件 - File parent = logFile.getParentFile(); - if (!parent.exists()) { - parent.mkdirs(); - } - - ExecuteStreamHandler streamHandler = new PumpStreamHandler( - new TeeOutputStream(new FileOutputStream(logFile, true), System.out), - new TeeOutputStream(new FileOutputStream(logFile, true), System.err) - ); - executor.setStreamHandler(streamHandler); - - ExecuteWatchdog watchdog = new ExecuteWatchdog(timeout.toMillis()); - executor.setWatchdog(watchdog); - return executor; - } - - private Path buildJobFile(CollectionTask task) throws IOException { - Files.createDirectories(Paths.get(props.getJobConfigPath())); - String fileName = String.format("datax-job-%s.json", task.getId()); - Path path = Paths.get(props.getJobConfigPath(), fileName); - // 简化:直接将任务中的 config 字段作为 DataX 作业 JSON - try (FileWriter fw = new FileWriter(path.toFile())) { - if (StringUtils.isBlank(task.getConfig())) { - throw BusinessException.of(SystemErrorCode.UNKNOWN_ERROR); - } - String json = getJobConfig(task); - log.info("Job config: {}", json); - fw.write(json); - } - return path; - } - - private String getJobConfig(CollectionTask task) { - try { - ObjectMapper objectMapper = new ObjectMapper(); - TemplateType templateType = task.getTaskType(); - return switch (templateType) { - case NAS -> { - // NAS 特殊处理 - NasConfig nasConfig = objectMapper.readValue(task.getConfig(), NasConfig.class); - yield nasConfig.toJobConfig(objectMapper, task); - } - case OBS -> { - ObsConfig obsConfig = objectMapper.readValue(task.getConfig(), ObsConfig.class); - yield obsConfig.toJobConfig(objectMapper, task); - } - case MYSQL -> { - MysqlConfig mysqlConfig = objectMapper.readValue(task.getConfig(), MysqlConfig.class); - yield mysqlConfig.toJobConfig(objectMapper, task); - } - }; - } catch (Exception e) { - log.error("Failed to parse task config", e); - throw new RuntimeException("Failed to parse task config", e); - } - } - - private void postProcess(CollectionTask task) throws IOException { - if (task.getTaskType() != TemplateType.MYSQL) { - return; - } - String targetPath = task.getTargetPath(); - // 将targetPath下所有不以.csv结尾的文件修改为以.csv结尾 - Path dir = Paths.get(targetPath); - if (!Files.exists(dir) || !Files.isDirectory(dir)) { - log.info("Target path {} does not exist or is not a directory for task {}, skip post processing.", targetPath, task.getId()); - return; - } - - try (DirectoryStream stream = Files.newDirectoryStream(dir)) { - for (Path path : stream) { - if (!Files.isRegularFile(path)) continue; - String name = path.getFileName().toString(); - if (name.toLowerCase().endsWith(".csv")) continue; - - Path target = dir.resolve(name + ".csv"); - try { - Files.move(path, target, StandardCopyOption.REPLACE_EXISTING); - log.info("Renamed file for task {}: {} -> {}", task.getId(), name, target.getFileName().toString()); - } catch (IOException ex) { - log.warn("Failed to rename file {} for task {}: {}", path, task.getId(), ex.getMessage(), ex); - } - } - } catch (IOException ioe) { - log.warn("Error scanning target directory {} for task {}: {}", targetPath, task.getId(), ioe.getMessage(), ioe); - } - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/DataxProperties.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/DataxProperties.java deleted file mode 100644 index 8a3644c..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/DataxProperties.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.datamate.collection.infrastructure.datax; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Data -@Configuration -@ConfigurationProperties(prefix = "datamate.data-collection.datax") -public class DataxProperties { - private String homePath; // DATAX_HOME - private String pythonPath; // python 可执行文件 - private String jobConfigPath; // 生成的作业文件目录 - private String logPath; // 运行日志目录 - private Integer maxMemory = 2048; - private Integer channelCount = 5; -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/BaseConfig.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/BaseConfig.java deleted file mode 100644 index ea5ecf0..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/BaseConfig.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.datamate.collection.infrastructure.datax.config; - -public interface BaseConfig { -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/MysqlConfig.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/MysqlConfig.java deleted file mode 100644 index 4ba0067..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/MysqlConfig.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.datamate.collection.infrastructure.datax.config; - -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.Getter; -import lombok.Setter; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Getter -@Setter -public class MysqlConfig { - private String jdbcUrl; - - private String username; - - private String password; - - private String querySql; - - private List headers; - - /** - * 将当前 MYSQL 配置构造成 DataX 所需的 job JSON 字符串。 - */ - public String toJobConfig(ObjectMapper objectMapper, CollectionTask task) throws Exception { - Map mysqlParameter = new HashMap<>(); - Map connection = new HashMap<>(); - if (username != null) mysqlParameter.put("username", username); - if (password != null) mysqlParameter.put("password", password); - if (jdbcUrl != null) connection.put("jdbcUrl", Collections.singletonList(jdbcUrl)); - if (querySql != null) connection.put("querySql", Collections.singletonList(querySql)); - mysqlParameter.put("connection", Collections.singletonList(connection)); - - Map job = new HashMap<>(); - Map content = new HashMap<>(); - Map reader = new HashMap<>(); - reader.put("name", "mysqlreader"); - reader.put("parameter", mysqlParameter); - content.put("reader", reader); - - Map writer = new HashMap<>(); - Map writerParameter = new HashMap<>(); - writer.put("name", "txtfilewriter"); - if (CollectionUtils.isNotEmpty(headers)) { - writerParameter.put("header", headers); - } - writerParameter.put("path", task.getTargetPath()); - writerParameter.put("fileName", "collectionResult"); - writerParameter.put("writeMode", "truncate"); - writerParameter.put("dateFormat", "yyyy-MM-dd HH:mm:ss"); - writerParameter.put("fileFormat", "csv"); - writerParameter.put("encoding", "UTF-8"); - writerParameter.put("fieldDelimiter", ","); - writer.put("parameter", writerParameter); - content.put("writer", writer); - - job.put("content", List.of(content)); - Map setting = new HashMap<>(); - Map channel = new HashMap<>(); - channel.put("channel", 1); - setting.put("speed", channel); - job.put("setting", setting); - - Map jobConfig = new HashMap<>(); - jobConfig.put("job", job); - return objectMapper.writeValueAsString(jobConfig); - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/NasConfig.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/NasConfig.java deleted file mode 100644 index c91398e..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/NasConfig.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.datamate.collection.infrastructure.datax.config; - -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.Getter; -import lombok.Setter; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Getter -@Setter -public class NasConfig implements BaseConfig{ - private String ip; - - private String path; - - private List files; - - /** - * 将当前 NAS 配置构造成 DataX 所需的 job JSON 字符串。 - */ - public String toJobConfig(ObjectMapper objectMapper, CollectionTask task) throws Exception { - Map parameter = new HashMap<>(); - if (ip != null) parameter.put("ip", ip); - if (path != null) parameter.put("path", path); - if (files != null) parameter.put("files", files); - parameter.put("destPath", task.getTargetPath()); - - Map job = new HashMap<>(); - Map content = new HashMap<>(); - Map reader = new HashMap<>(); - reader.put("name", "nfsreader"); - reader.put("parameter", parameter); - content.put("reader", reader); - - Map writer = new HashMap<>(); - writer.put("name", "nfswriter"); - writer.put("parameter", parameter); - content.put("writer", writer); - - job.put("content", List.of(content)); - Map setting = new HashMap<>(); - Map channel = new HashMap<>(); - channel.put("channel", 2); - setting.put("speed", channel); - job.put("setting", setting); - - Map jobConfig = new HashMap<>(); - jobConfig.put("job", job); - return objectMapper.writeValueAsString(jobConfig); - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/ObsConfig.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/ObsConfig.java deleted file mode 100644 index 9afd900..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/datax/config/ObsConfig.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.datamate.collection.infrastructure.datax.config; - -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.Getter; -import lombok.Setter; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * OBS 归集配置类 - * - * @since 2025/11/18 - */ -@Getter -@Setter -public class ObsConfig implements BaseConfig{ - private String endpoint; - private String bucket; - private String accessKey; - private String secretKey; - private String prefix; - - /** - * 将当前 OBS 配置构造成 DataX 所需的 job JSON 字符串。 - */ - public String toJobConfig(ObjectMapper objectMapper, CollectionTask task) throws Exception { - Map parameter = new HashMap<>(); - if (endpoint != null) parameter.put("endpoint", endpoint); - if (bucket != null) parameter.put("bucket", bucket); - if (accessKey != null) parameter.put("accessKey", accessKey); - if (secretKey != null) parameter.put("secretKey", secretKey); - if (prefix != null) parameter.put("prefix", prefix); - parameter.put("destPath", task.getTargetPath()); - - Map job = new HashMap<>(); - Map content = new HashMap<>(); - Map reader = new HashMap<>(); - reader.put("name", "obsreader"); - reader.put("parameter", parameter); - content.put("reader", reader); - - Map writer = new HashMap<>(); - writer.put("name", "obswriter"); - writer.put("parameter", parameter); - content.put("writer", writer); - - job.put("content", List.of(content)); - Map setting = new HashMap<>(); - Map channel = new HashMap<>(); - channel.put("channel", 2); - setting.put("speed", channel); - job.put("setting", setting); - - Map jobConfig = new HashMap<>(); - jobConfig.put("job", job); - return objectMapper.writeValueAsString(jobConfig); - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/mapper/CollectionTaskMapper.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/mapper/CollectionTaskMapper.java deleted file mode 100644 index 7c65b47..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/mapper/CollectionTaskMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.datamate.collection.infrastructure.persistence.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.datamate.collection.domain.model.entity.CollectionTask; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -@Mapper -public interface CollectionTaskMapper extends BaseMapper { - int updateStatus(@Param("id") String id, @Param("status") String status); - int updateLastExecution(@Param("id") String id, @Param("lastExecutionId") String lastExecutionId); - List selectActiveTasks(); -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/mapper/TaskExecutionMapper.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/mapper/TaskExecutionMapper.java deleted file mode 100644 index 2c22426..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/mapper/TaskExecutionMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.datamate.collection.infrastructure.persistence.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.datamate.collection.domain.model.entity.TaskExecution; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.time.LocalDateTime; - -@Mapper -public interface TaskExecutionMapper extends BaseMapper { - TaskExecution selectLatestByTaskId(@Param("taskId") String taskId); - - void completeExecution(@Param("executionId") String executionId, - @Param("status") String status, - @Param("completedAt") LocalDateTime completedAt, - @Param("recordsProcessed") Integer recordsProcessed, - @Param("recordsTotal") Long recordsTotal, - @Param("recordsSuccess") Long recordsSuccess, - @Param("recordsFailed") Long recordsFailed, - @Param("errorMessage") String errorMessage); -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/repository/CollectionTaskRepositoryImpl.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/repository/CollectionTaskRepositoryImpl.java deleted file mode 100644 index c17e185..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/repository/CollectionTaskRepositoryImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.datamate.collection.infrastructure.persistence.repository; - -import com.baomidou.mybatisplus.extension.repository.CrudRepository; -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.datamate.collection.domain.repository.CollectionTaskRepository; -import com.datamate.collection.infrastructure.persistence.mapper.CollectionTaskMapper; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * CollectionTaskRepositoryImpl - * - * @since 2025/10/23 - */ -@Repository -@RequiredArgsConstructor -public class CollectionTaskRepositoryImpl extends CrudRepository implements CollectionTaskRepository { - private final CollectionTaskMapper collectionTaskMapper; - - @Override - public List selectActiveTasks() { - return collectionTaskMapper.selectActiveTasks(); - } - - @Override - public void updateStatus(String id, String status) { - collectionTaskMapper.updateStatus(id, status); - } - - @Override - public void updateLastExecution(String id, String lastExecutionId) { - collectionTaskMapper.updateLastExecution(id, lastExecutionId); - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/repository/TaskExecutionRepositoryImpl.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/repository/TaskExecutionRepositoryImpl.java deleted file mode 100644 index 2263fc9..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/infrastructure/persistence/repository/TaskExecutionRepositoryImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.datamate.collection.infrastructure.persistence.repository; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.datamate.collection.domain.model.entity.TaskExecution; -import com.datamate.collection.domain.repository.TaskExecutionRepository; -import com.datamate.collection.infrastructure.persistence.mapper.TaskExecutionMapper; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Repository; - -import java.time.LocalDateTime; - -/** - * TaskExecutionRepositoryImpl - * - * @since 2025/10/23 - */ -@Repository -@RequiredArgsConstructor -public class TaskExecutionRepositoryImpl extends ServiceImpl - implements TaskExecutionRepository { - - private final TaskExecutionMapper taskExecutionMapper; - - @Override - public TaskExecution selectLatestByTaskId(String taskId) { - return taskExecutionMapper.selectLatestByTaskId(taskId); - } - - @Override - public void completeExecution(String executionId, String status, LocalDateTime completedAt, - Integer recordsProcessed, Long recordsTotal, - Long recordsSuccess, Long recordsFailed, String errorMessage) { - taskExecutionMapper.completeExecution(executionId, status, completedAt, - recordsProcessed, recordsTotal, - recordsSuccess, recordsFailed, errorMessage); - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/converter/CollectionTaskConverter.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/converter/CollectionTaskConverter.java deleted file mode 100644 index b549319..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/converter/CollectionTaskConverter.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.datamate.collection.interfaces.converter; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.datamate.collection.interfaces.dto.*; -import com.datamate.common.infrastructure.exception.BusinessException; -import com.datamate.common.infrastructure.exception.SystemErrorCode; -import com.datamate.common.interfaces.PagedResponse; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.Named; -import org.mapstruct.factory.Mappers; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface CollectionTaskConverter { - CollectionTaskConverter INSTANCE = Mappers.getMapper(CollectionTaskConverter.class); - - @Mapping(source = "config", target = "config", qualifiedByName = "parseJsonToMap") - CollectionTaskResponse toResponse(CollectionTask task); - - List toResponse(List tasks); - - @Mapping(source = "config", target = "config", qualifiedByName = "mapToJsonString") - CollectionTask toCollectionTask(CreateCollectionTaskRequest request); - - @Mapping(source = "config", target = "config", qualifiedByName = "mapToJsonString") - CollectionTask toCollectionTask(UpdateCollectionTaskRequest request); - - @Mapping(source = "current", target = "page") - @Mapping(source = "size", target = "size") - @Mapping(source = "total", target = "totalElements") - @Mapping(source = "pages", target = "totalPages") - @Mapping(source = "records", target = "content") - PagedResponse toResponse(IPage tasks); - - @Named("parseJsonToMap") - default Map parseJsonToMap(String json) { - try { - ObjectMapper objectMapper = new ObjectMapper(); - return objectMapper.readValue(json, Map.class); - } catch (Exception e) { - throw BusinessException.of(SystemErrorCode.INVALID_PARAMETER); - } - } - - @Named("mapToJsonString") - default String mapToJsonString(Map map) { - try { - ObjectMapper objectMapper = new ObjectMapper(); - return objectMapper.writeValueAsString(map != null ? map : Map.of()); - } catch (Exception e) { - throw BusinessException.of(SystemErrorCode.INVALID_PARAMETER); - } - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CollectionTaskPagingQuery.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CollectionTaskPagingQuery.java deleted file mode 100644 index 3005042..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CollectionTaskPagingQuery.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.datamate.collection.interfaces.dto; - -import com.datamate.collection.common.enums.TaskStatus; -import com.datamate.common.interfaces.PagingQuery; -import lombok.Getter; -import lombok.Setter; - -/** - * 归集任务分页查询参数 - * - * @since 2025/10/23 - */ -@Getter -@Setter -public class CollectionTaskPagingQuery extends PagingQuery { - /** - * 任务状态 - */ - private TaskStatus status; - - /** - * 任务名称 - */ - private String keyword; -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CollectionTaskResponse.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CollectionTaskResponse.java deleted file mode 100644 index caf913e..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CollectionTaskResponse.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.datamate.collection.interfaces.dto; - -import java.time.LocalDateTime; -import java.util.HashMap; -import java.util.Map; - -import com.datamate.collection.common.enums.TaskStatus; -import com.datamate.collection.common.enums.SyncMode; -import com.datamate.datamanagement.interfaces.dto.DatasetResponse; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import org.springframework.format.annotation.DateTimeFormat; -import jakarta.validation.Valid; - -/** - * CollectionTaskResponse - */ -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -public class CollectionTaskResponse { - - private String id; - - private String name; - - private String description; - - private String targetPath; - - private Map config = new HashMap<>(); - - private TaskStatus status; - - private SyncMode syncMode; - - private String scheduleExpression; - - private String lastExecutionId; - - @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) - private LocalDateTime createdAt; - - @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) - private LocalDateTime updatedAt; - - private DatasetResponse dataset; -} - diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CreateCollectionTaskRequest.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CreateCollectionTaskRequest.java deleted file mode 100644 index ca7e9bb..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/CreateCollectionTaskRequest.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.datamate.collection.interfaces.dto; - -import com.datamate.collection.common.enums.SyncMode; -import com.datamate.collection.common.enums.TemplateType; -import com.datamate.datamanagement.interfaces.dto.CreateDatasetRequest; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.HashMap; -import java.util.Map; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - -/** - * CreateCollectionTaskRequest - */ -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -public class CreateCollectionTaskRequest { - @NotNull - @Size(min = 1, max = 100) - @Schema(name = "name", description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED) - @JsonProperty("name") - private String name; - - @Size(max = 500) - @Schema(name = "description", description = "任务描述", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @JsonProperty("description") - private String description; - - @NotNull - @Schema(name = "taskType", description = "任务类型", requiredMode = Schema.RequiredMode.REQUIRED) - @JsonProperty("taskType") - private TemplateType taskType; - - @Valid - @NotNull - @Schema(name = "config", description = "归集配置,包含源端和目标端配置信息", requiredMode = Schema.RequiredMode.REQUIRED) - @JsonProperty("config") - private Map config = new HashMap<>(); - - @NotNull - @Valid - @Schema(name = "syncMode", requiredMode = Schema.RequiredMode.REQUIRED) - @JsonProperty("syncMode") - private SyncMode syncMode; - - @Schema(name = "scheduleExpression", description = "Cron调度表达式 (syncMode=SCHEDULED 时必填)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @JsonProperty("scheduleExpression") - private String scheduleExpression; - - /** 创建数据集参数 */ - @Valid - private CreateDatasetRequest dataset; -} - diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/UpdateCollectionTaskRequest.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/UpdateCollectionTaskRequest.java deleted file mode 100644 index 4a4db4c..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/dto/UpdateCollectionTaskRequest.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.datamate.collection.interfaces.dto; - -import com.datamate.collection.common.enums.SyncMode; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.HashMap; -import java.util.Map; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import io.swagger.v3.oas.annotations.media.Schema; - -/** - * UpdateCollectionTaskRequest - */ -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -public class UpdateCollectionTaskRequest { - @Size(min = 1, max = 100) - @Schema(name = "name", description = "任务名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @JsonProperty("name") - private String name; - - @Size(max = 500) - @Schema(name = "description", description = "任务描述", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @JsonProperty("description") - private String description; - - @Valid - @Schema(name = "config", description = "归集配置,包含源端和目标端配置信息", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @JsonProperty("config") - private Map config = new HashMap<>(); - - @Valid - @Schema(name = "syncMode", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @JsonProperty("syncMode") - private SyncMode syncMode; - - @Schema(name = "scheduleExpression", description = "Cron调度表达式 (syncMode=SCHEDULED 时必填)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - @JsonProperty("scheduleExpression") - private String scheduleExpression; - - /** 数据集id */ - private String datasetId; -} - diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/rest/CollectionTaskController.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/rest/CollectionTaskController.java deleted file mode 100644 index 0f20964..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/rest/CollectionTaskController.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.datamate.collection.interfaces.rest; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.datamate.collection.application.CollectionTaskService; -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.datamate.collection.interfaces.converter.CollectionTaskConverter; -import com.datamate.collection.interfaces.dto.*; -import com.datamate.common.interfaces.PagedResponse; -import com.datamate.datamanagement.application.DatasetApplicationService; -import com.datamate.datamanagement.interfaces.converter.DatasetConverter; -import com.datamate.datamanagement.interfaces.dto.DatasetResponse; -import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.http.ResponseEntity; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.*; - -import java.util.*; - -@Slf4j -@RestController -@RequestMapping("/data-collection/tasks") -@RequiredArgsConstructor -public class CollectionTaskController{ - - private final CollectionTaskService taskService; - - private final DatasetApplicationService datasetService; - - @PostMapping - @Transactional - public ResponseEntity createTask(@Valid @RequestBody CreateCollectionTaskRequest request) { - CollectionTask task = CollectionTaskConverter.INSTANCE.toCollectionTask(request); - String datasetId = null; - DatasetResponse dataset = null; - if (Objects.nonNull(request.getDataset())) { - dataset = DatasetConverter.INSTANCE.convertToResponse(datasetService.createDataset(request.getDataset())); - datasetId = dataset.getId(); - } - CollectionTaskResponse response = CollectionTaskConverter.INSTANCE.toResponse(taskService.create(task, datasetId)); - response.setDataset(dataset); - return ResponseEntity.ok().body(response); - } - - @PutMapping("/{id}") - public ResponseEntity updateTask(@PathVariable("id") String id, @Valid @RequestBody UpdateCollectionTaskRequest request) { - if (taskService.get(id) == null) { - return ResponseEntity.notFound().build(); - } - CollectionTask task = CollectionTaskConverter.INSTANCE.toCollectionTask(request); - task.setId(id); - return ResponseEntity.ok(CollectionTaskConverter.INSTANCE.toResponse(taskService.update(task, request.getDatasetId()))); - } - - @DeleteMapping("/{id}") - public ResponseEntity deleteTask(@PathVariable("id") String id) { - taskService.delete(id); - return ResponseEntity.ok().build(); - } - - @GetMapping("/{id}") - public ResponseEntity getTaskDetail(@PathVariable("id") String id) { - CollectionTask task = taskService.get(id); - return task == null ? ResponseEntity.notFound().build() : ResponseEntity.ok(CollectionTaskConverter.INSTANCE.toResponse(task)); - } - - @GetMapping - public ResponseEntity> getTasks(@Valid CollectionTaskPagingQuery query) { - Page page = new Page<>(query.getPage(), query.getSize()); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .eq(query.getStatus() != null, CollectionTask::getStatus, query.getStatus()) - .like(StringUtils.isNotBlank(query.getKeyword()), CollectionTask::getName, query.getKeyword()) - .orderByDesc(CollectionTask::getCreatedAt); - return ResponseEntity.ok(CollectionTaskConverter.INSTANCE.toResponse(taskService.getTasks(page, wrapper))); - } -} diff --git a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/scheduler/TaskSchedulerInitializer.java b/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/scheduler/TaskSchedulerInitializer.java deleted file mode 100644 index 6fd8bb7..0000000 --- a/backend/services/data-collection-service/src/main/java/com/datamate/collection/interfaces/scheduler/TaskSchedulerInitializer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.datamate.collection.interfaces.scheduler; - -import com.datamate.collection.application.CollectionTaskService; -import com.datamate.collection.application.TaskExecutionService; -import com.datamate.collection.common.enums.TaskStatus; -import com.datamate.collection.domain.model.entity.CollectionTask; -import com.datamate.collection.domain.model.entity.TaskExecution; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.scheduling.support.CronExpression; -import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; - -import java.time.LocalDateTime; -import java.util.List; - -@Slf4j -@Component -@RequiredArgsConstructor -public class TaskSchedulerInitializer { - - private final CollectionTaskService collectionTaskService; - private final TaskExecutionService taskExecutionService; - - // 定期扫描激活的采集任务,根据 Cron 判断是否到期执行 - @Scheduled(fixedDelayString = "${datamate.data-collection.scheduler.scan-interval-ms:10000}") - public void scanAndTrigger() { - List tasks = collectionTaskService.selectActiveTasks(); - if (tasks == null || tasks.isEmpty()) { - return; - } - LocalDateTime now = LocalDateTime.now(); - for (CollectionTask task : tasks) { - String cronExpr = task.getScheduleExpression(); - if (!StringUtils.hasText(cronExpr)) { - continue; - } - try { - // 如果最近一次执行仍在运行,则跳过 - TaskExecution latest = taskExecutionService.selectLatestByTaskId(task.getId()); - if (latest != null && latest.getStatus() == TaskStatus.RUNNING) { - continue; - } - - CronExpression cron = CronExpression.parse(cronExpr); - LocalDateTime base = latest != null && latest.getStartedAt() != null - ? latest.getStartedAt() - : now.minusYears(1); // 没有历史记录时,拉长基准时间确保到期判定 - LocalDateTime nextTime = cron.next(base); - - if (nextTime != null && !nextTime.isAfter(now)) { - // 到期,触发一次执行 - TaskExecution exec = taskExecutionService.createExecution(task); - int timeout = task.getTimeoutSeconds() == null ? 3600 : task.getTimeoutSeconds(); - taskExecutionService.runAsync(task, exec.getId(), timeout, null); - log.info("Triggered DataX execution for task {} at {}, execId={}", task.getId(), now, exec.getId()); - } - } catch (Exception ex) { - log.warn("Skip task {} due to invalid cron or scheduling error: {}", task.getId(), ex.getMessage()); - } - } - } -} diff --git a/backend/services/data-collection-service/src/main/resources/config/application-datacollection.yml b/backend/services/data-collection-service/src/main/resources/config/application-datacollection.yml deleted file mode 100644 index b4b6fee..0000000 --- a/backend/services/data-collection-service/src/main/resources/config/application-datacollection.yml +++ /dev/null @@ -1,23 +0,0 @@ -datamate: - data-collection: - # DataX配置 - datax: - home-path: ${DATAX_HOME:D:/datax} - python-path: ${DATAX_PYTHON_PATH:python3} - job-config-path: ${DATAX_JOB_PATH:./data/temp/datax/jobs} - log-path: ${DATAX_LOG_PATH:./logs/datax} - max-memory: ${DATAX_MAX_MEMORY:2048} - channel-count: ${DATAX_CHANNEL_COUNT:5} - - # 执行配置 - execution: - max-concurrent-tasks: ${DATA_COLLECTION_MAX_CONCURRENT_TASKS:10} - task-timeout-minutes: ${DATA_COLLECTION_TASK_TIMEOUT:120} - retry-count: ${DATA_COLLECTION_RETRY_COUNT:3} - retry-interval-seconds: ${DATA_COLLECTION_RETRY_INTERVAL:30} - - # 监控配置 - monitoring: - status-check-interval-seconds: ${DATA_COLLECTION_STATUS_CHECK_INTERVAL:30} - log-retention-days: ${DATA_COLLECTION_LOG_RETENTION:30} - enable-metrics: ${DATA_COLLECTION_ENABLE_METRICS:true} diff --git a/backend/services/data-collection-service/src/main/resources/mappers/CollectionTaskMapper.xml b/backend/services/data-collection-service/src/main/resources/mappers/CollectionTaskMapper.xml deleted file mode 100644 index 6d3033b..0000000 --- a/backend/services/data-collection-service/src/main/resources/mappers/CollectionTaskMapper.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - id, - name, description, config, status, sync_mode, - schedule_expression, retry_count, timeout_seconds, max_records, sort_field, - last_execution_id, created_at, updated_at, created_by, updated_by - - - - - UPDATE t_dc_collection_tasks SET status = #{status}, updated_at = NOW() WHERE id = #{id} - - - - - UPDATE t_dc_collection_tasks SET last_execution_id = #{lastExecutionId}, updated_at = NOW() WHERE id = #{id} - - - - - diff --git a/backend/services/data-collection-service/src/main/resources/mappers/TaskExecutionMapper.xml b/backend/services/data-collection-service/src/main/resources/mappers/TaskExecutionMapper.xml deleted file mode 100644 index e9e9c86..0000000 --- a/backend/services/data-collection-service/src/main/resources/mappers/TaskExecutionMapper.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - UPDATE t_dc_task_executions - SET status = #{status}, - completed_at = #{completedAt}, - records_processed = #{recordsProcessed}, - records_total = #{recordsTotal}, - records_success = #{recordsSuccess}, - records_failed = #{recordsFailed}, - error_message = #{errorMessage}, - updated_at = NOW() - WHERE id = #{executionId} - - - diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/client/CollectionTaskClient.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/client/CollectionTaskClient.java index 5deaa6b..b34522c 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/client/CollectionTaskClient.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/client/CollectionTaskClient.java @@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.PathVariable; /** * 数据归集服务 Feign Client */ -@FeignClient(name = "collection-service", url = "${collection.service.url:http://localhost:8080}") +@FeignClient(name = "collection-service", url = "${collection.service.url:http://datamate-backend-python:18000}") public interface CollectionTaskClient { /** diff --git a/backend/services/main-application/pom.xml b/backend/services/main-application/pom.xml index 24ffb22..a4c82e0 100644 --- a/backend/services/main-application/pom.xml +++ b/backend/services/main-application/pom.xml @@ -56,11 +56,6 @@ data-management-service ${project.version} - - com.datamate - data-collection-service - ${project.version} - com.datamate operator-market-service diff --git a/backend/services/pom.xml b/backend/services/pom.xml index 1e599f2..177a4da 100644 --- a/backend/services/pom.xml +++ b/backend/services/pom.xml @@ -24,7 +24,6 @@ data-management-service - data-collection-service operator-market-service data-cleaning-service data-synthesis-service diff --git a/frontend/src/pages/DataCollection/Create/CreateTask.tsx b/frontend/src/pages/DataCollection/Create/CreateTask.tsx index c094e58..a2cbbef 100644 --- a/frontend/src/pages/DataCollection/Create/CreateTask.tsx +++ b/frontend/src/pages/DataCollection/Create/CreateTask.tsx @@ -1,79 +1,60 @@ -import { useState } from "react"; -import { Input, Button, Radio, Form, App, Select } from "antd"; +import { useEffect, useState } from "react"; +import { Input, Button, Radio, Form, App, Select, InputNumber } from "antd"; import { Link, useNavigate } from "react-router"; import { ArrowLeft } from "lucide-react"; -import { createTaskUsingPost } from "../collection.apis"; +import { createTaskUsingPost, queryDataXTemplatesUsingGet } from "../collection.apis"; import SimpleCronScheduler from "@/pages/DataCollection/Create/SimpleCronScheduler"; -import RadioCard from "@/components/RadioCard"; -import { datasetTypes } from "@/pages/DataManagement/dataset.const"; import { SyncModeMap } from "../collection.const"; import { SyncMode } from "../collection.model"; -import { DatasetSubType } from "@/pages/DataManagement/dataset.model"; const { TextArea } = Input; -const defaultTemplates = [ - { - id: "NAS", - name: "NAS到本地", - description: "从NAS文件系统导入数据到本地文件系统", - config: { - reader: "nfsreader", - writer: "localwriter", - }, - }, - { - id: "OBS", - name: "OBS到本地", - description: "从OBS文件系统导入数据到本地文件系统", - config: { - reader: "obsreader", - writer: "localwriter", - }, - }, - { - id: "MYSQL", - name: "Mysql到本地", - description: "从Mysql中导入数据到本地文件系统", - config: { - reader: "mysqlreader", - writer: "localwriter", - }, - }, -]; - const syncModeOptions = Object.values(SyncModeMap); -enum TemplateType { - NAS = "NAS", - OBS = "OBS", - MYSQL = "MYSQL", -} +type CollectionTemplate = { + id: string; + name: string; + description?: string; + sourceType?: string; + sourceName?: string; + targetType?: string; + targetName?: string; + templateContent?: { + parameter?: any; + reader?: any; + writer?: any; + }; + builtIn?: boolean; +}; + +type TemplateFieldDef = { + name?: string; + type?: string; + description?: string; + required?: boolean; + options?: Array<{ label: string; value: string | number } | string | number>; + defaultValue?: any; +}; export default function CollectionTaskCreate() { const navigate = useNavigate(); const [form] = Form.useForm(); const { message } = App.useApp(); - const [templateType, setTemplateType] = useState<"default" | "custom">( - "default" - ); - // 默认模板类型设为 NAS - const [selectedTemplate, setSelectedTemplate] = useState( - TemplateType.NAS - ); - const [customConfig, setCustomConfig] = useState(""); + const [templates, setTemplates] = useState([]); + const [templatesLoading, setTemplatesLoading] = useState(false); + const [selectedTemplateId, setSelectedTemplateId] = useState(undefined); - // 将 newTask 设为 any,并初始化 config.templateType 为 NAS const [newTask, setNewTask] = useState({ name: "", description: "", syncMode: SyncMode.ONCE, - cronExpression: "", - maxRetries: 10, - dataset: null, - config: { templateType: TemplateType.NAS }, - createDataset: false, + scheduleExpression: "", + timeoutSeconds: 3600, + templateId: "", + config: { + parameter: {}, + }, }); const [scheduleExpression, setScheduleExpression] = useState({ type: "once", @@ -81,33 +62,37 @@ export default function CollectionTaskCreate() { cronExpression: "0 0 0 * * ?", }); - const [isCreateDataset, setIsCreateDataset] = useState(false); + useEffect(() => { + const run = async () => { + setTemplatesLoading(true); + try { + const resp: any = await queryDataXTemplatesUsingGet({ page: 1, size: 1000 }); + const list: CollectionTemplate[] = resp?.data?.content || []; + setTemplates(list); + } catch (e) { + message.error("加载归集模板失败"); + } finally { + setTemplatesLoading(false); + } + }; + run() + }, []); const handleSubmit = async () => { try { await form.validateFields(); - if (templateType === "default" && !selectedTemplate) { - window.alert("请选择默认模板"); - return; - } - if (templateType === "custom" && !customConfig.trim()) { - window.alert("请填写自定义配置"); - return; - } - // 构建最终 payload,不依赖异步 setState + const values = form.getFieldsValue(true); const payload = { - ...newTask, - taskType: - templateType === "default" ? selectedTemplate : "CUSTOM", - config: { - ...((newTask && newTask.config) || {}), - ...(templateType === "custom" ? { dataxJson: customConfig } : {}), - }, + name: values.name, + description: values.description, + syncMode: values.syncMode, + scheduleExpression: values.scheduleExpression, + timeoutSeconds: values.timeoutSeconds, + templateId: values.templateId, + config: values.config, }; - console.log("创建任务 payload:", payload); - await createTaskUsingPost(payload); message.success("任务创建成功"); navigate("/data/collection"); @@ -116,6 +101,102 @@ export default function CollectionTaskCreate() { } }; + const selectedTemplate = templates.find((t) => t.id === selectedTemplateId); + + const renderTemplateFields = ( + section: "parameter" | "reader" | "writer", + defs: Record | undefined + ) => { + if (!defs || typeof defs !== "object") return null; + + const items = Object.entries(defs).map(([key, def]) => { + const label = def?.name || key; + const description = def?.description; + const fieldType = (def?.type || "input").toLowerCase(); + const required = def?.required !== false; + + const rules = required + ? [{ required: true, message: `请输入${label}` }] + : undefined; + + if (fieldType === "password") { + return ( + + + + ); + } + + if (fieldType === "textarea") { + return ( + +