review-to-geojson 로그작성,prod수정, spotless

This commit is contained in:
2026-03-02 21:01:14 +09:00
parent 2ea6a62730
commit a9d9aa746f
19 changed files with 71 additions and 51 deletions

View File

@@ -15,7 +15,6 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Log4j2
@@ -36,8 +35,8 @@ public class TrainingDataLabelJobService {
public void runTask() {
// 프록시를 통해 호출해야 @Transactional이 적용됨
applicationContext
.getBean(TrainingDataLabelJobService.class)
.assignReviewerYesterdayLabelComplete(null);
.getBean(TrainingDataLabelJobService.class)
.assignReviewerYesterdayLabelComplete(null);
}
@Transactional
@@ -48,7 +47,7 @@ public class TrainingDataLabelJobService {
log.info("=== baseDate : {}", baseDate);
log.info("=== baseDate 있으면 해당 일자, 없으면 어제일자로 조회");
List<Tasks> tasks =
trainingDataLabelJobCoreService.findCompletedYesterdayUnassigned(baseDate);
trainingDataLabelJobCoreService.findCompletedYesterdayUnassigned(baseDate);
log.info("[Step 1-2] 목록 객체 건수 count : {}", tasks == null ? 0 : tasks.size());
if (tasks.isEmpty()) {
@@ -59,7 +58,7 @@ public class TrainingDataLabelJobService {
// 회차별로 그룹핑
log.info("[Step 2-1] 회차별로 그룹핑 시작");
Map<Long, List<Tasks>> taskByRound =
tasks.stream().collect(Collectors.groupingBy(Tasks::getAnalUid));
tasks.stream().collect(Collectors.groupingBy(Tasks::getAnalUid));
// 회차별 분배
log.info("[Step 3-1] 회차별로 분배 시작");
@@ -71,7 +70,7 @@ public class TrainingDataLabelJobService {
log.info("[Step 3-2] 수행하는 회차 analUid: {}", analUid);
log.info("해당 회차에 라벨링 할당받은 검수자별 완료 건수 count(), 완료한 게 적은 순으로 해야 일이 한 사람에게 몰리지 않음");
List<InspectorPendingDto> pendings =
trainingDataLabelJobCoreService.findInspectorPendingByRound(analUid);
trainingDataLabelJobCoreService.findInspectorPendingByRound(analUid);
log.info("검수자 수: {}", pendings == null ? 0 : pendings.size());
if (pendings.isEmpty()) {
@@ -81,7 +80,7 @@ public class TrainingDataLabelJobService {
log.info("[Step 4-1] 검수자 사번 List 생성");
List<String> reviewerIds =
pendings.stream().map(InspectorPendingDto::getInspectorUid).toList();
pendings.stream().map(InspectorPendingDto::getInspectorUid).toList();
// Lock 걸릴 수 있기 때문에 엔티티 조회하는 Repository 에서 구현
log.info("[Step 4-2] 검수자 테이블 lock 걸리지 않게 처리");
@@ -95,23 +94,23 @@ public class TrainingDataLabelJobService {
// reviewer별 batch update
log.info("[Step 5-3] 검수자별 할당 데이터를 batch update 시작");
assignMap.forEach(
(reviewerId, assignedTasks) -> {
if (assignedTasks.isEmpty()) {
log.info("[Step 5-4] 할당된 데이터 없으면 return");
return;
}
(reviewerId, assignedTasks) -> {
if (assignedTasks.isEmpty()) {
log.info("[Step 5-4] 할당된 데이터 없으면 return");
return;
}
List<UUID> assignmentUids =
assignedTasks.stream().map(Tasks::getAssignmentUid).toList();
log.info("[Step 6-1] 할당 작업에 검수자 아이디 update");
log.info("==== 검수자 사번: {}", reviewerId);
log.info("==== 할당 갯수: {}", assignmentUids == null ? 0 : assignmentUids.size());
trainingDataLabelJobCoreService.assignReviewerBatch(assignmentUids, reviewerId);
List<UUID> assignmentUids =
assignedTasks.stream().map(Tasks::getAssignmentUid).toList();
log.info("[Step 6-1] 할당 작업에 검수자 아이디 update");
log.info("==== 검수자 사번: {}", reviewerId);
log.info("==== 할당 갯수: {}", assignmentUids == null ? 0 : assignmentUids.size());
trainingDataLabelJobCoreService.assignReviewerBatch(assignmentUids, reviewerId);
log.info("[Step 7-1] geom 테이블에 검수 상태 update");
List<Long> geomUids = assignedTasks.stream().map(Tasks::getInferenceUid).toList();
trainingDataLabelJobCoreService.updateGeomUidTestState(geomUids);
});
log.info("[Step 7-1] geom 테이블에 검수 상태 update");
List<Long> geomUids = assignedTasks.stream().map(Tasks::getInferenceUid).toList();
trainingDataLabelJobCoreService.updateGeomUidTestState(geomUids);
});
}
} catch (Exception e) {
log.error("배치 처리 중 예외", e);
@@ -120,7 +119,7 @@ public class TrainingDataLabelJobService {
}
private Map<String, List<Tasks>> distributeByLeastPending(
List<Tasks> tasks, List<String> reviewerIds) {
List<Tasks> tasks, List<String> reviewerIds) {
Map<String, List<Tasks>> result = new LinkedHashMap<>();
// 순서 유지 중요 (ASC 정렬된 상태)