diff --git a/gukyuin/pnu-update/.gradle/8.14/executionHistory/executionHistory.bin b/gukyuin/pnu-update/.gradle/8.14/executionHistory/executionHistory.bin index 2358435..19309fb 100644 Binary files a/gukyuin/pnu-update/.gradle/8.14/executionHistory/executionHistory.bin and b/gukyuin/pnu-update/.gradle/8.14/executionHistory/executionHistory.bin differ diff --git a/gukyuin/pnu-update/.gradle/8.14/executionHistory/executionHistory.lock b/gukyuin/pnu-update/.gradle/8.14/executionHistory/executionHistory.lock index 7008e40..df9b025 100644 Binary files a/gukyuin/pnu-update/.gradle/8.14/executionHistory/executionHistory.lock and b/gukyuin/pnu-update/.gradle/8.14/executionHistory/executionHistory.lock differ diff --git a/gukyuin/pnu-update/.gradle/8.14/fileHashes/fileHashes.bin b/gukyuin/pnu-update/.gradle/8.14/fileHashes/fileHashes.bin index 5a92c3a..3dd142e 100644 Binary files a/gukyuin/pnu-update/.gradle/8.14/fileHashes/fileHashes.bin and b/gukyuin/pnu-update/.gradle/8.14/fileHashes/fileHashes.bin differ diff --git a/gukyuin/pnu-update/.gradle/8.14/fileHashes/fileHashes.lock b/gukyuin/pnu-update/.gradle/8.14/fileHashes/fileHashes.lock index dd509e4..751d52f 100644 Binary files a/gukyuin/pnu-update/.gradle/8.14/fileHashes/fileHashes.lock and b/gukyuin/pnu-update/.gradle/8.14/fileHashes/fileHashes.lock differ diff --git a/gukyuin/pnu-update/.gradle/8.14/fileHashes/resourceHashesCache.bin b/gukyuin/pnu-update/.gradle/8.14/fileHashes/resourceHashesCache.bin index 82340c2..3eeea2e 100644 Binary files a/gukyuin/pnu-update/.gradle/8.14/fileHashes/resourceHashesCache.bin and b/gukyuin/pnu-update/.gradle/8.14/fileHashes/resourceHashesCache.bin differ diff --git a/gukyuin/pnu-update/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/gukyuin/pnu-update/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 1e2c5eb..a78e795 100644 Binary files a/gukyuin/pnu-update/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/gukyuin/pnu-update/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/gukyuin/pnu-update/.gradle/file-system.probe b/gukyuin/pnu-update/.gradle/file-system.probe index 6219999..8c89478 100644 Binary files a/gukyuin/pnu-update/.gradle/file-system.probe and b/gukyuin/pnu-update/.gradle/file-system.probe differ diff --git a/gukyuin/pnu-update/build/classes/java/main/com/kamco/cd/kamcoback/service/GukYuinApiPnuJobService.class b/gukyuin/pnu-update/build/classes/java/main/com/kamco/cd/kamcoback/service/GukYuinApiPnuJobService.class index a45120f..6dc8c2c 100644 Binary files a/gukyuin/pnu-update/build/classes/java/main/com/kamco/cd/kamcoback/service/GukYuinApiPnuJobService.class and b/gukyuin/pnu-update/build/classes/java/main/com/kamco/cd/kamcoback/service/GukYuinApiPnuJobService.class differ diff --git a/gukyuin/pnu-update/build/libs/pnu-update.jar b/gukyuin/pnu-update/build/libs/pnu-update.jar index a5ac3d6..a724563 100644 Binary files a/gukyuin/pnu-update/build/libs/pnu-update.jar and b/gukyuin/pnu-update/build/libs/pnu-update.jar differ diff --git a/gukyuin/pnu-update/build/resources/main/application-prod.yml b/gukyuin/pnu-update/build/resources/main/application-prod.yml index 1d17099..471febd 100644 --- a/gukyuin/pnu-update/build/resources/main/application-prod.yml +++ b/gukyuin/pnu-update/build/resources/main/application-prod.yml @@ -84,28 +84,28 @@ mapsheet: baseurl: /app/detect/result #현재사용안함 file: - sync-root-dir: /data/images/ - sync-tmp-dir: /data/repo/tmp # image upload temp dir + sync-root-dir: /kamco-nfs/images/ + sync-tmp-dir: /kamco-nfs/repo/tmp # image upload temp dir sync-file-extention: tfw,tif - #dataset-dir: D:/data/model_output/ #변경 model_output - dataset-dir: /data/model_output/export/ # 마운트경로 AI 추론결과 + #dataset-dir: D:/kamco-nfs/model_output/ #변경 model_output + dataset-dir: /kamco-nfs/model_output/export/ # 마운트경로 AI 추론결과 dataset-tmp-dir: ${file.dataset-dir}tmp/ - #model-dir: D:/data/ckpt/model/ - model-dir: /data/ckpt/model/ # 학습서버에서 트레이닝한 모델업로드경로 + #model-dir: D:/kamco-nfs/ckpt/model/ + model-dir: /kamco-nfs/ckpt/model/ # 학습서버에서 트레이닝한 모델업로드경로 model-tmp-dir: ${file.model-dir}tmp/ model-file-extention: pth,json,py - pt-path: /data/ckpt/v6-cls-checkpoints/ + pt-path: /kamco-nfs/ckpt/v6-cls-checkpoints/ pt-FileName: yolov8_6th-6m.pt - dataset-response: /data/dataset/response/ + dataset-response: /kamco-nfs/dataset/response/ inference: url: http://127.0.0.1:8000/jobs batch-url: http://127.0.0.1:8000/batches - geojson-dir: /data/requests/ # 학습서버에서 트레이닝한 모델업로드경로 - jar-path: /data/repo/jar/shp-exporter.jar # 추론실행을 위한 파일생성경로 + geojson-dir: /kamco-nfs/requests/ # 학습서버에서 트레이닝한 모델업로드경로 + jar-path: /kamco-nfs/repo/jar/shp-exporter.jar # 추론실행을 위한 파일생성경로 inference-server-name: server1,server2,server3,server4 gukyuin: @@ -113,7 +113,7 @@ gukyuin: cdi: ${gukyuin.url}/api/kcd/cdi training-data: - geojson-dir: /data/dataset/request/ + geojson-dir: /kamco-nfs/dataset/request/ layer: geoserver-url: https://kamco.geo-dev.gs.dabeeo.com diff --git a/gukyuin/pnu-update/build/tmp/compileJava/previous-compilation-data.bin b/gukyuin/pnu-update/build/tmp/compileJava/previous-compilation-data.bin index 09b18bf..fbfcc03 100644 Binary files a/gukyuin/pnu-update/build/tmp/compileJava/previous-compilation-data.bin and b/gukyuin/pnu-update/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/gukyuin/pnu-update/src/main/java/com/kamco/cd/kamcoback/service/GukYuinApiPnuJobService.java b/gukyuin/pnu-update/src/main/java/com/kamco/cd/kamcoback/service/GukYuinApiPnuJobService.java index dffdef4..64b4c6d 100644 --- a/gukyuin/pnu-update/src/main/java/com/kamco/cd/kamcoback/service/GukYuinApiPnuJobService.java +++ b/gukyuin/pnu-update/src/main/java/com/kamco/cd/kamcoback/service/GukYuinApiPnuJobService.java @@ -34,22 +34,26 @@ public class GukYuinApiPnuJobService { } /** 국유인 등록 완료 후, 탐지객체 조회해서 PNU 업데이트 하는 스케줄링 하루 1번 새벽 1시에 실행 */ - // @Scheduled(cron = "0 * * * * *") public void findGukYuinContListPnuUpdate() { - // if (isLocalProfile()) { - // return; - // } + log.info("[Step 1-1] 국유인 연동까지 완료된 추론 목록 가져오기"); + log.info("=== apply_status -> 100% 다운 완료: GUK_COMPLETED, PNU매핑 실패: PNU_FAILED"); List list = gukYuinPnuJobCoreService.findGukyuinApplyStatusUidList( List.of(GukYuinStatus.GUK_COMPLETED.getId(), GukYuinStatus.PNU_FAILED.getId())); + + log.info("[Step 1-2] 매핑할 추론 회차 갯수 : {}", list == null ? 0 : list.size()); if (list.isEmpty()) { + log.info("[Step 1-3] 매핑할 추론 회차 갯수 없어서 리턴하고 끝남"); return; } + log.info("[Step 2-1] 추론 회차별 pnu 매핑 for문 시작 "); for (LearnKeyDto dto : list) { try { - processUid(dto.getUid(), dto.getUid()); + log.info("[Step 2-2] 진행하는 추론 Uid: {}", dto.getUid()); + processUid(dto.getUid()); + gukYuinPnuJobCoreService.updateGukYuinApplyStateComplete( dto.getId(), GukYuinStatus.PNU_COMPLETED); } catch (Exception e) { @@ -60,15 +64,21 @@ public class GukYuinApiPnuJobService { } } - private void processUid(String chnDtctId, String uid) { - ResultDto result = gukYuinApiService.listChnDtctId(chnDtctId, "Y"); + private void processUid(String uid) { + log.info("[Step 2-4] 탐지 등록목록 상세 API 호출 시작"); + ResultDto result = gukYuinApiService.listChnDtctId(uid, "Y"); + if (result == null || result.getResult() == null || result.getResult().isEmpty()) { + log.info("[Step 2-5] 결과값 없어서 return"); return; } + log.info("[Step 2-5] 결과값 첫번째 값 가져오기"); ChngDetectMastDto.Basic basic = result.getResult().get(0); String chnDtctCnt = basic.getChnDtctCnt(); + log.info("[Step 2-6] 탐지 객체 전체 갯수 chnDtctCnt = {}", chnDtctCnt); if (chnDtctCnt == null || chnDtctCnt.isEmpty()) { + log.info("[Step 2-76] 탐지 객체 전체 갯수 없어서 return"); return; } @@ -77,29 +87,44 @@ public class GukYuinApiPnuJobService { int totalCount = Integer.parseInt(chnDtctCnt); int totalPages = (totalCount + pageSize - 1) / pageSize; + log.info("[Step 3-1] 탐지 객체 전체 수로 페이지 계산 : {}", totalPages); for (int page = 0; page < totalPages; page++) { + log.info("[Step 3-2] 페이지 별 호출 : {}", page); processPage(uid, page, pageSize); } } private void processPage(String uid, int page, int pageSize) { + log.info("[Step 4-1] 탐지객체 목록 API 호출 시작"); ResultContDto resContList = gukYuinApiService.findChnContList(uid, page, pageSize, "Y"); if (resContList.getResult() == null || resContList.getResult().isEmpty()) { + log.info("[Step 4-2] 탐지객체 목록 결과 없어서 return"); return; // 외부 API 이상 방어 } List contList = resContList.getResult(); + log.info("[Step 4-3] 탐지객체 목록 결과 contList.size : {}", contList == null ? 0 : contList.size()); for (ContBasic cont : contList) { String[] pnuList = cont.getPnuList(); long pnuCnt = pnuList == null ? 0 : pnuList.length; + log.info("[Step 4-4] 객체에 연결된 pnuCnt : {}", pnuCnt); if (cont.getChnDtctObjtId() != null) { + log.info( + "[Step 4-5] inference_geom 에 pnu 갯수 update : cont.getChnDtctObjtId = {}", + cont.getChnDtctObjtId()); + log.info(" === cont.getChnDtctObjtId : {}", cont.getChnDtctObjtId()); + log.info(" === pnuCnt : {}", pnuCnt); gukYuinPnuJobCoreService.updateInferenceGeomDataPnuCnt(cont.getChnDtctObjtId(), pnuCnt); if (pnuCnt > 0) { + log.info("[Step 4-6] 객체 ID로 geoUid 검색 = {}", cont.getChnDtctObjtId()); Long geoUid = gukYuinPnuJobCoreService.findMapSheetAnalDataInferenceGeomUid( cont.getChnDtctObjtId()); + + log.info("[Step 4-7] tb_pnu 에 데이터 upsert 수행"); + log.info("===== geoUid = {}", geoUid); gukYuinPnuJobCoreService.insertGeoUidPnuData(geoUid, pnuList, cont.getChnDtctObjtId()); } } diff --git a/gukyuin/pnu-update/src/main/resources/application-prod.yml b/gukyuin/pnu-update/src/main/resources/application-prod.yml index 1d17099..471febd 100644 --- a/gukyuin/pnu-update/src/main/resources/application-prod.yml +++ b/gukyuin/pnu-update/src/main/resources/application-prod.yml @@ -84,28 +84,28 @@ mapsheet: baseurl: /app/detect/result #현재사용안함 file: - sync-root-dir: /data/images/ - sync-tmp-dir: /data/repo/tmp # image upload temp dir + sync-root-dir: /kamco-nfs/images/ + sync-tmp-dir: /kamco-nfs/repo/tmp # image upload temp dir sync-file-extention: tfw,tif - #dataset-dir: D:/data/model_output/ #변경 model_output - dataset-dir: /data/model_output/export/ # 마운트경로 AI 추론결과 + #dataset-dir: D:/kamco-nfs/model_output/ #변경 model_output + dataset-dir: /kamco-nfs/model_output/export/ # 마운트경로 AI 추론결과 dataset-tmp-dir: ${file.dataset-dir}tmp/ - #model-dir: D:/data/ckpt/model/ - model-dir: /data/ckpt/model/ # 학습서버에서 트레이닝한 모델업로드경로 + #model-dir: D:/kamco-nfs/ckpt/model/ + model-dir: /kamco-nfs/ckpt/model/ # 학습서버에서 트레이닝한 모델업로드경로 model-tmp-dir: ${file.model-dir}tmp/ model-file-extention: pth,json,py - pt-path: /data/ckpt/v6-cls-checkpoints/ + pt-path: /kamco-nfs/ckpt/v6-cls-checkpoints/ pt-FileName: yolov8_6th-6m.pt - dataset-response: /data/dataset/response/ + dataset-response: /kamco-nfs/dataset/response/ inference: url: http://127.0.0.1:8000/jobs batch-url: http://127.0.0.1:8000/batches - geojson-dir: /data/requests/ # 학습서버에서 트레이닝한 모델업로드경로 - jar-path: /data/repo/jar/shp-exporter.jar # 추론실행을 위한 파일생성경로 + geojson-dir: /kamco-nfs/requests/ # 학습서버에서 트레이닝한 모델업로드경로 + jar-path: /kamco-nfs/repo/jar/shp-exporter.jar # 추론실행을 위한 파일생성경로 inference-server-name: server1,server2,server3,server4 gukyuin: @@ -113,7 +113,7 @@ gukyuin: cdi: ${gukyuin.url}/api/kcd/cdi training-data: - geojson-dir: /data/dataset/request/ + geojson-dir: /kamco-nfs/dataset/request/ layer: geoserver-url: https://kamco.geo-dev.gs.dabeeo.com