# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 프로젝트 개요 `eapim-admin-kjb`는 광주은행(KJB) 전용 커스터마이징을 위한 eapim-admin 확장 모듈입니다. 빠른 부팅 속도를 위해 메인 eapim-admin 프로젝트에서 분리되어 독립적으로 테스트할 수 있습니다. ## 빌드 및 테스트 명령어 ```bash # 빌드 gradle build gradle clean build # 테스트 실행 (환경변수 필요) KJB_EAPIM_TEST_ENABLED=TRUE gradle :eapim-admin-kjb:test # 특정 테스트 클래스 실행 KJB_EAPIM_TEST_ENABLED=TRUE gradle :eapim-admin-kjb:test --tests "com.eactive.ext.kjb.ums.test.UmsTest.testSms" KJB_EAPIM_TEST_ENABLED=TRUE gradle :eapim-admin-kjb:test --tests "com.eactive.ext.kjb.ums.test.UmsTest.testEmail" # SafeDB 실제 모드로 테스트 (Linux 서버) KJB_EAPIM_TEST_ENABLED=TRUE gradle :eapim-admin-kjb:test -Psafedb ``` **테스트 실행 조건**: `KJB_EAPIM_TEST_ENABLED=TRUE` 환경변수가 설정되어야 UMS/이메일 테스트가 실행됩니다. ## 모듈 의존성 ``` eapim-admin-kjb ├── elink-portal-common # JPA 엔티티 (MessageRequest, MessageCode 등) └── kjb-safedb # 암호화 라이브러리 ``` 의존 모듈들은 `../elink-portal-common/`, `../kjb-safedb/` 경로에 위치합니다. ## 아키텍처 ### 주요 컴포넌트 | 컴포넌트 | 위치 | 설명 | |---------|------|------| | `KjbProperty` | `common/` | DB 테이블 `TSEAIRM24`에서 로드되는 설정 관리. `@KjbPropertyValue` 애노테이션으로 키 매핑 | | `KjbEaiBatchModule` | `eai/` | EAI 배치 시스템 HTTP 연동. 파일 기반 배치 전송 및 보관 기간 관리 | | `KjbUmsService` | `ums/` | UMS API를 통한 카카오 알림톡 발송 | | `KjbEmailSendModule` | `ums/` | EAI 배치를 통한 이메일 발송. 파일 생성 후 배치 호출 | | `KjbObpModule` | `obp/` | OBP(Open Banking Platform) API 연동 | ### 프로퍼티 키 목록 (`KjbProperty.java`) **EAI 배치 연동** - `kjb.eai.batch.url` - EAI 배치 서버 URL - `kjb.eai.batch.connection_timeout` - 연결 타임아웃 (초, 기본값: 5) - `kjb.eai.batch.response_timeout` - 응답 타임아웃 (초, 기본값: 5) - `kjb.eai.batch.charset` - 문자셋 (기본값: euc-kr) **이메일 발송 (EAI 배치 경유)** - `kjb.ums.eai_batch.send_dir` - 발송 파일 디렉토리 - `kjb.ums.eai_batch.backup_dir` - 백업 디렉토리 - `kjb.ums.eai_batch.error_dir` - 에러 디렉토리 - `kjb.ums.eai_batch.interface_id` - 인터페이스 ID (13자리) - `kjb.ums.eai_batch.retention_date` - 파일 보관 기간 (일, 기본값: 60) **UMS (카카오 알림톡)** - `kjb.ums.host` - UMS API 엔드포인트 - `kjb.ums.api_key` - API 인증 키 (36자리 UUID 형식) - `kjb.ums.connection_timeout` - 연결 타임아웃 (초, 기본값: 5) - `kjb.ums.response_timeout` - 응답 타임아웃 (초, 기본값: 5) **OBP 연동** - `kjb.obp.url` - OBP API URL - `kjb.obp.trust_system.key/value` - 신뢰 시스템 헤더 - `kjb.obp.partner_code.key/value` - 파트너 코드 헤더 ### 메시지 채널 - `KjbUmsService`: 카카오 알림톡 (`MessageCode.Channels.KAKAO_ALIMTALK`) - `KjbEmailSendModule`: 이메일 (`MessageCode.Channels.EMAIL`) ## 로컬 개발 환경 (Windows) 테스트 시 `OsUtil.isWindows()` 조건으로 로컬 경로가 자동 설정됩니다: - 발송 디렉토리: `c:\kjb-logs\sendmail\snd` - 백업 디렉토리: `c:\kjb-logs\sendmail\bak` - 에러 디렉토리: `c:\kjb-logs\sendmail\error` URL이 빈 문자열로 설정되면 실제 API 호출 없이 모의 응답을 반환합니다. ## 기술 스택 - **Java 8**: Gradle toolchain 강제 - **Spring Framework 5.3**: 의존성 주입 - **Apache HttpClient 5.1**: HTTP 통신 - **Gson 2.3.1**: JSON 처리 - **Lombok 1.18.28**: 보일러플레이트 코드 생성 - **JUnit 5**: 테스트 프레임워크 - **Logback 1.2.10**: 로깅 ## 패키지 구조 ``` com.eactive.ext.kjb ├── common/ # 공통 (KjbProperty, 예외 클래스) ├── eai/ # EAI 배치 연동 ├── obp/ # OBP API 연동 │ └── common/ # OBP HTTP 클라이언트 ├── ums/ # UMS/이메일 발송 │ └── gson/ # UMS 요청/응답 JSON 모델 └── utils/ # 유틸리티 (JSON, 검증, OS 판별) ```