[KC-108] 분석도엽 ai api호출 테스트중, 모델타입 조회 컬럼 추가

This commit is contained in:
2026-01-12 16:59:00 +09:00
parent cd1a79049a
commit cb9de9a95d
11 changed files with 259 additions and 100 deletions

View File

@@ -134,11 +134,13 @@ public class InferenceResultApiController {
LocalDate endDttm,
@Parameter(description = "키워드 (모델버전)", example = "M1.H1.E28") @RequestParam(required = false)
String searchVal,
@Parameter(description = "타입", example = "M1") @RequestParam(required = false)
String modelType,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "20") int size) {
ModelMngDto.searchReq searchReq = new ModelMngDto.searchReq(page, size, null);
Page<ModelMngDto.ModelList> result =
modelMngService.findModelMgmtList(searchReq, strtDttm, endDttm, null, searchVal);
modelMngService.findModelMgmtList(searchReq, strtDttm, endDttm, modelType, searchVal);
return ApiResponseDto.ok(result);
}

View File

@@ -9,11 +9,13 @@ import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Dashboard;
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Detail;
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.MapSheet;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.DetectOption;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetNumDto;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetScope;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.ResultList;
import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto;
import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto.PredRequestsAreas;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngListCompareDto;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngListDto;
import com.kamco.cd.kamcoback.model.dto.ModelMngDto.Basic;
import com.kamco.cd.kamcoback.postgres.core.InferenceResultCoreService;
import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService;
@@ -22,7 +24,10 @@ import com.kamco.cd.kamcoback.scene.dto.MapInkxMngDto.Search5kReq;
import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
@@ -65,53 +70,112 @@ public class InferenceResultService {
*/
@Transactional
public UUID saveInferenceInfo(InferenceResultDto.RegReq req) {
// TODO tif 없으면 전년도 파일 조회 쿼리 추가해야함
// 전체일때 5k도협 가져오기
List<MapSheetNumDto> mapSheetNum = new ArrayList<>();
List<MapSheetNumDto> mapSheetTargetNum = new ArrayList<>();
List<MapSheetNumDto> mapSheetCompareNum = new ArrayList<>();
// 분석대상 도엽이 전체일때
if (MapSheetScope.ALL.getId().equals(req.getMapSheetScope())) {
Search5kReq mapReq = new Search5kReq();
mapReq.setUseInference("USE");
MapSheetNumDto mapSheetNumDto = new MapSheetNumDto();
inferenceResultCoreService
.findByMapidList(mapReq)
.forEach(
mapInkx5kEntity -> {
mapSheetNumDto.setMapSheetNum(mapInkx5kEntity.getMapidcdNo());
mapSheetNumDto.setMapSheetName(mapInkx5kEntity.getMapidNm());
mapSheetNum.add(mapSheetNumDto);
});
List<String> mapTargetIds = new ArrayList<>();
// 기준년도 조회
List<MngListDto> targetList = mapSheetMngCoreService.getHstMapSheetList(req.getTargetYyyy());
targetList.forEach(
hstMapSheet -> {
// 비교년도는 target 년도 기준으로 가져옴 파라미터 만들기
mapTargetIds.add(hstMapSheet.getMapSheetNum());
//
// mapSheetNumDto.setMapSheetNum(hstMapSheet.getMapSheetNum());
// mapSheetNumDto.setMapSheetName(hstMapSheet.getMapSheetName());
// mapSheetTargetNum.add(mapSheetNumDto);
});
// 비교년도 조회
List<String> mapCompareIds = new ArrayList<>();
List<MngListCompareDto> compareList =
mapSheetMngCoreService.getByHstMapSheetCompareList(req.getCompareYyyy(), mapTargetIds);
for (MngListCompareDto dto : compareList) {
// 추론 제외일때 이전년도 파일이 없으면 제외
if (req.getDetectOption().equals(DetectOption.EXCL.getId())) {
int targetYear = req.getTargetYyyy() - 1;
if (dto.getBeforeYear() != targetYear) {
continue;
}
}
// 비교년도는 target 년도 기준으로 가져옴
mapCompareIds.add(dto.getMapSheetNum());
}
Set<String> compareSet =
mapCompareIds.stream()
.filter(Objects::nonNull)
.map(String::trim) // 공백/개행 방지
.collect(Collectors.toSet());
List<String> commonIds =
mapTargetIds.stream()
.filter(Objects::nonNull)
.map(String::trim)
.filter(compareSet::contains)
.toList();
System.out.println("mapTargetIds size=" + mapTargetIds.size());
System.out.println("mapCompareIds size=" + mapCompareIds.size());
System.out.println("commonIds size=" + commonIds.size());
System.out.println(commonIds);
Set<String> commonIdSet =
commonIds.stream().filter(Objects::nonNull).map(String::trim).collect(Collectors.toSet());
List<MapSheetNumDto> mapSheetNum =
targetList.stream()
.filter(dto -> dto.getMapSheetNum() != null)
.filter(dto -> commonIdSet.contains(dto.getMapSheetNum().trim()))
.map(
dto -> {
MapSheetNumDto mapSheetNumDto = new MapSheetNumDto();
mapSheetNumDto.setMapSheetNum(dto.getMapSheetNum());
mapSheetNumDto.setMapSheetName(dto.getMapSheetName());
return mapSheetNumDto;
})
.toList();
} else {
// 부분ㄹ
}
// 추론 테이블 저장
UUID uuid = inferenceResultCoreService.saveInferenceInfo(req);
// UUID uuid = inferenceResultCoreService.saveInferenceInfo(req);
//
// List<String> mapSheetNumList = new ArrayList<>();
// for (MapSheetNumDto mapSheetDto : mapSheetNum) {
// mapSheetNumList.add(mapSheetDto.getMapSheetNum());
// }
//
// String modelComparePath =
// this.getSceneInference(String.valueOf(req.getCompareYyyy()), mapSheetNumList);
// String modelTargetPath =
// this.getSceneInference(String.valueOf(req.getTargetYyyy()), mapSheetNumList);
//
// PredRequestsAreas predRequestsAreas = new PredRequestsAreas();
// predRequestsAreas.setInput1_year(req.getCompareYyyy());
// predRequestsAreas.setInput2_year(req.getTargetYyyy());
// predRequestsAreas.setInput1_scene_path(modelComparePath);
// predRequestsAreas.setInput2_scene_path(modelTargetPath);
//
// InferenceSendDto m1 = this.getModelInfo(req.getModel1Uuid());
// InferenceSendDto m2 = this.getModelInfo(req.getModel2Uuid());
// InferenceSendDto m3 = this.getModelInfo(req.getModel3Uuid());
//
// m1.setPredRequestsAreas(predRequestsAreas);
// m2.setPredRequestsAreas(predRequestsAreas);
// m3.setPredRequestsAreas(predRequestsAreas);
List<String> mapSheetNumList = new ArrayList<>();
for (MapSheetNumDto mapSheetDto : mapSheetNum) {
mapSheetNumList.add(mapSheetDto.getMapSheetNum());
}
String modelComparePath =
this.getSceneInference(String.valueOf(req.getCompareYyyy()), mapSheetNumList);
String modelTargetPath =
this.getSceneInference(String.valueOf(req.getTargetYyyy()), mapSheetNumList);
PredRequestsAreas predRequestsAreas = new PredRequestsAreas();
predRequestsAreas.setInput1_year(req.getCompareYyyy());
predRequestsAreas.setInput2_year(req.getTargetYyyy());
predRequestsAreas.setInput1_scene_path(modelComparePath);
predRequestsAreas.setInput2_scene_path(modelTargetPath);
InferenceSendDto m1 = this.getModelInfo(req.getModel1Uuid());
InferenceSendDto m2 = this.getModelInfo(req.getModel2Uuid());
InferenceSendDto m3 = this.getModelInfo(req.getModel3Uuid());
m1.setPredRequestsAreas(predRequestsAreas);
m2.setPredRequestsAreas(predRequestsAreas);
m3.setPredRequestsAreas(predRequestsAreas);
ensureAccepted(m1);
// ensureAccepted(m1);
// ensureAccepted(m2);
// ensureAccepted(m3);