113 lines
4.3 KiB
Markdown
113 lines
4.3 KiB
Markdown
# 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 판별)
|
|
```
|