diff --git a/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java b/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java index 1395f42b..4e0f9373 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/LabelAllocateApiController.java @@ -85,6 +85,8 @@ public class LabelAllocateApiController { allowableValues = { "REMAINING_DESC", "REMAINING_ASC", + "COMPLETED_DESC", + "COMPLETED_ASC", "NAME_ASC", "NAME_DESC" }, diff --git a/src/main/java/com/kamco/cd/kamcoback/label/dto/WorkerStatsDto.java b/src/main/java/com/kamco/cd/kamcoback/label/dto/WorkerStatsDto.java index f879f0ee..e95dd346 100644 --- a/src/main/java/com/kamco/cd/kamcoback/label/dto/WorkerStatsDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/label/dto/WorkerStatsDto.java @@ -10,6 +10,27 @@ import lombok.Setter; public class WorkerStatsDto { + @Getter + @Setter + @Builder + @NoArgsConstructor + @AllArgsConstructor + @Schema(description = "프로젝트 기본 정보 (상단 표시용)") + public static class ProjectInfo { + + @Schema(description = "변화탐지년도 (예: 2026-2025)") + private String detectionYear; + + @Schema(description = "회차 (예: 8)") + private String round; + + @Schema(description = "국유인 반영일 (예: 2026-03-31)") + private String reflectionDate; + + @Schema(description = "작업 시작일 (예: 2026-04-06)") + private String startDate; + } + @Getter @Setter @Builder @@ -75,29 +96,74 @@ public class WorkerStatsDto { @Schema(description = "작업 진행 현황 정보") public static class WorkProgressInfo { + // === 라벨링 관련 === @Schema(description = "라벨링 진행률 (완료건+스킵건)/배정건") private Double labelingProgressRate; - @Schema(description = "작업 상태 (진행중/종료)") - private String workStatus; + @Schema(description = "라벨링 작업 상태 (진행중/완료)") + private String labelingStatus; - @Schema(description = "진행률 수치 (완료+스킵)") - private Long completedCount; + @Schema(description = "라벨링 전체 배정 건수") + private Long labelingTotalCount; - @Schema(description = "전체 배정 건수") - private Long totalAssignedCount; + @Schema(description = "라벨링 완료 건수 (LABEL_FIN + TEST_ING + DONE)") + private Long labelingCompletedCount; + + @Schema(description = "라벨링 스킵 건수 (SKIP)") + private Long labelingSkipCount; + + @Schema(description = "라벨링 남은 작업 건수") + private Long labelingRemainingCount; @Schema(description = "투입된 라벨러 수") private Long labelerCount; - @Schema(description = "남은 라벨링 작업 데이터 수") - private Long remainingLabelCount; + // === 검수(Inspection) 관련 (신규 추가) === + @Schema(description = "검수 진행률 (완료건/대상건)") + private Double inspectionProgressRate; + + @Schema(description = "검수 작업 상태 (진행중/완료)") + private String inspectionStatus; + + @Schema(description = "검수 전체 대상 건수") + private Long inspectionTotalCount; + + @Schema(description = "검수 완료 건수 (DONE)") + private Long inspectionCompletedCount; + + @Schema(description = "검수 제외 건수 (라벨링 스킵과 동일)") + private Long inspectionSkipCount; + + @Schema(description = "검수 남은 작업 건수") + private Long inspectionRemainingCount; @Schema(description = "투입된 검수자 수") private Long inspectorCount; - @Schema(description = "남은 검수 작업 데이터 수") + // === 레거시 호환 필드 (Deprecated) === + @Deprecated + @Schema(description = "[Deprecated] labelingProgressRate 사용 권장") + private Double progressRate; + + @Deprecated + @Schema(description = "[Deprecated] labelingTotalCount 사용 권장") + private Long totalAssignedCount; + + @Deprecated + @Schema(description = "[Deprecated] labelingCompletedCount 사용 권장") + private Long completedCount; + + @Deprecated + @Schema(description = "[Deprecated] labelingRemainingCount 사용 권장") + private Long remainingLabelCount; + + @Deprecated + @Schema(description = "[Deprecated] inspectionRemainingCount 사용 권장") private Long remainingInspectCount; + + @Deprecated + @Schema(description = "[Deprecated] labelingStatus/inspectionStatus 사용 권장") + private String workStatus; } @Getter @@ -108,6 +174,9 @@ public class WorkerStatsDto { @Schema(description = "작업자 목록 응답 (작업 정보 포함)") public static class WorkerListResponse { + @Schema(description = "프로젝트 기본 정보 (상단 표시용)") + private ProjectInfo projectInfo; + @Schema(description = "작업 진행 현황 정보") private WorkProgressInfo progressInfo; diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java index 6d973dad..d6ceeb0f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java @@ -268,6 +268,12 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto case "REMAINING_ASC": baseQuery.orderBy(remainingSum.asc()); break; + case "COMPLETED_DESC": + baseQuery.orderBy(completedSum.desc()); + break; + case "COMPLETED_ASC": + baseQuery.orderBy(completedSum.asc()); + break; case "NAME_ASC": baseQuery.orderBy(memberEntity.name.asc()); break;