From e9b9075c72459b7929744d44b71678933e004531 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Fri, 27 Feb 2026 20:37:56 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AD=EC=9C=A0=EC=9D=B8=20=EC=8B=A4?= =?UTF-8?q?=ED=83=9C=EC=A1=B0=EC=82=AC=20job=20=EC=97=90=20log=20=EC=B0=8D?= =?UTF-8?q?=EA=B8=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gukyuin/service/GukYuinApiService.java | 2 ++ .../service/GukYuinApiStbltJobService.java | 29 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java b/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java index 598ff286..b86ba131 100644 --- a/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java +++ b/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java @@ -562,10 +562,12 @@ public class GukYuinApiService { + "&yyyymmdd=" + yyyymmdd; + log.info("##### API 호출 URL : {}", url); ExternalCallResult result = externalHttpClient.call( url, HttpMethod.GET, null, netUtils.jsonHeaders(), ChngDetectMastDto.RlbDtctDto.class); + log.info("##### API 호출 완료 : {}", result.toString()); this.insertGukyuinAuditLog( EventType.LIST.getId(), netUtils.getLocalIP(), diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/GukYuinApiStbltJobService.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/GukYuinApiStbltJobService.java index 87221d89..56cb0ae7 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/GukYuinApiStbltJobService.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/GukYuinApiStbltJobService.java @@ -38,24 +38,26 @@ public class GukYuinApiStbltJobService { return "local".equalsIgnoreCase(profile); } - // @Scheduled(cron = "0 0 3 * * *") public void runTask() { findGukYuinEligibleForSurvey(null); } /** 국유인 연동 후, 실태조사 적합여부 확인하여 update */ public void findGukYuinEligibleForSurvey(LocalDate baseDate) { - // if (isLocalProfile()) { - // return; - // } + log.info("[Step 1-1] 국유인 연동 PNU 완료된 추론 회차 정보 가져오기 "); + log.info(" learn 테이블의 apply_status : {}", GukYuinStatus.PNU_COMPLETED.getId()); List list = gukYuinStbltJobCoreService.findGukYuinEligibleForSurveyList( GukYuinStatus.PNU_COMPLETED.getId()); + + log.info("[Step 1-2] 국유인 연동 PNU 완료된 추론 회차 갯수 : {}", list.size()); if (list.isEmpty()) { + log.info("[Step 1-3] 국유인 연동 PNU 완료된 추론 회차 갯수 없어서 return"); return; } + log.info("[Step 2-1] 추론 회차 list 로 for문 실행하기 "); for (LearnKeyDto dto : list) { try { String targetDate = @@ -63,19 +65,30 @@ public class GukYuinApiStbltJobService { .minusDays(1) .format(DateTimeFormatter.ofPattern("yyyyMMdd")); + log.info("[Step 2-2] 실태조사 적합여부 조회 날짜 확인 : {}", targetDate); if (baseDate != null) { // 파라미터가 있으면 targetDate = baseDate.format(DateTimeFormatter.ofPattern("yyyyMMdd")); + log.info("[Step 2-3] 수동호출 baseDate 가 있을 경우, 실태조사 적합여부 조회 날짜 확인 : {}", targetDate); } + log.info("[Step 3-1] 국유인 실태조사 적합여부 API 호출 시작 "); + log.info(" === 값 확인 - uid : {}", dto.getUid()); + log.info(" === 값 확인 - targetDate : {}", targetDate); RlbDtctDto result = gukYuinApiService.findRlbDtctList(dto.getUid(), targetDate, "Y"); if (result == null || result.getResult() == null || result.getResult().isEmpty()) { - log.warn("[GUKYUIN] empty result chnDtctMstId={}", dto.getChnDtctMstId()); + log.info("[GUKYUIN] empty result chnDtctId={}", dto.getUid()); + log.info("=== 국유인 API 조회 결과 없어서 continue"); continue; } + log.info("[Step 4-1] 국유인 실태조사 적합여부 result 값으로 데이터 업데이트"); + log.info(" === 데이터 갯수 : {}", result.getResult().size()); + for (RlbDtctMastDto stbltDto : result.getResult()) { + log.info("[Step 4-2] 국유인 실태조사 적합여부 결과 가져오기"); String resultUid = stbltDto.getChnDtctObjtId(); + log.info(" == 테이블 tb_pnu 에 적합여부 리턴 결과를 upsert 진행, 객체 uid : {}", resultUid); gukYuinStbltJobCoreService.updateGukYuinEligibleForSurvey(resultUid, stbltDto); } @@ -90,6 +103,7 @@ public class GukYuinApiStbltJobService { e -> { List pnuList = e.getValue(); + log.info("[Step 4-3] 국유인 실태조사 적합여부 업데이트 값을 객체 uid 기준으로 DTO 생성"); boolean hasY = pnuList.stream().anyMatch(v -> "Y".equals(v.getStbltYn())); String fitYn = hasY ? "Y" : "N"; @@ -105,7 +119,9 @@ public class GukYuinApiStbltJobService { .findFirst() .orElse(null); + log.info(" === selected DTO : {}", selected); if (selected == null) { + log.info(" === selected NULL"); return null; // 방어 코드 } @@ -113,10 +129,11 @@ public class GukYuinApiStbltJobService { fitYn, selected.getIncyCd(), selected.getIncyRsnCont()); })); + log.info("[Step 4-4] 국유인 실태조사 적합여부, 사유, 내용을 inference_geom 테이블에 update"); resultMap.forEach(gukYuinStbltJobCoreService::updateGukYuinObjectStbltYn); } catch (Exception e) { - log.error("[GUKYUIN] failed uid={}", dto.getChnDtctMstId(), e); + log.error("[GUKYUIN] failed uid={}", dto.getUid(), e); } } }