라벨링 상세정보, 요약정보(Daniel), 저장(Gina)

This commit is contained in:
2026-01-12 14:36:08 +09:00
parent 3d612f75d7
commit fd7ec9ea9c
7 changed files with 775 additions and 9 deletions

View File

@@ -1,12 +1,21 @@
package com.kamco.cd.kamcoback.trainingdata.service;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto.ApiResponseCode;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto.ResponseObj;
import com.kamco.cd.kamcoback.postgres.core.TrainingDataLabelCoreService;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.DetailRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.GeoFeatureRequest;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingGeometryInfo;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.LabelingListDto;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.SummaryRes;
import com.kamco.cd.kamcoback.trainingdata.dto.TrainingDataLabelDto.searchReq;
import jakarta.transaction.Transactional;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class TrainingDataLabelService {
@@ -24,4 +33,54 @@ public class TrainingDataLabelService {
public LabelingGeometryInfo findLabelingAssignedGeom(String assignmentUid) {
return trainingDataLabelCoreService.findLabelingAssignedGeom(assignmentUid);
}
@Transactional
public ResponseObj saveLabelingFeature(GeoFeatureRequest request) {
String status = "";
String assignmentUid = request.getAssignmentUid();
Long inferenceGeomUid =
trainingDataLabelCoreService.findLabelingAssignmentGeoUid(assignmentUid);
if (request.getGeometry() == null || request.getGeometry().isEmpty()) {
// SKIP 상태만 업데이트
status = "SKIP";
trainingDataLabelCoreService.updateLabelingStateAssignment(assignmentUid, status);
trainingDataLabelCoreService.updateLabelingSkipState(inferenceGeomUid, status);
} else {
status = "DONE";
trainingDataLabelCoreService.updateLabelingStateAssignment(assignmentUid, status);
trainingDataLabelCoreService.updateLabelingPolygonClass(
inferenceGeomUid, request.getGeometry(), request.getProperties(), status);
}
return new ResponseObj(ApiResponseCode.OK, "저장되었습니다.");
}
/**
* 라벨러별 작업 통계 조회
*
* @param userId 라벨러 사번
* @return 전체/미작업/Today 건수
*/
public SummaryRes getSummary(String userId) {
try {
System.out.println("[Service] getSummary called with userId: " + userId);
SummaryRes result = trainingDataLabelCoreService.getSummary(userId);
System.out.println("[Service] getSummary result: " + result);
return result;
} catch (Exception e) {
System.err.println("[Service] getSummary ERROR: " + e.getMessage());
e.printStackTrace();
// 예외 발생 시에도 빈 통계 반환
return SummaryRes.builder().totalCnt(0L).undoneCnt(0L).todayCnt(0L).build();
}
}
/**
* 작업 배정 상세 정보 조회
*
* @param assignmentUid 작업 배정 ID
* @return 변화탐지정보 + 실태조사결과정보
*/
public DetailRes getDetail(UUID assignmentUid) {
return trainingDataLabelCoreService.getDetail(assignmentUid);
}
}