From 5eab38e1ea5807686cd46a037e4c5549ebf7fe99 Mon Sep 17 00:00:00 2001 From: teddy Date: Mon, 5 Jan 2026 10:04:57 +0900 Subject: [PATCH] =?UTF-8?q?=ED=95=99=EC=8A=B5=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../label/LabelWorkerApiController.java | 48 ++++-- .../entity/MapSheetAnalInferenceEntity.java | 148 ++++++++++++++++++ 2 files changed, 180 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalInferenceEntity.java diff --git a/src/main/java/com/kamco/cd/kamcoback/label/LabelWorkerApiController.java b/src/main/java/com/kamco/cd/kamcoback/label/LabelWorkerApiController.java index 416f7738..5ca52652 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/LabelWorkerApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/LabelWorkerApiController.java @@ -4,20 +4,21 @@ import com.kamco.cd.kamcoback.code.dto.CommonCodeDto; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.label.dto.LabelWorkDto; import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelWorkMng; +import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelWorkMngSearchReq; import com.kamco.cd.kamcoback.label.service.LabelWorkService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @Slf4j @@ -31,20 +32,35 @@ public class LabelWorkerApiController { @Operation(summary = "라벨링작업 관리 > 목록 조회", description = "라벨링작업 관리 > 목록 조회") @ApiResponses( - value = { - @ApiResponse( - responseCode = "200", - description = "조회 성공", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = CommonCodeDto.Basic.class))), - @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), - @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) - }) - @PostMapping("/label-work-mng-list") + value = { + @ApiResponse( + responseCode = "200", + description = "조회 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = CommonCodeDto.Basic.class))), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @GetMapping("/label-work-mng-list") public ApiResponseDto> labelWorkMngList( - @RequestBody @Valid LabelWorkDto.LabelWorkMngSearchReq searchReq) { + @Schema(description = "변화탐지년도", example = "2024") + Integer detectYyyy, + @Schema(description = "시작일", example = "20260101") + String strtDttm, + @Schema(description = "종료일", example = "20261201") + String endDttm, + @Parameter(description = "페이지 번호 (0부터 시작)", example = "0") @RequestParam(defaultValue = "0") + int page, + @Parameter(description = "페이지 크기", example = "20") @RequestParam(defaultValue = "20") + int size) { + LabelWorkDto.LabelWorkMngSearchReq searchReq = new LabelWorkMngSearchReq(); + searchReq.setDetectYyyy(detectYyyy); + searchReq.setStrtDttm(strtDttm); + searchReq.setEndDttm(endDttm); + searchReq.setPage(page); + searchReq.setSize(size); return ApiResponseDto.ok(labelWorkService.labelWorkMngList(searchReq)); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalInferenceEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalInferenceEntity.java new file mode 100644 index 00000000..5a68209e --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalInferenceEntity.java @@ -0,0 +1,148 @@ +package com.kamco.cd.kamcoback.postgres.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.validation.constraints.Size; +import java.time.ZonedDateTime; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.type.SqlTypes; + +@Getter +@Setter +@Entity +@Table(name = "tb_map_sheet_anal_inference") +public class MapSheetAnalInferenceEntity { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tb_map_sheet_anal_inference_id_gen") + @SequenceGenerator(name = "tb_map_sheet_anal_inference_id_gen", sequenceName = "tb_map_sheet_anal_inference_uid", allocationSize = 1) + @Column(name = "anal_uid", nullable = false) + private Long id; + + @Column(name = "compare_yyyy") + private Integer compareYyyy; + + @Column(name = "target_yyyy") + private Integer targetYyyy; + + @Column(name = "model_uid") + private Long modelUid; + + @Size(max = 100) + @Column(name = "server_ids", length = 100) + private String serverIds; + + @Column(name = "anal_strt_dttm") + private ZonedDateTime analStrtDttm; + + @Column(name = "anal_end_dttm") + private ZonedDateTime analEndDttm; + + @Column(name = "anal_sec") + private Long analSec; + + @Size(max = 20) + @Column(name = "anal_state", length = 20) + private String analState; + + @Size(max = 20) + @Column(name = "gukyuin_used", length = 20) + private String gukyuinUsed; + + @Column(name = "accuracy") + private Double accuracy; + + @Size(max = 255) + @Column(name = "result_url") + private String resultUrl; + + @ColumnDefault("now()") + @Column(name = "created_dttm") + private ZonedDateTime createdDttm; + + @Column(name = "created_uid") + private Long createdUid; + + @ColumnDefault("now()") + @Column(name = "updated_dttm") + private ZonedDateTime updatedDttm; + + @Column(name = "updated_uid") + private Long updatedUid; + + @Size(max = 255) + @Column(name = "anal_title") + private String analTitle; + + @Column(name = "detecting_cnt") + private Long detectingCnt; + + @Column(name = "anal_pred_sec") + private Long analPredSec; + + @Column(name = "model_ver_uid") + private Long modelVerUid; + + @Column(name = "hyper_params") + @JdbcTypeCode(SqlTypes.JSON) + private Map hyperParams; + + @Column(name = "tranning_rate") + private List tranningRate; + + @Column(name = "validation_rate") + private List validationRate; + + @Column(name = "test_rate", length = Integer.MAX_VALUE) + private String testRate; + + @Size(max = 128) + @Column(name = "detecting_description", length = 128) + private String detectingDescription; + + @Size(max = 12) + @Column(name = "base_map_sheet_num", length = 12) + private String baseMapSheetNum; + + @ColumnDefault("gen_random_uuid()") + @Column(name = "uuid") + private UUID uuid; + + @Size(max = 50) + @Column(name = "model_m1_ver", length = 50) + private String modelM1Ver; + + @Size(max = 50) + @Column(name = "model_m2_ver", length = 50) + private String modelM2Ver; + + @Size(max = 50) + @Column(name = "model_m3_ver", length = 50) + private String modelM3Ver; + + @Size(max = 20) + @Column(name = "anal_target_type", length = 20) + private String analTargetType; + + @Column(name = "gukyuin_apply_dttm") + private ZonedDateTime gukyuinApplyDttm; + + @Size(max = 20) + @Column(name = "detection_data_option", length = 20) + private String detectionDataOption; + + @Column(name = "stage") + private Integer stage; + +}