Merge pull request 'feat/infer_dev_260107' (#243) from feat/infer_dev_260107 into develop
Reviewed-on: https://kamco.gitea.gs.dabeeo.com/dabeeo/kamco-dabeeo-backoffice/pulls/243
This commit is contained in:
@@ -28,6 +28,7 @@ import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.core.types.dsl.NumberExpression;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
@@ -118,9 +119,9 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
.groupBy(systemMetricEntity.serverName)
|
||||
.fetch();
|
||||
|
||||
List<Integer> latestGpuIds =
|
||||
List<OffsetDateTime> latestGpuIds =
|
||||
queryFactory
|
||||
.select(gpuMetricEntity.id1.max())
|
||||
.select(gpuMetricEntity.timestamp.max())
|
||||
.from(gpuMetricEntity)
|
||||
.groupBy(gpuMetricEntity.serverName)
|
||||
.fetch();
|
||||
@@ -135,12 +136,15 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
systemMetricEntity.cpuSystem,
|
||||
systemMetricEntity.memused,
|
||||
systemMetricEntity.kbmemused,
|
||||
gpuMetricEntity.gpuUtil))
|
||||
gpuMetricEntity.gpuUtil
|
||||
// gpuMetricEntity.gpuMemUsed,
|
||||
// gpuMetricEntity.gpuMemTotal
|
||||
))
|
||||
.from(systemMetricEntity)
|
||||
.leftJoin(gpuMetricEntity)
|
||||
.on(
|
||||
gpuMetricEntity
|
||||
.id1
|
||||
.timestamp
|
||||
.in(latestGpuIds)
|
||||
.and(gpuMetricEntity.serverName.eq(systemMetricEntity.serverName)))
|
||||
.where(systemMetricEntity.id1.in(latestIds)) // In 절 사용
|
||||
|
||||
@@ -772,34 +772,49 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport
|
||||
public TrainingDataLabelDto.CogImageResponse getCogImageUrl(
|
||||
String mapSheetNum, Integer beforeYear, Integer afterYear) {
|
||||
try {
|
||||
// beforeYear COG URL 조회
|
||||
String beforeCogUrl =
|
||||
queryFactory
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.from(imageryEntity)
|
||||
.where(imageryEntity.scene5k.eq(mapSheetNum), imageryEntity.year.eq(beforeYear))
|
||||
.fetchFirst();
|
||||
// 최소 하나의 년도는 제공되어야 함
|
||||
if (beforeYear == null && afterYear == null) {
|
||||
throw new IllegalArgumentException(
|
||||
"At least one year parameter (beforeYear or afterYear) must be provided");
|
||||
}
|
||||
|
||||
// afterYear COG URL 조회
|
||||
String afterCogUrl =
|
||||
queryFactory
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.from(imageryEntity)
|
||||
.where(imageryEntity.scene5k.eq(mapSheetNum), imageryEntity.year.eq(afterYear))
|
||||
.fetchFirst();
|
||||
String beforeCogUrl = null;
|
||||
String afterCogUrl = null;
|
||||
|
||||
if (beforeCogUrl == null && afterCogUrl == null) {
|
||||
// beforeYear가 제공된 경우 COG URL 조회
|
||||
if (beforeYear != null) {
|
||||
beforeCogUrl =
|
||||
queryFactory
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.from(imageryEntity)
|
||||
.where(imageryEntity.scene5k.eq(mapSheetNum), imageryEntity.year.eq(beforeYear))
|
||||
.fetchFirst();
|
||||
}
|
||||
|
||||
// afterYear가 제공된 경우 COG URL 조회
|
||||
if (afterYear != null) {
|
||||
afterCogUrl =
|
||||
queryFactory
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.from(imageryEntity)
|
||||
.where(imageryEntity.scene5k.eq(mapSheetNum), imageryEntity.year.eq(afterYear))
|
||||
.fetchFirst();
|
||||
}
|
||||
|
||||
// 제공된 년도에 대해 하나도 찾지 못한 경우에만 예외 발생
|
||||
if ((beforeYear != null && beforeCogUrl == null)
|
||||
&& (afterYear != null && afterCogUrl == null)) {
|
||||
throw new RuntimeException(
|
||||
"COG images not found for mapSheetNum: "
|
||||
+ mapSheetNum
|
||||
+ ", years: "
|
||||
+ beforeYear
|
||||
+ ", "
|
||||
+ afterYear);
|
||||
+ (beforeYear != null ? beforeYear : "")
|
||||
+ (beforeYear != null && afterYear != null ? ", " : "")
|
||||
+ (afterYear != null ? afterYear : ""));
|
||||
}
|
||||
|
||||
return TrainingDataLabelDto.CogImageResponse.builder()
|
||||
@@ -817,9 +832,9 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport
|
||||
"Failed to get COG image URLs for mapSheetNum: "
|
||||
+ mapSheetNum
|
||||
+ ", years: "
|
||||
+ beforeYear
|
||||
+ ", "
|
||||
+ afterYear,
|
||||
+ (beforeYear != null ? beforeYear : "")
|
||||
+ (beforeYear != null && afterYear != null ? ", " : "")
|
||||
+ (afterYear != null ? afterYear : ""),
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -776,34 +776,49 @@ public class TrainingDataReviewRepositoryImpl extends QuerydslRepositorySupport
|
||||
public TrainingDataReviewDto.CogImageResponse getCogImageUrl(
|
||||
String mapSheetNum, Integer beforeYear, Integer afterYear) {
|
||||
try {
|
||||
// beforeYear COG URL 조회
|
||||
String beforeCogUrl =
|
||||
queryFactory
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.from(imageryEntity)
|
||||
.where(imageryEntity.scene5k.eq(mapSheetNum), imageryEntity.year.eq(beforeYear))
|
||||
.fetchFirst();
|
||||
// 최소 하나의 년도는 제공되어야 함
|
||||
if (beforeYear == null && afterYear == null) {
|
||||
throw new IllegalArgumentException(
|
||||
"At least one year parameter (beforeYear or afterYear) must be provided");
|
||||
}
|
||||
|
||||
// afterYear COG URL 조회
|
||||
String afterCogUrl =
|
||||
queryFactory
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.from(imageryEntity)
|
||||
.where(imageryEntity.scene5k.eq(mapSheetNum), imageryEntity.year.eq(afterYear))
|
||||
.fetchFirst();
|
||||
String beforeCogUrl = null;
|
||||
String afterCogUrl = null;
|
||||
|
||||
if (beforeCogUrl == null && afterCogUrl == null) {
|
||||
// beforeYear가 제공된 경우 COG URL 조회
|
||||
if (beforeYear != null) {
|
||||
beforeCogUrl =
|
||||
queryFactory
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.from(imageryEntity)
|
||||
.where(imageryEntity.scene5k.eq(mapSheetNum), imageryEntity.year.eq(beforeYear))
|
||||
.fetchFirst();
|
||||
}
|
||||
|
||||
// afterYear가 제공된 경우 COG URL 조회
|
||||
if (afterYear != null) {
|
||||
afterCogUrl =
|
||||
queryFactory
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.from(imageryEntity)
|
||||
.where(imageryEntity.scene5k.eq(mapSheetNum), imageryEntity.year.eq(afterYear))
|
||||
.fetchFirst();
|
||||
}
|
||||
|
||||
// 제공된 년도에 대해 하나도 찾지 못한 경우에만 예외 발생
|
||||
if ((beforeYear != null && beforeCogUrl == null)
|
||||
&& (afterYear != null && afterCogUrl == null)) {
|
||||
throw new RuntimeException(
|
||||
"COG images not found for mapSheetNum: "
|
||||
+ mapSheetNum
|
||||
+ ", years: "
|
||||
+ beforeYear
|
||||
+ ", "
|
||||
+ afterYear);
|
||||
+ (beforeYear != null ? beforeYear : "")
|
||||
+ (beforeYear != null && afterYear != null ? ", " : "")
|
||||
+ (afterYear != null ? afterYear : ""));
|
||||
}
|
||||
|
||||
return TrainingDataReviewDto.CogImageResponse.builder()
|
||||
@@ -821,9 +836,9 @@ public class TrainingDataReviewRepositoryImpl extends QuerydslRepositorySupport
|
||||
"Failed to get COG image URLs for mapSheetNum: "
|
||||
+ mapSheetNum
|
||||
+ ", years: "
|
||||
+ beforeYear
|
||||
+ ", "
|
||||
+ afterYear,
|
||||
+ (beforeYear != null ? beforeYear : "")
|
||||
+ (beforeYear != null && afterYear != null ? ", " : "")
|
||||
+ (afterYear != null ? afterYear : ""),
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -465,7 +465,9 @@ public class TrainingDataLabelApiController {
|
||||
return ApiResponseDto.okObject(trainingDataLabelService.saveNewPolygon(request));
|
||||
}
|
||||
|
||||
@Operation(summary = "COG 이미지 URL 조회", description = "변화 전/후 COG 이미지 URL을 함께 조회합니다")
|
||||
@Operation(
|
||||
summary = "COG 이미지 URL 조회",
|
||||
description = "변화 전/후 COG 이미지 URL을 조회합니다. beforeYear와 afterYear 중 최소 하나는 필수입니다.")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
@@ -476,6 +478,10 @@ public class TrainingDataLabelApiController {
|
||||
mediaType = "application/json",
|
||||
schema =
|
||||
@Schema(implementation = TrainingDataLabelDto.CogImageResponse.class))),
|
||||
@ApiResponse(
|
||||
responseCode = "400",
|
||||
description = "년도 파라미터가 하나도 제공되지 않음",
|
||||
content = @Content),
|
||||
@ApiResponse(responseCode = "404", description = "이미지를 찾을 수 없음", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@@ -483,9 +489,11 @@ public class TrainingDataLabelApiController {
|
||||
public ApiResponseDto<TrainingDataLabelDto.CogImageResponse> getCogImageUrl(
|
||||
@Parameter(description = "도엽번호", required = true, example = "35905086") @RequestParam
|
||||
String mapSheetNum,
|
||||
@Parameter(description = "변화 전 년도", required = true, example = "2023") @RequestParam
|
||||
@Parameter(description = "변화 전 년도", required = false, example = "2023")
|
||||
@RequestParam(required = false)
|
||||
Integer beforeYear,
|
||||
@Parameter(description = "변화 후 년도", required = true, example = "2024") @RequestParam
|
||||
@Parameter(description = "변화 후 년도", required = false, example = "2024")
|
||||
@RequestParam(required = false)
|
||||
Integer afterYear) {
|
||||
return ApiResponseDto.ok(
|
||||
trainingDataLabelService.getCogImageUrl(mapSheetNum, beforeYear, afterYear));
|
||||
|
||||
@@ -465,7 +465,9 @@ public class TrainingDataReviewApiController {
|
||||
return ApiResponseDto.okObject(trainingDataReviewService.saveNewPolygon(request));
|
||||
}
|
||||
|
||||
@Operation(summary = "COG 이미지 URL 조회", description = "변화 전/후 COG 이미지 URL을 함께 조회합니다")
|
||||
@Operation(
|
||||
summary = "COG 이미지 URL 조회",
|
||||
description = "변화 전/후 COG 이미지 URL을 조회합니다. beforeYear와 afterYear 중 최소 하나는 필수입니다.")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
@@ -476,6 +478,10 @@ public class TrainingDataReviewApiController {
|
||||
mediaType = "application/json",
|
||||
schema =
|
||||
@Schema(implementation = TrainingDataReviewDto.CogImageResponse.class))),
|
||||
@ApiResponse(
|
||||
responseCode = "400",
|
||||
description = "년도 파라미터가 하나도 제공되지 않음",
|
||||
content = @Content),
|
||||
@ApiResponse(responseCode = "404", description = "이미지를 찾을 수 없음", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@@ -483,9 +489,11 @@ public class TrainingDataReviewApiController {
|
||||
public ApiResponseDto<TrainingDataReviewDto.CogImageResponse> getCogImageUrl(
|
||||
@Parameter(description = "도엽번호", required = true, example = "35905086") @RequestParam
|
||||
String mapSheetNum,
|
||||
@Parameter(description = "변화 전 년도", required = true, example = "2023") @RequestParam
|
||||
@Parameter(description = "변화 전 년도", required = false, example = "2023")
|
||||
@RequestParam(required = false)
|
||||
Integer beforeYear,
|
||||
@Parameter(description = "변화 후 년도", required = true, example = "2024") @RequestParam
|
||||
@Parameter(description = "변화 후 년도", required = false, example = "2024")
|
||||
@RequestParam(required = false)
|
||||
Integer afterYear) {
|
||||
return ApiResponseDto.ok(
|
||||
trainingDataReviewService.getCogImageUrl(mapSheetNum, beforeYear, afterYear));
|
||||
|
||||
@@ -106,9 +106,9 @@ public class TrainingDataLabelService {
|
||||
* COG 이미지 URL 조회 (변화 전/후)
|
||||
*
|
||||
* @param mapSheetNum 도엽번호
|
||||
* @param beforeYear 변화 전 년도
|
||||
* @param afterYear 변화 후 년도
|
||||
* @return 변화 전/후 COG 이미지 URL
|
||||
* @param beforeYear 변화 전 년도 (선택적)
|
||||
* @param afterYear 변화 후 년도 (선택적)
|
||||
* @return 변화 전/후 COG 이미지 URL (최소 하나의 년도는 제공되어야 함)
|
||||
*/
|
||||
public TrainingDataLabelDto.CogImageResponse getCogImageUrl(
|
||||
String mapSheetNum, Integer beforeYear, Integer afterYear) {
|
||||
|
||||
@@ -108,9 +108,9 @@ public class TrainingDataReviewService {
|
||||
* COG 이미지 URL 조회 (변화 전/후)
|
||||
*
|
||||
* @param mapSheetNum 도엽번호
|
||||
* @param beforeYear 변화 전 년도
|
||||
* @param afterYear 변화 후 년도
|
||||
* @return 변화 전/후 COG 이미지 URL
|
||||
* @param beforeYear 변화 전 년도 (선택적)
|
||||
* @param afterYear 변화 후 년도 (선택적)
|
||||
* @return 변화 전/후 COG 이미지 URL (최소 하나의 년도는 제공되어야 함)
|
||||
*/
|
||||
public TrainingDataReviewDto.CogImageResponse getCogImageUrl(
|
||||
String mapSheetNum, Integer beforeYear, Integer afterYear) {
|
||||
|
||||
Reference in New Issue
Block a user