From c9a1007c21d11b0a260b4747e3832050ae91d64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dean=5B=EB=B0=B1=EB=B3=91=EB=82=A8=5D?= Date: Thu, 12 Mar 2026 08:08:59 +0900 Subject: [PATCH] hello --- .../common/service/ExternalJarRunner.java | 29 +++++++++---------- .../kamcoback/config/InferenceProperties.java | 2 +- .../cd/kamcoback/config/SecurityConfig.java | 7 ++--- .../service/MapSheetInferenceJobService.java | 6 ++-- .../scheduler/service/ShpPipelineService.java | 29 +++++++++---------- .../test/TestShapeApiController.java | 12 ++++---- 6 files changed, 37 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/common/service/ExternalJarRunner.java b/src/main/java/com/kamco/cd/kamcoback/common/service/ExternalJarRunner.java index d8882a28..3daf8f0f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/service/ExternalJarRunner.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/service/ExternalJarRunner.java @@ -13,35 +13,33 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Log4j2 -//0312 +// 0312 @RequiredArgsConstructor @Component - public class ExternalJarRunner { @Value("${spring.profiles.active}") private String profile; - //0312 + + // 0312 private final InferenceProperties inferenceProperties; private static final long TIMEOUT_MINUTES = TimeUnit.DAYS.toMinutes(3); - - - // java -jar build/libs/shp-exporter.jar --batch --geoserver.enabled=true --converter.inference-id=qq99999 --converter.batch-ids[0]=111 - //0312 shp 파일 배치를 통해 생성 - public void run(String inferenceLearningId, List batchIds){ - //JAR 경로 (shape파일 생성용) + // java -jar build/libs/shp-exporter.jar --batch --geoserver.enabled=true + // --converter.inference-id=qq99999 --converter.batch-ids[0]=111 + // 0312 shp 파일 배치를 통해 생성 + public void run(String inferenceLearningId, List batchIds) { + // JAR 경로 (shape파일 생성용) String jarPathV2 = inferenceProperties.getJarPathV2(); List args = new ArrayList<>(); - args.add(" --spring.profiles.active="+profile); + args.add(" --spring.profiles.active=" + profile); args.add(" --batch"); args.add(" --geoserver.enabled=true"); - args.add(" --converter.inference-id="+inferenceLearningId); - batchIds.forEach(batchId -> args.add(" --converter.batch-ids["+args.size()+"]="+batchId)); + args.add(" --converter.inference-id=" + inferenceLearningId); + batchIds.forEach(batchId -> args.add(" --converter.batch-ids[" + args.size() + "]=" + batchId)); execJar(jarPathV2, args); } - /** * shp 파일 생성 * @@ -98,7 +96,7 @@ public class ExternalJarRunner { cmd.add("-jar"); cmd.add(jarPath); cmd.addAll(args); - //0312 + // 0312 log.info("exec jar command: {}", cmd); ProcessBuilder pb = new ProcessBuilder(cmd); pb.redirectErrorStream(true); @@ -106,7 +104,7 @@ public class ExternalJarRunner { Process p = pb.start(); try (BufferedReader br = - new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8))) { + new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8))) { String line; while ((line = br.readLine()) != null) { out.append(line).append('\n'); @@ -160,4 +158,3 @@ public class ExternalJarRunner { return v; } } - diff --git a/src/main/java/com/kamco/cd/kamcoback/config/InferenceProperties.java b/src/main/java/com/kamco/cd/kamcoback/config/InferenceProperties.java index 93ccb986..12960004 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/InferenceProperties.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/InferenceProperties.java @@ -16,7 +16,7 @@ public class InferenceProperties { private String batchUrl; private String geojsonDir; private String jarPath; - //0312 + // 0312 private String jarPathV2; private String inferenceServerName; } diff --git a/src/main/java/com/kamco/cd/kamcoback/config/SecurityConfig.java b/src/main/java/com/kamco/cd/kamcoback/config/SecurityConfig.java index d0461691..c3080025 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/SecurityConfig.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/SecurityConfig.java @@ -48,9 +48,7 @@ public class SecurityConfig { auth // .requestMatchers("/chunk_upload_test.html").authenticated() - .requestMatchers("/monitor/health" - , "/monitor/health/**" - ) + .requestMatchers("/monitor/health", "/monitor/health/**") .permitAll() // 맵시트 영역 전체 허용 (우선순위 최상단) @@ -119,8 +117,7 @@ public class SecurityConfig { "/api/user/**", "/api/my/menus", "/api/training-data/label/**", - "/api/training-data/review/**" - ) + "/api/training-data/review/**") .authenticated() // 나머지는 메뉴권한 diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java index 429efe0b..19773b3c 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java @@ -255,9 +255,9 @@ public class MapSheetInferenceJobService { // 추론 종료일때 shp 파일 생성 String batchIdStr = batchIds.stream().map(String::valueOf).collect(Collectors.joining(",")); - //0312 shp 파일 비동기 생성 (바꿔주세요) - shpPipelineService.makeShapeFile(sheet.getUid(),batchIds); - //shpPipelineService.runPipeline(jarPath, datasetDir, batchIdStr, sheet.getUid()); + // 0312 shp 파일 비동기 생성 (바꿔주세요) + shpPipelineService.makeShapeFile(sheet.getUid(), batchIds); + // shpPipelineService.runPipeline(jarPath, datasetDir, batchIdStr, sheet.getUid()); } /** diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/ShpPipelineService.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/ShpPipelineService.java index fd8186df..6449977e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/ShpPipelineService.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/ShpPipelineService.java @@ -3,7 +3,6 @@ package com.kamco.cd.kamcoback.scheduler.service; import com.kamco.cd.kamcoback.common.service.ExternalJarRunner; import com.kamco.cd.kamcoback.postgres.core.InferenceResultCoreService; import com.kamco.cd.kamcoback.scheduler.config.ShpKeyLock; -import java.nio.file.Paths; import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -19,8 +18,7 @@ public class ShpPipelineService { private final ExternalJarRunner externalJarRunner; private final ShpKeyLock shpKeyLock; - - //0312 shp 파일 비동기 생성 + // 0312 shp 파일 비동기 생성 @Async("makeShapeFile") public void makeShapeFile(String inferenceId, List batchIds) { if (!shpKeyLock.tryLock(inferenceId)) { @@ -44,13 +42,12 @@ public class ShpPipelineService { } } - /** * shp 파일 생성 1. merge 생성 2. 생성된 merge shp 파일로 geoserver 등록, 3.도엽별로 shp 생성 * - * @param jarPath 실행 jar 파일 경로 - * @param datasetDir shp 파일이 생성될 경로 - * @param batchIds 추론 batch id = 12,13,14 + * @param jarPath 실행 jar 파일 경로 + * @param datasetDir shp 파일이 생성될 경로 + * @param batchIds 추론 batch id = 12,13,14 * @param inferenceId 추론 uid 32자 */ @Async("shpExecutor") @@ -73,15 +70,15 @@ public class ShpPipelineService { externalJarRunner.run(jarPath, batchIds, inferenceId, "", "MERGED"); // uid 기준 shp 파일 geoserver 등록 -// String register = -// Paths.get(datasetDir, inferenceId, "merge", inferenceId + ".shp").toString(); -// log.info("register={}", register); -// externalJarRunner.run(jarPath, register, inferenceId); -// -// // uid 기준 도엽별 shp, geojson 파일 생성 -// externalJarRunner.run(jarPath, batchIds, inferenceId, "", "RESOLVE"); -// -// log.info("SHP pipeline finished. inferenceId={}", inferenceId); + // String register = + // Paths.get(datasetDir, inferenceId, "merge", inferenceId + ".shp").toString(); + // log.info("register={}", register); + // externalJarRunner.run(jarPath, register, inferenceId); + // + // // uid 기준 도엽별 shp, geojson 파일 생성 + // externalJarRunner.run(jarPath, batchIds, inferenceId, "", "RESOLVE"); + // + // log.info("SHP pipeline finished. inferenceId={}", inferenceId); } catch (Exception e) { log.error("SHP pipeline failed. inferenceId={}", inferenceId, e); diff --git a/src/main/java/com/kamco/cd/kamcoback/test/TestShapeApiController.java b/src/main/java/com/kamco/cd/kamcoback/test/TestShapeApiController.java index e55420c2..62bc8bc1 100644 --- a/src/main/java/com/kamco/cd/kamcoback/test/TestShapeApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/test/TestShapeApiController.java @@ -2,13 +2,13 @@ package com.kamco.cd.kamcoback.test; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.scheduler.service.ShpPipelineService; -import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.web.ErrorResponse; import org.springframework.web.bind.annotation.GetMapping; @@ -16,18 +16,17 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - @Tag(name = "test shape api", description = "test shape api") @RestController @RequiredArgsConstructor - @RequestMapping("/api/test") public class TestShapeApiController { private final ShpPipelineService shpPipelineService; - @Operation(summary = "shapefile 생성 테스트", description = "지정된 inference ID와 batch ID 목록으로 shapefile을 생성합니다.") + @Operation( + summary = "shapefile 생성 테스트", + description = "지정된 inference ID와 batch ID 목록으로 shapefile을 생성합니다.") @ApiResponses({ @ApiResponse( responseCode = "200", @@ -44,8 +43,7 @@ public class TestShapeApiController { }) @GetMapping("/make-shapefile") public ApiResponseDto makeShapeFile( - @RequestParam String inferenceId, - @RequestParam List batchIds) { + @RequestParam String inferenceId, @RequestParam List batchIds) { shpPipelineService.makeShapeFile(inferenceId, batchIds); return ApiResponseDto.ok("Shapefile 생성이 시작되었습니다. inferenceId: " + inferenceId); }