Compare commits
2 Commits
c3af9f8ed1
...
6ae3eddab4
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ae3eddab4 | |||
| 501cdfe53c |
@@ -45,9 +45,8 @@ exportGeoJsonJob (Parent Job)
|
||||
```
|
||||
|
||||
**실행 조건:**
|
||||
- `tb_map_sheet_anal_inference` 테이블의 `anal_state = 'ING'` (진행 중)
|
||||
- 검수 완료(`COMPLETE`) 건수가 1개 이상 존재
|
||||
- `all_cnt != file_cnt` (아직 파일 생성이 완료되지 않은 경우)
|
||||
- `tb_map_sheet_anal_inference.anal_state = 'ING'` 이고 검수 완료(`COMPLETE`) 건수가 1개 이상인 건
|
||||
- 또는 `tb_map_sheet_anal_inference.anal_state = 'FINISH'` 이면서 `batch_step_history` 에서 `step_name = 'zipResponseStep'`, `status = 'SUCCESS'` 인 마지막 ZIP 완료 시각보다 더 늦게 검수 완료(`COMPLETE`) 된 건이 있는 건
|
||||
|
||||
---
|
||||
|
||||
@@ -179,7 +178,7 @@ CREATE TABLE public.batch_step_history (
|
||||
**처리 과정:**
|
||||
1. `findCompletedAnalMapSheetList()`: 검수 완료된 도엽 목록 조회
|
||||
2. 각 도엽별로:
|
||||
- `findCompletedYesterdayLabelingList()`: 어제까지 검수 완료된 데이터 조회
|
||||
- `findCompletedYesterdayLabelingList()`: 배치 실행일 0시 이전까지 검수 완료된 데이터 조회
|
||||
- GeoJSON Feature 생성
|
||||
- `/dataset/request/{resultUid}/{filename}.geojson` 저장
|
||||
- `updateLearnDataGeomFileCreateYn()`: DB에 파일 생성 완료 플래그 업데이트
|
||||
|
||||
@@ -100,8 +100,8 @@ public class LaunchChildJobsTasklet implements Tasklet {
|
||||
log.info("========================================");
|
||||
|
||||
// Step 1: 진행 중인 분석 회차 목록 조회
|
||||
log.info("[Step 1/3] 진행 중인 분석 회차 목록 조회 중...");
|
||||
log.info(" - 조회 조건: anal_state='ING' AND complete_cnt > 0");
|
||||
log.info("[Step 1/3] 처리 대상 분석 회차 목록 조회 중...");
|
||||
log.info(" - 조회 조건: anal_state='ING' 이거나, FINISH 상태에서 마지막 ZIP 완료 이후 새 COMPLETE 발생");
|
||||
|
||||
List<AnalCntInfo> analList = repository.findAnalCntInfoList();
|
||||
|
||||
|
||||
@@ -23,6 +23,16 @@ public class TrainingDataReviewJobRepository {
|
||||
public List<AnalCntInfo> findAnalCntInfoList() {
|
||||
String sql =
|
||||
"""
|
||||
WITH latest_zip_history AS (
|
||||
SELECT
|
||||
anal_uid,
|
||||
result_uid,
|
||||
MAX(completed_dttm) AS zip_completed_dttm
|
||||
FROM public.batch_step_history
|
||||
WHERE step_name = 'zipResponseStep'
|
||||
AND status = 'SUCCESS'
|
||||
GROUP BY anal_uid, result_uid
|
||||
)
|
||||
SELECT
|
||||
la.anal_uid,
|
||||
msl.uid AS result_uid,
|
||||
@@ -30,11 +40,21 @@ public class TrainingDataReviewJobRepository {
|
||||
SUM(CASE WHEN la.inspect_state = 'COMPLETE' THEN 1 ELSE 0 END) AS complete_cnt,
|
||||
SUM(CASE WHEN mslg.file_create_yn = true THEN 1 ELSE 0 END) AS file_cnt
|
||||
FROM tb_labeling_assignment la
|
||||
INNER JOIN tb_map_sheet_anal_inference msai ON la.anal_uid = msai.anal_uid AND msai.anal_state = 'ING'
|
||||
INNER JOIN tb_map_sheet_anal_inference msai ON la.anal_uid = msai.anal_uid
|
||||
LEFT JOIN tb_map_sheet_learn msl ON msai.learn_id = msl.id
|
||||
LEFT JOIN latest_zip_history lzh
|
||||
ON lzh.anal_uid = la.anal_uid
|
||||
AND lzh.result_uid = msl.uid
|
||||
LEFT JOIN tb_map_sheet_learn_data_geom mslg ON la.inference_geom_uid = mslg.geo_uid
|
||||
GROUP BY la.anal_uid, msl.uid
|
||||
WHERE msai.anal_state = 'ING'
|
||||
OR (msai.anal_state = 'FINISH' AND lzh.zip_completed_dttm IS NOT NULL)
|
||||
GROUP BY la.anal_uid, msl.uid, msai.anal_state, lzh.zip_completed_dttm
|
||||
HAVING SUM(CASE WHEN la.inspect_state = 'COMPLETE' THEN 1 ELSE 0 END) > 0
|
||||
AND (
|
||||
msai.anal_state = 'ING'
|
||||
OR MAX(CASE WHEN la.inspect_state = 'COMPLETE' THEN la.inspect_stat_dttm END)
|
||||
> lzh.zip_completed_dttm
|
||||
)
|
||||
""";
|
||||
return jdbcTemplate.query(
|
||||
sql,
|
||||
@@ -124,4 +144,4 @@ public class TrainingDataReviewJobRepository {
|
||||
+ ")";
|
||||
jdbcTemplate.update(sql, geoUids.toArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user