Files

140 lines
3.8 KiB
Plaintext

# Cursor Rules for EAPIM Portal
> 이 파일은 CLAUDE.md를 기반으로 합니다. 내용 수정 시 CLAUDE.md와 동기화해주세요.
## 프로젝트 개요
광주은행 EAPIM Portal - 엔터프라이즈 API 포털 관리 시스템
- Spring Boot 2.7.18, Java 8, Gradle 7.x
- Oracle 12c 이중 데이터베이스 (EMS, Gateway)
- Spring Security, JPA/Hibernate, MapStruct, Lombok
## 빌드 & 실행
```bash
# gradlew 사용 금지 - offline gradle 사용
gradle bootRun # 개발 환경 실행
gradle bootWar # 실행 가능 WAR
gradle war # 서버용 WAR (JEUS/WebLogic)
gradle test # 테스트
```
## 아키텍처 핵심
### 외부 모듈 의존성
- elink-online-core-jpa: Gateway 데이터 모델
- elink-portal-common: 공통 유틸리티
- kjb-safedb: SafeDB 암호화 라이브러리
### 패키지 구조 (기능 모듈 방식)
```
apps/
├── user/ # 사용자 관리
├── app/ # API 키 관리
├── approval/ # 승인 워크플로우
├── apis/ # API 카탈로그
├── proxy/ # API 테스트 프록시
└── ...
```
각 모듈: controller/ service/ repository/ dto/ mapper/
### 이중 DB
- EMS (Portal): jdbc/dsOBP_EMS, com.eactive.apim.portal.apps.*
- Gateway: jdbc/dsOBP_AGW, com.eactive.eai.data.entity.onl.*
- Atomikos JTA로 분산 트랜잭션
### 프로파일
- dev: 개발 (192.168.240.177:1599, SQL 로깅)
- stage: 스테이징 (JNDI, proxy to inter-dapiwas01)
- prod: 운영 (JNDI, proxy to inter-apiwas00, 캐싱)
## 개발 패턴
### 새 기능 모듈
1. apps/ 하위에 패키지 생성
2. controller/, service/, repository/, dto/, mapper/ 구조
3. Entity는 AbstractAuditingEntity 확장
4. DTO는 Lombok @Data
5. Mapper는 MapStruct
6. Service는 @Transactional
7. Thymeleaf 템플릿 추가
8. application.yml의 pages 섹션에 라우트 설정 (또는 @Controller 직접 매핑)
### 보안
- config/PortalConfigSecurity.java
- PortalAuthenticationManager (커스텀 인증)
- CSRF, XSS 방어, 세션 고정 공격 방어
- 역할 계층: ROLE_USER < ROLE_CORP_USER < ROLE_CORP_MANAGER
### 트랜잭션
- 기본: @Transactional (REQUIRED)
- 읽기 전용: @Transactional(readOnly = true)
- 다중 DB는 자동 처리 (Atomikos JTA)
### 로깅
- SLF4J with Lombok @Slf4j
- 로그 경로: /Log/App/eapim/
- 개발 환경만 SQL 로깅
### 쿼리
- 우선: Spring Data JPA 메서드
- 복잡한 쿼리: QueryDSL
## 주요 기능
### 사용자 관리 (apps/user/)
- 내부 사용자 (Staff), 기업 사용자 (Enterprise)
- 가입 → 이메일 인증 → 관리자 승인 → 활성화
- 비밀번호 정책: 90일 만료, 복잡도 규칙
### API 키 관리 (apps/app/)
- 승인 워크플로우
- 개발/운영 환경 지원
- eLink Gateway ClientID/ClientSecret 연동
### 감사 추적
- AbstractAuditingEntity (createdBy, createdDate, lastModifiedBy, lastModifiedDate)
- @Audited로 변경 이력
- Spring Data Envers로 조회
## 중요 사항
### 한글 지원
- Thymeleaf 템플릿 한글
- DB 데이터 UTF-8
- messages_ko.properties
### Forward Proxy
- Dev: http://localhost:10000
- Stage: http://inter-dapiwas01:10000
- Prod: http://inter-apiwas00:10000
### 비밀번호 정책 (PortalUserValidator)
- 최소 8자, 대소문자+숫자+특수문자
- 연속 문자 불가, 최근 3개 재사용 불가
- 90일 만료
### 세션
- 15분 타임아웃
- 단일 세션 강제
- Redis/Ehcache 클러스터링 (stage/prod)
### 파일 업로드
- 최대 8MB
- /Log/App/eapim/files/
- XSS 스캐닝
## 배포
- JEUS, WebLogic, GlassFish 6.3, Tomcat 지원
- JNDI 설정 필수 (stage/prod)
- Docker 지원
## 관련 프로젝트
- ../eapim-admin/
- ../eapim-online/
- ../kjb-eapim-sql/
---
상세 내용은 CLAUDE.md 참조