Merge branch 'feat/dev_251201' of https://10.100.0.10:3210/dabeeo/kamco-dabeeo-backoffice into feat/dev_251201
# Conflicts: # src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java # src/main/java/com/kamco/cd/kamcoback/label/service/LabelAllocateService.java # src/main/java/com/kamco/cd/kamcoback/postgres/core/LabelAllocateCoreService.java # src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java
This commit is contained in:
@@ -5,7 +5,6 @@ import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
|
||||
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto;
|
||||
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.InferenceDetail;
|
||||
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelerDetail;
|
||||
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelingStatDto;
|
||||
import com.kamco.cd.kamcoback.label.dto.WorkerStatsDto.WorkerListResponse;
|
||||
import com.kamco.cd.kamcoback.label.service.LabelAllocateService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -19,7 +18,6 @@ import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@@ -38,118 +36,120 @@ public class LabelAllocateApiController {
|
||||
|
||||
@Operation(summary = "배정 가능한 사용자 목록 조회", description = "라벨링 작업 배정을 위한 활성 상태의 사용자 목록을 조회합니다.")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@GetMapping("/avail-user")
|
||||
public ApiResponseDto<List<LabelAllocateDto.UserList>> availUserList(
|
||||
@Parameter(
|
||||
description = "사용자 역할",
|
||||
example = "LABELER",
|
||||
schema = @Schema(allowableValues = {"LABELER", "REVIEWER"}))
|
||||
@RequestParam
|
||||
String role) {
|
||||
@Parameter(
|
||||
description = "사용자 역할",
|
||||
example = "LABELER",
|
||||
schema = @Schema(allowableValues = {"LABELER", "REVIEWER"}))
|
||||
@RequestParam
|
||||
String role) {
|
||||
return ApiResponseDto.ok(labelAllocateService.availUserList(role));
|
||||
}
|
||||
|
||||
@Operation(
|
||||
summary = "작업현황 관리 (라벨링, 검수 진행률 요약정보, 작업자 목록)",
|
||||
description = "작업현황 관리 (라벨링, 검수 진행률 요약정보, 작업자 목록)")
|
||||
summary = "작업현황 관리 (라벨링, 검수 진행률 요약정보, 작업자 목록)",
|
||||
description = "작업현황 관리 (라벨링, 검수 진행률 요약정보, 작업자 목록)")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "404", description = "데이터를 찾을 수 없음"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "404", description = "데이터를 찾을 수 없음"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@GetMapping("/admin/workers")
|
||||
public ApiResponseDto<WorkerListResponse> getWorkerStatistics(
|
||||
@Parameter(description = "분석 ID (선택)", example = "3") @RequestParam(required = false)
|
||||
Long analUid,
|
||||
@Parameter(
|
||||
description = "작업자 유형 (선택) - 미입력 시 LABELER로 조회",
|
||||
example = "LABELER",
|
||||
schema =
|
||||
@Schema(
|
||||
allowableValues = {"LABELER", "REVIEWER"},
|
||||
defaultValue = "LABELER"))
|
||||
@RequestParam(required = false)
|
||||
String type,
|
||||
@Parameter(description = "검색어 (작업자 이름 또는 사번으로 검색, 부분 일치)", example = "김라벨")
|
||||
@RequestParam(required = false)
|
||||
String search,
|
||||
@Parameter(
|
||||
description = "정렬 조건 (선택) - 미입력 시 이름 오름차순",
|
||||
example = "REMAINING_DESC",
|
||||
schema =
|
||||
@Schema(
|
||||
allowableValues = {
|
||||
"REMAINING_DESC",
|
||||
"REMAINING_ASC",
|
||||
"NAME_ASC",
|
||||
"NAME_DESC"
|
||||
},
|
||||
defaultValue = "NAME_ASC"))
|
||||
@RequestParam(required = false)
|
||||
String sort,
|
||||
@Parameter(description = "페이지 번호 (0부터 시작)", example = "0")
|
||||
@RequestParam(defaultValue = "0")
|
||||
Integer page,
|
||||
@Parameter(description = "페이지 크기", example = "20")
|
||||
@RequestParam(defaultValue = "20")
|
||||
Integer size) {
|
||||
// @Parameter(description = "분석 ID (선택)", example = "3") @RequestParam(required = false)
|
||||
// Long analUid,
|
||||
@Parameter(
|
||||
description = "작업자 유형 (선택) - 미입력 시 LABELER로 조회",
|
||||
example = "LABELER",
|
||||
schema =
|
||||
@Schema(
|
||||
allowableValues = {"LABELER", "REVIEWER"},
|
||||
defaultValue = "LABELER"))
|
||||
@RequestParam(required = false)
|
||||
String type,
|
||||
@Parameter(description = "검색어 (작업자 이름 또는 사번으로 검색, 부분 일치)", example = "김라벨")
|
||||
@RequestParam(required = false)
|
||||
String search,
|
||||
@Parameter(
|
||||
description = "정렬 조건 (선택) - 미입력 시 이름 오름차순",
|
||||
example = "REMAINING_DESC",
|
||||
schema =
|
||||
@Schema(
|
||||
allowableValues = {
|
||||
"REMAINING_DESC",
|
||||
"REMAINING_ASC",
|
||||
"COMPLETED_DESC",
|
||||
"COMPLETED_ASC",
|
||||
"NAME_ASC",
|
||||
"NAME_DESC"
|
||||
},
|
||||
defaultValue = "NAME_ASC"))
|
||||
@RequestParam(required = false)
|
||||
String sort,
|
||||
@Parameter(description = "페이지 번호 (0부터 시작)", example = "0")
|
||||
@RequestParam(defaultValue = "0")
|
||||
Integer page,
|
||||
@Parameter(description = "페이지 크기", example = "20")
|
||||
@RequestParam(defaultValue = "20")
|
||||
Integer size) {
|
||||
|
||||
// type이 null이면 기본값으로 LABELER 설정
|
||||
String workerType = (type == null || type.isEmpty()) ? RoleType.LABELER.name() : type;
|
||||
|
||||
return ApiResponseDto.ok(
|
||||
labelAllocateService.getWorkerStatistics(
|
||||
analUid, workerType, search, sort, page, size));
|
||||
labelAllocateService.getWorkerStatistics(
|
||||
null, workerType, search, sort, page, size));
|
||||
}
|
||||
|
||||
@Operation(summary = "라벨링작업 관리 > 작업 배정", description = "라벨링작업 관리 > 작업 배정")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
responseCode = "201",
|
||||
description = "등록 성공",
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = Long.class))),
|
||||
@ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content),
|
||||
@ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
value = {
|
||||
@ApiResponse(
|
||||
responseCode = "201",
|
||||
description = "등록 성공",
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = Long.class))),
|
||||
@ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content),
|
||||
@ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@PostMapping("/allocate")
|
||||
public ApiResponseDto<ApiResponseDto.ResponseObj> labelAllocate(
|
||||
@RequestBody @Valid LabelAllocateDto.AllocateDto dto) {
|
||||
@RequestBody @Valid LabelAllocateDto.AllocateDto dto) {
|
||||
|
||||
return ApiResponseDto.okObject(
|
||||
labelAllocateService.allocateAsc(
|
||||
dto.getStage(),
|
||||
dto.getLabelers(),
|
||||
dto.getInspectors(),
|
||||
dto.getCompareYyyy(),
|
||||
dto.getTargetYyyy()));
|
||||
labelAllocateService.allocateAsc(
|
||||
dto.getStage(),
|
||||
dto.getLabelers(),
|
||||
dto.getInspectors(),
|
||||
dto.getCompareYyyy(),
|
||||
dto.getTargetYyyy()));
|
||||
}
|
||||
|
||||
@Operation(summary = "작업현황 관리 > 변화탐지 회차 정보", description = "작업현황 관리 > 변화탐지 회차 정보")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "404", description = "데이터를 찾을 수 없음"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "404", description = "데이터를 찾을 수 없음"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@GetMapping("/stage-detail")
|
||||
public ApiResponseDto<InferenceDetail> findInferenceDetail(
|
||||
@Parameter(
|
||||
description = "회차 마스터 key",
|
||||
required = true,
|
||||
example = "8584e8d4-53b3-4582-bde2-28a81495a626")
|
||||
@RequestParam
|
||||
String uuid) {
|
||||
@Parameter(
|
||||
description = "회차 마스터 key",
|
||||
required = true,
|
||||
example = "8584e8d4-53b3-4582-bde2-28a81495a626")
|
||||
@RequestParam
|
||||
String uuid) {
|
||||
return ApiResponseDto.ok(labelAllocateService.findInferenceDetail(uuid));
|
||||
}
|
||||
|
||||
@@ -177,37 +177,37 @@ public class LabelAllocateApiController {
|
||||
|
||||
@Operation(summary = "작업현황 관리 > 상세 > 작업 이관", description = "작업현황 관리 > 상세 > 작업 이관")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
responseCode = "201",
|
||||
description = "등록 성공",
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = Long.class))),
|
||||
@ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content),
|
||||
@ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
value = {
|
||||
@ApiResponse(
|
||||
responseCode = "201",
|
||||
description = "등록 성공",
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = Long.class))),
|
||||
@ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content),
|
||||
@ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@PostMapping("/allocate-move")
|
||||
public ApiResponseDto<ApiResponseDto.ResponseObj> labelAllocateMove(
|
||||
@io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "라벨링 이관",
|
||||
required = true,
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = LabelAllocateDto.AllocateMoveDto.class)))
|
||||
@RequestBody
|
||||
LabelAllocateDto.AllocateMoveDto dto) {
|
||||
@io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||
description = "라벨링 이관",
|
||||
required = true,
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = LabelAllocateDto.AllocateMoveDto.class)))
|
||||
@RequestBody
|
||||
LabelAllocateDto.AllocateMoveDto dto) {
|
||||
|
||||
return ApiResponseDto.okObject(
|
||||
labelAllocateService.allocateMove(
|
||||
dto.getAutoType(),
|
||||
dto.getStage(),
|
||||
dto.getLabelers(),
|
||||
dto.getCompareYyyy(),
|
||||
dto.getTargetYyyy()));
|
||||
labelAllocateService.allocateMove(
|
||||
dto.getAutoType(),
|
||||
dto.getStage(),
|
||||
dto.getLabelers(),
|
||||
dto.getCompareYyyy(),
|
||||
dto.getTargetYyyy()));
|
||||
}
|
||||
|
||||
@Operation(
|
||||
|
||||
Reference in New Issue
Block a user