- **공통 로직 추가**
- **`Step 0`, `Step 1`**: `ComparisonOmServiceImpl` 및 `ComparisonServiceImpl`에 공통 API 호출 로직 추가.
- `step0Response`(차량번호), `step1Response`(차대번호) 생성 및 유효성 검증 로직 추가.
- 모든 Checker에서 해당 공통 데이터를 활용 가능하도록 수정.
- **체커 순서 변경 및 메서드 개선**
- [**미필**] 이첩 순서 변경: 기존 3번 → 2번으로 조정, 명의이전 확인 순서 조정.
- [**지연**] 이첩 순서 변경: 기존 6번 → 4번으로 조정.
- 기존 Checker 메서드에 공통화된 **`step0Response`, `step1Response`** 전달하도록 메서드 시그니처 업데이트.
- 중복된 API 호출 제거 및 공통 데이터 활용으로 효율성 증가.
- **불필요 로직 제거 및 코드 정리**
- 각 체커별 중복된 `Step 0`, `Step 1` API 호출 삭제.
- 공통 응답 데이터 재활용.
- 주석 보완 및 처리 흐름 가독성 강화.
- **DB 업데이트 관련 로직 명확화**
- `이첩` 관련 처리 코드(시군구명, 법정동명) 구현 방식 및 String 결과 형식 문서화.
- **기타**
- 문서 수정: `docs/자동차과태료_비교로직_정리-[미필/지연].md` 최종 수정일 업데이트.
- 체커 순서 변경에 따른 처리 로직 및 데이터 흐름도 재정리.
- **새로운 MariaDB 성능 최적화 가이드 작성**
- `docs/MariaDB 성능 최적화 가이드.md` 추가:
- 최적화 목적: 처리 시간 **14~15분 → 8~10분** 단축.
- MariaDB 설정(`my.cnf`) 및 애플리케이션 설정(`application-prd.yml`) 최적화 방안 제공.
- 주요 설정 내용:
- **Connection Pool**: 최대 풀 크기 40 → 35, 최소 유휴 커넥션 10 → 15로 변경.
- **MariaDB 배치 최적화**: `rewriteBatchedStatements`, `useServerPrepStmts` 활성화.
- **InnoDB 버퍼**: **3GB** 설정 (16GB 메모리 기준).
- **I/O 스레드 최적화**: 쓰기/읽기 스레드 수 각각 4개로 설정.
- 설정 백업/적용/롤백 방법 및 성능 모니터링 방법 자세히 설명.
- 참고로 추가 최적화(인덱스, SSD, 슬로우 쿼리) 전략 포함.
- **스레드 풀 크기 최적화**
- **I/O 작업 스레드 풀 크기 변경**:
- `CarFfnlgTrgtIncmpServiceImpl` 및 `CarFfnlgTrgtServiceImpl`:
- 4코어 환경 기준 스레드 풀 크기 **CPU 코어 수 × 4**로 변경(8 → 16).
- 메모리 안정성 및 병렬 처리 성능 최적화.
- **애플리케이션 Connection Pool 설정 수정**
- `application-prd.yml` 수정:
- 최대 풀 크기: **40 → 35** (스레드 풀 크기에 맞춰 조정).
- 최소 유휴 커넥션: **10 → 15**.
- Batch 성능 향상을 위해 MariaDB 배치 최적화 설정 추가:
- `rewriteBatchedStatements`, `useServerPrepStmts`, `cachePrepStmts`, `prepStmtCacheSize`, `prepStmtCacheSqlLimit`.
- **기타**
- 모든 설정이 안정성 최우선을 목표로 작성.
- 로직 최적화 및 설정 변경이 기존 환경에 미치는 영향을 최소화하기 위해 적용 방법 세부화.
- 문서 및 주석 보완으로 설정 이해도를 향상.
- **백업 가이드 추가**
- `docs/용인 장애인 서버에서 관리 방법.md`에 **MariaDB 데이터베이스 백업** 섹션(`6.`) 추가:
- 백업 디렉토리 생성 방법 명시.
- 백업 스크립트 작성 및 권한 부여 절차 설명.
- Crontab 설정을 통한 자동화 백업 방법(매일 밤 12시) 추가.
- **백업 스크립트 상세**
- 데이터베이스 백업 파일 생성 및 압축, 30일 지난 백업 파일 삭제를 포함한 스크립트 제공.
- 성공 및 실패 로그 기록 기능 포함.
- **관리 명령어 제공**
- 수동 백업 수행, 백업 파일 확인, 로그 조회, 복원 명령어 등 추가 명세.
- **기타**
- 백업 스크립트 실행 및 관리 명령어 내용을 문서에 명확하게 기록.
- MariaDB 관리와 백업 프로세스를 쉽게 이해할 수 있도록 섹션 및 내용 구성.
- **명의이전일자 ~ 검사일 계산 조건 보완**
- `명의이전일자 < 검사종료일` 조건을 추가하여 검사종료일에 따른 비교 로직 세분화.
- 검사일과 명의이전일자 간 기준 일수 비교 조건 명확화:
- 검사종료일 기준 조건 추가.
- 명의이전일자가 검사일 내 포함되는지 확인 로직 개선.
- **적용 대상**
- `OwnerCloseWithin31Checker`
- `OwnerLevyOver31Checker`
- `ProductCloseWithin31Checker`
- `ProductLevyOver31Checker`
- **로그 레벨 조정**
- `TransferOmChecker` 관련 `log.debug`를 `log.info`로 변경하여 로그 가시성 강화.
- **문서 업데이트**
- `자동차과태료_비교로직_정리-[지연].md`에 관련 변경사항 반영:
- 명의이전일자 비교 기준 및 로직 설명 수정.
- **기타**
- 중복 코드 제거 및 가독성을 위한 리팩토링.
- 검사일자의 파싱 처리 및 최신 명의이전일자 계산 로직 정리.
- **병렬 처리 도입**
- 대상 데이터 처리 작업을 병렬화하여 성능 최적화
- CPU 코어 수의 2배 스레드 풀 생성 및 `CompletableFuture` 활용
- **트랜잭션 단위 변경**
- 기존: 전체 트랜잭션으로 관리, 하나의 실패 시 전체 롤백
- 변경: 개별 대상별 트랜잭션 적용, 실패 데이터만 롤백
- **통계 및 로그 추가**
- 성공/실패, 유형별 처리 건수(상품용, 이첩, 정상 등) 통계 데이터 제공
- 병렬 처리 상태 및 작업 내역 로그 추가
- **기타**
- `TransactionTemplate` 도입 및 가독성을 위한 코드 리팩토링
- 문서 업데이트 (`자동차과태료_비교로직_정리-[미필].md`, `자동차과태료_비교로직_정리-[지연].md`)
- **소유자명 검증 보완**
- 소유자명은 null 또는 공백 입력도 가능하도록 로직 수정
- 길이 초과(75자) 제한만 유효하게 유지
- **특수문자 '*' 제거 처리 추가**
- 차량번호 및 일수(`daycnt`)에서 전출차량 및 재검여부를 나타내는 '*' 제거 후 검증
- `createLedgerRequest`, `createBasicRequest` 등 차량번호를 사용하는 API 호출 로직에 적용
- 숫자값 검증 및 비교 수행 시 특수문자 제거 처리 추가
- **차량번호 형식 검증 로직 보완**
- '*' 특수문자 포함 여부를 허용하도록 정규식 및 검증 프로세스 수정
- '*'만 포함된 경우는 유효하지 않도록 처리
- **Comparison 로직 수정**
- 비교 로직 시작 시 차량번호 및 일수에서 '*' 제거 기능 추가
- **샘플 데이터 수정**
- 샘플 데이터 파일 수정 (`docs/지연-샘플용-utf-8-1.txt`)
- 차량번호 및 일수에서 전출차량 및 재검여부를 나타내는 '*' 적용 예시 추가
- **기타**
- 가독성을 위한 주석 정리 및 로직 구조 개선
- **상품용(ProductUseOmChecker)**
- 부과일자 소유자가 상품용인 경우의 검증 로직 보완
- 명의이전(11) 레코드 조건에 `CHG_YMD <= 검사유효기간 종료일 + 31일` 추가
- **명의이전(OwnerTransferOmChecker)**
- 명의이전 검증 시 `CHG_YMD > 검사유효기간 종료일 + 31일` 로 변경
- **문서 업데이트**
- 비교로직 문서 (`자동차과태료_비교로직_정리-[미필].md`) 수정
- 주요 변경사항 및 로직 설명 수정
- **기타**
- 불필요 파일(CarFfnlgTrgtIncmpController.java.bak) 삭제
API 패키지 구조, Internal/External 패턴, 데이터 흐름 상세 설명
## 문서 내용
- API 패키지 전체 구조 및 각 구성요소 설명
- Strategy Pattern을 통한 Internal/External 모드 전환
- 각 모드별 상세 동작 원리 및 데이터 흐름
- 설정 가이드 및 사용 예제
- 트러블슈팅 및 성능 최적화 가이드
## 주요 섹션
1. 개요 및 설계 원칙
2. 패키지 구조 (디렉토리 트리)
3. 아키텍처 패턴 (Strategy, DI, 계층화)
4. Internal Mode 상세 (GPKI, 정부 API 연동)
5. External Mode 상세 (REST API 호출)
6. 공통 구성요소 (VO, Properties, Config)
7. 데이터 흐름 다이어그램
8. 설정 가이드 (개발/운영 환경)
9. 사용 예제 (Controller, Service)
10. 모드 전환 시나리오
11. 트러블슈팅
12. 성능 최적화
13. 보안 고려사항
14. 확장 가능성
## 파일 위치
docs/API_ARCHITECTURE.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>