Skip to content

Conversation

@KwonSeRim2
Copy link
Collaborator

🔖 PR 유형

  • ✨ 기능 추가
  • 🐛 버그 수정
  • ♻️ 리팩토링
  • 🧪 테스트 코드 추가
  • 📄 문서 수정
  • 기타

📌 개요

SA 절세 계산 로직을 스프링 배치로 구현하고, 실행 중 발생한 ExecutorType 충돌 및 트랜잭션 관련 오류들을 해결하여 전체 배치 작업을 안정적으로 완성했습니다.

🔧 작업 내용

  1. 배치 Job/Step 구성
  • isaTaxSavingJob 생성
  • isaTaxSavingStep 등록 (Chunk 기반: Reader → Processor → Writer)
  1. Reader 구현
  • 사용자별 ISA 상품 수익 조회 로직 작성
  • selectIsaProductProfitByMember 쿼리에서 GROUP BY 오류 수정 (only_full_group_by 대응)
  1. Processor 구현
  • 일반 과세 계산 및 절세 금액 계산 로직 구현
  • DateUtils.getCurrentQuarter() 로 현재 분기 계산
  1. Writer 구현
  • isa_tax_saving_history 테이블에 INSERT ... ON DUPLICATE KEY UPDATE 방식으로 적재
  • 사용자별 + 분기별 복합 유니크 제약조건 (member_id + quarter) 적용 확인
  1. Scheduler 설정
  • @scheduled 로 주기적 실행 처리
  • JobLauncher에 SimpleAsyncTaskExecutor 설정해 중복 실행 방지 (JobInstanceAlreadyCompleteException 해결)
  1. 주요 오류 해결 내역
  • SqlSessionTemplate의 기본 ExecutorType.SIMPLE과 BATCH 혼용 충돌 해결
  • MySQL only_full_group_by 모드에서 발생하는 GROUP BY 오류 수정
  • 중복 Job 실행 방지를 위한 JobParameters 동적 생성 적용 (timestamp 포함)

✅ 체크리스트

  • 배치 작업 정상 실행됨
  • 로그로 각 사용자별 절세 결과 출력 확인
  • DB isa_tax_saving_history 테이블에 정상 적재 확인 (중복 없이 갱신 처리)

📝 기타 참고 사항

  • 중복 Job 실행 문제 여전히 존재

📎 관련 이슈

Close #11

@KwonSeRim2 KwonSeRim2 self-assigned this Aug 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] - ISA 계좌 절세 내역 분기별 배치 처리

2 participants