140 lines
3.8 KiB
Plaintext
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 참조
|