feat(recollection): 자동 재수집 및 재수집 프로세스 전면 개선 (#30) #31

병합
HYOJIN feature/ISSUE-30-auto-retry-failed-records 에서 develop 로 2 commits 를 머지했습니다 2026-03-10 17:30:06 +09:00
소유자

변경 사항

Backend

  • 자동 재수집 리스너(AutoRetryJobExecutionListener) 및 비동기 트리거 서비스(AutoRetryTriggerService) 추가
  • 실패 레코드 최대 재시도 횟수(3회) 제한으로 무한 루프 방지
  • 전용 스레드 풀(autoRetryExecutor) 분리 (apiLogExecutor와 독립)
  • last_success_date 복원 시 경합 조건 보호 (정상 수집 발생 시 복원 스킵)
  • 재수집 이력 N+1 쿼리 해결 (findByStepExecutionIdIn 벌크 조회)
  • 실패 레코드 일괄 RESOLVED 처리 API 추가 (POST /failed-records/resolve)
  • 재수집 이력 CSV 내보내기 API 추가 (GET /recollection-histories/export, UTF-8 BOM)
  • JPA Auditing + 수동 타임스탬프 하이브리드 방식 적용 (REQUIRES_NEW 호환)
  • overlap 쿼리 null 날짜 안전 처리

Frontend

  • 공유 컴포넌트 추출 (DetailStatCard, CopyButton, ApiLogSection, InfoItem)
  • 대시보드 재수집 통계 위젯 추가
  • 재수집 이력 CSV 내보내기 버튼 추가
  • 실행 이력 미해결 건수 COMPLETED 상태만 표시
  • 실패 레코드 일괄 RESOLVED 처리 버튼 추가
  • 폴링 최적화 (3개 → 2개 병합)

Docs

  • 재수집 프로세스 전체 분석 문서 추가 (docs/recollection-process.md)

관련 이슈

테스트

  • 빌드 성공 확인
  • TC-01: 일반 수집 → 실패 건 자동 재수집 트리거
  • TC-02: 재수집 모드에서 자동 재수집 미트리거 (무한 루프 방지)
  • TC-03: 최대 재시도 횟수 초과 건 제외
  • TC-04: UI 수동 재수집 정상 동작
  • TC-05: CSV 내보내기 정상 동작
## 변경 사항 ### Backend - 자동 재수집 리스너(AutoRetryJobExecutionListener) 및 비동기 트리거 서비스(AutoRetryTriggerService) 추가 - 실패 레코드 최대 재시도 횟수(3회) 제한으로 무한 루프 방지 - 전용 스레드 풀(autoRetryExecutor) 분리 (apiLogExecutor와 독립) - last_success_date 복원 시 경합 조건 보호 (정상 수집 발생 시 복원 스킵) - 재수집 이력 N+1 쿼리 해결 (findByStepExecutionIdIn 벌크 조회) - 실패 레코드 일괄 RESOLVED 처리 API 추가 (POST /failed-records/resolve) - 재수집 이력 CSV 내보내기 API 추가 (GET /recollection-histories/export, UTF-8 BOM) - JPA Auditing + 수동 타임스탬프 하이브리드 방식 적용 (REQUIRES_NEW 호환) - overlap 쿼리 null 날짜 안전 처리 ### Frontend - 공유 컴포넌트 추출 (DetailStatCard, CopyButton, ApiLogSection, InfoItem) - 대시보드 재수집 통계 위젯 추가 - 재수집 이력 CSV 내보내기 버튼 추가 - 실행 이력 미해결 건수 COMPLETED 상태만 표시 - 실패 레코드 일괄 RESOLVED 처리 버튼 추가 - 폴링 최적화 (3개 → 2개 병합) ### Docs - 재수집 프로세스 전체 분석 문서 추가 (docs/recollection-process.md) ## 관련 이슈 - closes #30 ## 테스트 - [x] 빌드 성공 확인 - [x] TC-01: 일반 수집 → 실패 건 자동 재수집 트리거 - [x] TC-02: 재수집 모드에서 자동 재수집 미트리거 (무한 루프 방지) - [x] TC-03: 최대 재시도 횟수 초과 건 제외 - [x] TC-04: UI 수동 재수집 정상 동작 - [x] TC-05: CSV 내보내기 정상 동작
HYOJIN added 2 commits 2026-03-10 17:29:38 +09:00
- 자동 재수집 리스너(AutoRetryJobExecutionListener) 및 비동기 트리거 서비스 추가
- 실패 레코드 최대 재시도 횟수(3회) 제한으로 무한 루프 방지
- 전용 스레드 풀(autoRetryExecutor) 분리
- last_success_date 복원 시 경합 조건 보호
- 재수집 이력 N+1 쿼리 해결 (벌크 조회)
- 실패 레코드 일괄 RESOLVED 처리 API 추가
- 재수집 이력 CSV 내보내기 API 추가 (UTF-8 BOM)
- 프론트엔드 공유 컴포넌트 추출 (StatCard, CopyButton, ApiLogSection, InfoItem)
- 대시보드 재수집 통계 위젯 추가
- 실행 이력 미해결 건수 COMPLETED 상태만 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
claude-bot 이 변경사항을 승인하였습니다. 2026-03-10 17:30:05 +09:00
claude-bot left a comment
멤버

MR 승인 (via /mr skill)

MR 승인 (via /mr skill)
HYOJIN merged commit fb48771bd6 into develop 2026-03-10 17:30:06 +09:00
HYOJIN 삭제된 브랜치 feature/ISSUE-30-auto-retry-failed-records 2026-03-10 17:30:06 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

마감일이 설정되지 않았습니다.

의존성

No dependencies set.

Reference: gc/snp-batch-validation#31
No description provided.