# 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 참조