추론 run 수정
This commit is contained in:
@@ -135,8 +135,10 @@ public class InferenceResultService {
|
||||
* @return
|
||||
*/
|
||||
public UUID runExcl(InferenceResultDto.RegReq req) {
|
||||
// target 도엽 조회
|
||||
List<MngListDto> targetDtoList = mapSheetMngCoreService.getHstMapSheetList(req);
|
||||
|
||||
// target 리스트 추출 (null 제거 + 중복 제거)
|
||||
List<String> targetList =
|
||||
targetDtoList.stream()
|
||||
.map(MngListDto::getMapSheetNum)
|
||||
@@ -144,32 +146,46 @@ public class InferenceResultService {
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
// compare 도엽번호 리스트 조회 (null 제거 + 중복 제거)
|
||||
List<String> compareList =
|
||||
mapSheetMngCoreService.getMapSheetNumByHst(req.getCompareYyyy()).stream()
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
// compare 기준
|
||||
Set<String> compareSet = new HashSet<>(compareList);
|
||||
|
||||
// target 기준으로 compare에 존재하는 도엽만 필터링
|
||||
List<String> filteredTargetList = targetList.stream().filter(compareSet::contains).toList();
|
||||
|
||||
// 도엽 비교 로그 출력
|
||||
logYearComparison(targetList, compareList, filteredTargetList);
|
||||
|
||||
// compare geojson 파일 생성
|
||||
Scene compareScene =
|
||||
getSceneInference(
|
||||
req.getCompareYyyy().toString(),
|
||||
filteredTargetList,
|
||||
req.getMapSheetScope(),
|
||||
req.getDetectOption());
|
||||
req.getCompareYyyy().toString(), // 기준년도
|
||||
filteredTargetList, // 교집합 도엽
|
||||
req.getMapSheetScope(), // ALL / 부분
|
||||
req.getDetectOption()); // EXCL / PREV
|
||||
|
||||
// target geojson 파일 생성
|
||||
Scene targetScene =
|
||||
getSceneInference(
|
||||
req.getTargetYyyy().toString(),
|
||||
filteredTargetList,
|
||||
req.getTargetYyyy().toString(), // 대상년도
|
||||
filteredTargetList, // 교집합 도엽
|
||||
req.getMapSheetScope(),
|
||||
req.getDetectOption());
|
||||
|
||||
return executeInference(req, targetDtoList, filteredTargetList, compareScene, targetScene);
|
||||
// 추론 실행
|
||||
return executeInference(
|
||||
req,
|
||||
targetDtoList, // 전체 target 목록
|
||||
filteredTargetList, // 최종 추론 대상
|
||||
compareScene, // compare geojson
|
||||
targetScene // target geojson
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -180,8 +196,10 @@ public class InferenceResultService {
|
||||
*/
|
||||
@Transactional
|
||||
public UUID runPrev(InferenceResultDto.RegReq req) {
|
||||
// target 목록 조회
|
||||
List<MngListDto> targetDtoList = mapSheetMngCoreService.getHstMapSheetList(req);
|
||||
|
||||
// target 도엽번호 리스트 추출
|
||||
List<String> targetList =
|
||||
targetDtoList.stream()
|
||||
.map(MngListDto::getMapSheetNum)
|
||||
@@ -189,27 +207,35 @@ public class InferenceResultService {
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
// target 포함 여부 판단
|
||||
Set<String> targetSet = new HashSet<>(targetList);
|
||||
|
||||
// compare 목록 조회
|
||||
List<MapSheetFallbackYearDto> compareDtoList =
|
||||
new ArrayList<>(mapSheetMngCoreService.getMapSheetNumDtoByHst(req.getCompareYyyy()));
|
||||
|
||||
// compare 도엽번호 Set 구성
|
||||
Set<String> compareSet =
|
||||
compareDtoList.stream()
|
||||
.map(MapSheetFallbackYearDto::getMapSheetNum)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// arget에는 있으나 compare에는 없는 도엽 추출
|
||||
List<String> remainingTargetList =
|
||||
targetList.stream().filter(s -> !compareSet.contains(s)).toList();
|
||||
|
||||
// fallback년도 도엽 조회
|
||||
List<MapSheetFallbackYearDto> fallbackYearDtoList =
|
||||
mapSheetMngCoreService.findFallbackCompareYearByMapSheets(
|
||||
req.getTargetYyyy(), remainingTargetList);
|
||||
req.getTargetYyyy(), // 대상년도 기준
|
||||
remainingTargetList // compare에 없는 도엽들
|
||||
);
|
||||
|
||||
// 기존 compare , fallback 합치기
|
||||
compareDtoList.addAll(fallbackYearDtoList);
|
||||
|
||||
// mapSheetNum 기준 중복 제거(기존 compare 우선)
|
||||
// mapSheetNum 기준 중복 제거 (기존 compare 우선 유지)
|
||||
compareDtoList =
|
||||
new ArrayList<>(
|
||||
compareDtoList.stream()
|
||||
@@ -218,49 +244,56 @@ public class InferenceResultService {
|
||||
Collectors.toMap(
|
||||
MapSheetFallbackYearDto::getMapSheetNum,
|
||||
Function.identity(),
|
||||
(existing, replacement) -> existing,
|
||||
(existing, replacement) -> existing, // 기존 우선
|
||||
LinkedHashMap::new))
|
||||
.values());
|
||||
|
||||
// 최종 compare 도엽 Set 구성
|
||||
Set<String> availableCompareSheets =
|
||||
compareDtoList.stream()
|
||||
.map(MapSheetFallbackYearDto::getMapSheetNum)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 최종 추론 대상 도엽
|
||||
// target 중 compare(fallback)에 존재하는 도엽만 추출
|
||||
List<String> filteredTargetList =
|
||||
targetList.stream().filter(availableCompareSheets::contains).toList();
|
||||
|
||||
// compare only 계산 (target에는 없는 compare 도엽 수)
|
||||
long compareOnlyCount =
|
||||
compareDtoList.stream()
|
||||
.map(MapSheetFallbackYearDto::getMapSheetNum)
|
||||
.filter(s -> s != null && !targetSet.contains(s))
|
||||
.count();
|
||||
|
||||
// 연도별 도엽 비교 로그 출력
|
||||
log.info(
|
||||
"""
|
||||
===== MapSheet Year Comparison =====
|
||||
target Total: {}
|
||||
compare Total: {}
|
||||
Intersection: {}
|
||||
target Only (Excluded): {}
|
||||
compare Only: {}
|
||||
====================================
|
||||
""",
|
||||
targetList.size(),
|
||||
compareDtoList.size(),
|
||||
filteredTargetList.size(),
|
||||
targetList.size() - filteredTargetList.size(),
|
||||
compareOnlyCount);
|
||||
===== MapSheet Year Comparison =====
|
||||
target Total: {}
|
||||
compare Total: {}
|
||||
Intersection: {}
|
||||
target Only (Excluded): {}
|
||||
compare Only: {}
|
||||
====================================
|
||||
""",
|
||||
targetList.size(), // target count
|
||||
compareDtoList.size(), // compare count
|
||||
filteredTargetList.size(), // target 기준으로 compare 비교하여 최종 추론할 도엽 count
|
||||
targetList.size() - filteredTargetList.size(), // compare에 존재하지 않는 target 도엽 수
|
||||
compareOnlyCount); // target 에 존재하지 않는 compare 도엽수
|
||||
|
||||
// compareDtoList도 filteredTargetList 기준으로 필터
|
||||
// compareDtoList도 최종 교집합 기준으로 필터
|
||||
Set<String> filteredTargetSet = new HashSet<>(filteredTargetList);
|
||||
|
||||
List<MapSheetFallbackYearDto> filteredCompareDtoList =
|
||||
compareDtoList.stream()
|
||||
.filter(d -> d.getMapSheetNum() != null)
|
||||
.filter(d -> filteredTargetSet.contains(d.getMapSheetNum()))
|
||||
.toList();
|
||||
|
||||
// compare 기준 geojson 생성 (년도 fallback 반영)
|
||||
Scene compareScene =
|
||||
getSceneInference(
|
||||
filteredCompareDtoList,
|
||||
@@ -268,6 +301,7 @@ public class InferenceResultService {
|
||||
req.getMapSheetScope(),
|
||||
req.getDetectOption());
|
||||
|
||||
// target 기준 geojson 생성
|
||||
Scene targetScene =
|
||||
getSceneInference(
|
||||
req.getTargetYyyy().toString(),
|
||||
@@ -275,6 +309,7 @@ public class InferenceResultService {
|
||||
req.getMapSheetScope(),
|
||||
req.getDetectOption());
|
||||
|
||||
// AI 추론 실행
|
||||
return executeInference(req, targetDtoList, filteredTargetList, compareScene, targetScene);
|
||||
}
|
||||
|
||||
@@ -355,11 +390,11 @@ public class InferenceResultService {
|
||||
compare Only: {}
|
||||
====================================
|
||||
""",
|
||||
targetList.size(),
|
||||
compareList.size(),
|
||||
filteredTargetList.size(),
|
||||
targetList.size() - filteredTargetList.size(),
|
||||
compareOnlyCount);
|
||||
targetList.size(), // target count
|
||||
compareList.size(), // compare count
|
||||
filteredTargetList.size(), // target 기준으로 compare 비교하여 최종 추론할 도엽 count
|
||||
targetList.size() - filteredTargetList.size(), // compare에 존재하지 않는 target 도엽 수
|
||||
compareOnlyCount); // target 에 존재하지 않는 compare 도엽수
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user