# EAPIM Portal 광주은행 엔터프라이즈 API 포털 관리 시스템 ## 프로젝트 클론 (Git Clone) 아래 스크립트를 복사하여 한 번에 실행하면 모든 프로젝트를 클론합니다: ```bash # 변수 설정 (환경에 맞게 수정하세요) GIT_URL="ssh://git@192.168.240.178:18081/eapim" PROJECT_HOME="/c/eactive/workspaces/kjb-eapim-devPortal" DEFAULT_BRANCH="jenkins_with_weblogic" # 프로젝트 홈 디렉토리 생성 및 이동 mkdir -p "$PROJECT_HOME" cd "$PROJECT_HOME" # 메인 프로젝트 클론 git clone -b "$DEFAULT_BRANCH" "$GIT_URL/kjb-eapim.git" kjb-eapim # 의존 모듈 클론 (kjb-eapim 폴더와 동일 레벨) mkdir -p eapim-online git clone -b "$DEFAULT_BRANCH" "$GIT_URL/elink-online-core-jpa.git" eapim-online/elink-online-core-jpa git clone -b "$DEFAULT_BRANCH" "$GIT_URL/elink-portal-common.git" elink-portal-common git clone -b "$DEFAULT_BRANCH" "$GIT_URL/kjb-safedb.git" kjb-safedb # 클론 후 폴더 구조 확인 echo "=== 프로젝트 구조 ===" ls -la "$PROJECT_HOME" ``` ### 클론 후 폴더 구조 ``` $PROJECT_HOME/ ├── kjb-eapim/ # 메인 프로젝트 │ └── eapim-portal/ # 이 프로젝트 (Portal) ├── eapim-online/ # Gateway 데이터 모델 │ └── elink-online-core-jpa/ # JPA 엔티티 모듈 ├── elink-portal-common/ # 공통 유틸리티 └── kjb-safedb/ # SafeDB 암호화 라이브러리 ``` ### 의존 관계 (settings.gradle 참조) ``` eapim-portal ├── elink-online-core-jpa → ../eapim-online/elink-online-core-jpa ├── elink-portal-common → ../elink-portal-common └── kjb-safedb → ../kjb-safedb ``` ## 프로젝트 개요 **EAPIM Portal**은 광주은행의 API 서비스를 관리하고, 사용자 등록, API 키 발급, 문서화, 테스트 기능을 제공하는 웹 기반 플랫폼입니다. ## 기술 스택 - Spring Boot 2.7.18 - Java 8 - Gradle 8.7 - Oracle 19c - Spring Security - JPA/Hibernate 5.6.15 with Envers - MapStruct, Lombok ## 초기 세팅 가이드 ### 사전 요구사항 - JDK 8 이상 - Gradle 8.7 - Git - Oracle 19c (또는 개발 환경에 따라 접근 가능한 DB) ### Git Bash에서 초기 세팅 ```bash # ==================================== # 1. 변수 설정 (프로젝트 경로 및 브랜치) # ==================================== export WORKSPACE_DIR="/c/eactive/workspaces/kjb-eapim" export PROJECT_BRANCH="jenkins_with_weblogic" # Git Repository URL 설정 # 기본: ssh://git@192.168.240.178:18081/eapim # 대체: https://git.eactive.synology.me:8090/kjb-eapim export GIT_REPO_BASE="ssh://git@192.168.240.178:18081/eapim" # export GIT_REPO_BASE="https://git.eactive.synology.me:8090/kjb-eapim" # Gradle 명령어 설정 # 일반 환경: gradle # msi-gf63 환경: /c/eactive/workspaces/shell-scripts/kjb-gradle.sh export GRADLE_CMD="gradle" # export GRADLE_CMD="/c/eactive/workspaces/shell-scripts/kjb-gradle.sh" # ==================================== # 2. 작업 디렉토리 생성 # ==================================== mkdir -p $WORKSPACE_DIR cd $WORKSPACE_DIR # ==================================== # 3. eapim-portal 프로젝트 클론 # ==================================== git clone ${GIT_REPO_BASE}/eapim-portal.git cd eapim-portal # 프로젝트 브랜치로 체크아웃 git checkout $PROJECT_BRANCH # ==================================== # 4. eapim-online 프로젝트 클론 (elink-online-core-jpa 포함) # ==================================== cd $WORKSPACE_DIR git clone ${GIT_REPO_BASE}/eapim-online.git cd eapim-online git checkout $PROJECT_BRANCH # ==================================== # 5. 의존 모듈 클론 # ==================================== cd $WORKSPACE_DIR # elink-portal-common 클론 git clone ${GIT_REPO_BASE}/elink-portal-common.git cd elink-portal-common git checkout master # 또는 필요한 브랜치 # kjb-safedb 클론 cd $WORKSPACE_DIR git clone ${GIT_REPO_BASE}/kjb-safedb.git cd kjb-safedb git checkout master # 또는 필요한 브랜치 # ==================================== # 6. 최종 폴더 구조 확인 # ==================================== # kjb-eapim/ # ├── eapim-portal/ # ├── eapim-online/ # │ └── elink-online-core-jpa/ # ├── elink-portal-common/ # └── kjb-safedb/ # ==================================== # 7. eapim-portal 프로젝트로 이동 및 디펜던시 다운로드 # ==================================== cd $WORKSPACE_DIR/eapim-portal # Gradle 디펜던시 다운로드 $GRADLE_CMD dependencies ``` ### Windows CMD에서 초기 세팅 ```cmd REM ==================================== REM 1. 변수 설정 (프로젝트 경로 및 브랜치) REM ==================================== set WORKSPACE_DIR=C:\eactive\workspaces\kjb-eapim set PROJECT_BRANCH=jenkins_with_weblogic REM Git Repository URL 설정 REM 기본: ssh://git@192.168.240.178:18081/eapim REM 대체: https://git.eactive.synology.me:8090/kjb-eapim set GIT_REPO_BASE=ssh://git@192.168.240.178:18081/eapim REM set GIT_REPO_BASE=https://git.eactive.synology.me:8090/kjb-eapim REM Gradle 명령어 설정 REM 일반 환경: gradle REM msi-gf63 환경: C:\eactive\workspaces\shell-scripts\kjb-gradle.sh set GRADLE_CMD=gradle REM set GRADLE_CMD=C:\eactive\workspaces\shell-scripts\kjb-gradle.sh REM ==================================== REM 2. 작업 디렉토리 생성 REM ==================================== if not exist "%WORKSPACE_DIR%" mkdir "%WORKSPACE_DIR%" cd /d "%WORKSPACE_DIR%" REM ==================================== REM 3. eapim-portal 프로젝트 클론 REM ==================================== git clone %GIT_REPO_BASE%/eapim-portal.git cd eapim-portal REM 프로젝트 브랜치로 체크아웃 git checkout %PROJECT_BRANCH% REM ==================================== REM 4. eapim-online 프로젝트 클론 (elink-online-core-jpa 포함) REM ==================================== cd /d "%WORKSPACE_DIR%" git clone %GIT_REPO_BASE%/eapim-online.git cd eapim-online git checkout %PROJECT_BRANCH% REM ==================================== REM 5. 의존 모듈 클론 REM ==================================== cd /d "%WORKSPACE_DIR%" REM elink-portal-common 클론 git clone %GIT_REPO_BASE%/elink-portal-common.git cd elink-portal-common git checkout master REM kjb-safedb 클론 cd /d "%WORKSPACE_DIR%" git clone %GIT_REPO_BASE%/kjb-safedb.git cd kjb-safedb git checkout master REM ==================================== REM 6. 최종 폴더 구조 확인 REM ==================================== REM kjb-eapim\ REM ├── eapim-portal\ REM ├── eapim-online\ REM │ └── elink-online-core-jpa\ REM ├── elink-portal-common\ REM └── kjb-safedb\ REM ==================================== REM 7. eapim-portal 프로젝트로 이동 및 디펜던시 다운로드 REM ==================================== cd /d "%WORKSPACE_DIR%\eapim-portal" REM Gradle 디펜던시 다운로드 %GRADLE_CMD% dependencies ``` ### 환경별 설정 파일 프로젝트 클론 후 필요한 환경 설정을 수정하세요: - `src/main/resources/application-dev.yml` - 개발 환경 - `src/main/resources/application-stage.yml` - 스테이징 환경 - `src/main/resources/application-prod.yml` - 운영 환경 - `src/main/resources/application-gf63.yml` - 개인 개발 환경 ### 데이터베이스 설정 개발 환경(dev)에서는 `application-dev.yml`에 데이터베이스 설정이 포함되어 있습니다. 스테이징/운영 환경에서는 JNDI 데이터소스가 필요합니다: - `jdbc/dsOBP_EMS` - Portal 데이터베이스 - `jdbc/dsOBP_AGW` - Gateway 데이터베이스 ### 주의사항 - **gradlew 사용 금지**: 반드시 시스템에 설치된 gradle을 직접 사용하거나 환경에 맞는 스크립트를 사용하세요 - **Gradle 명령어 변수화**: 위의 `GRADLE_CMD` 변수를 설정하면 환경별로 다른 gradle 명령어 사용 가능 - **SafeDB**: 암호화 기능이 필요한 경우 kjb-safedb 모듈 설정 확인 ## 빌드 및 실행 ### Gradle 명령어 설정 사용 환경에 따라 적절한 gradle 명령어를 설정하세요: **Git Bash:** ```bash # 일반 환경 export GRADLE_CMD="gradle" # msi-gf63 환경 export GRADLE_CMD="/c/eactive/workspaces/shell-scripts/kjb-gradle.sh" ``` **Windows CMD:** ```cmd REM 일반 환경 set GRADLE_CMD=gradle REM msi-gf63 환경 set GRADLE_CMD=C:\eactive\workspaces\shell-scripts\kjb-gradle.sh ``` ### 빌드 및 실행 명령어 ```bash # 개발 환경 실행 $GRADLE_CMD bootRun # 또는: %GRADLE_CMD% bootRun (CMD) # WAR 빌드 $GRADLE_CMD bootWar # 테스트 $GRADLE_CMD test # 컴파일만 수행 $GRADLE_CMD classes # 전체 빌드 $GRADLE_CMD clean build ``` **주의**: gradlew 사용 금지 - offline gradle 단독 실행 ## 프로젝트 구조 ### 전체 프로젝트 구조 ``` kjb-eapim/ ├── eapim-portal/ # Portal 웹 애플리케이션 (현재 프로젝트) ├── eapim-online/ # Online 프로젝트 │ └── elink-online-core-jpa/ # Gateway 데이터 모델 ├── elink-portal-common/ # 공통 유틸리티 └── kjb-safedb/ # SafeDB 암호화 라이브러리 ``` ### eapim-portal 내부 구조 ``` src/main/java/com/eactive/apim/portal/ ├── apps/ # 기능 모듈 (user, app, approval, apis, etc.) ├── common/ # 공통 관심사 ├── config/ # Spring 설정 └── gateway/ # Gateway DB 접근 ``` ## 외부 모듈 이 프로젝트는 다음 모듈에 의존합니다 (settings.gradle 참조): - `eapim-online/elink-online-core-jpa`: Gateway 데이터 모델 (../eapim-online/elink-online-core-jpa) - `elink-portal-common`: 공통 유틸리티 (../elink-portal-common) - `kjb-safedb`: SafeDB 암호화 라이브러리 (../kjb-safedb) ## AI 코딩 어시스턴트 지침 파일 이 프로젝트는 여러 AI 코딩 어시스턴트를 지원합니다. 각 도구는 다음 파일을 참조합니다: ### 지침 파일 위치 | AI 도구 | 지침 파일 경로 | 용도 | |---------|---------------|------| | **Claude Code** | `CLAUDE.md` | 마스터 지침 파일 (한글) | | **GitHub Copilot** | `.github/copilot-instructions.md` | Copilot용 지침 | | **Cursor** | `.cursorrules` | Cursor용 간결한 규칙 | ### 지침 파일 관리 방법 1. **마스터 파일**: `CLAUDE.md` - 가장 상세한 프로젝트 지침을 포함 - 한글로 작성되어 한국 개발팀이 이해하기 쉬움 - 수정 시 이 파일을 먼저 업데이트 2. **동기화**: ```bash # CLAUDE.md 수정 후 다른 파일들 동기화 cp CLAUDE.md .github/copilot-instructions.md # .cursorrules는 간결한 버전이므로 필요시 수동 업데이트 ``` 3. **새로운 AI 도구 지원 추가**: - Windsurf: `.windsurfrules` 파일 생성 - 기타 도구: 해당 도구의 규칙 파일명 확인 후 생성 ### 지침 파일에 포함된 내용 - 프로젝트 개요 및 기술 스택 - 빌드 명령어 및 개발 환경 설정 - 아키텍처 구조 (멀티 모듈, 이중 DB) - 주요 기능 및 비즈니스 로직 - 개발 패턴 및 코딩 컨벤션 - 보안, 트랜잭션, 로깅 가이드 - 테스트 패턴 - 배포 방법 ## 환경 설정 ### 프로파일 - **dev**: 개발 환경 - **stage**: 스테이징 환경 - **prod**: 운영 환경 - **gf63**: 개인 개발 환경 - **kjb_rinjae**: 개인 개발 환경 ### 데이터베이스 - **EMS Database**: Portal 사용자, 조직, API 키 - **Gateway Database**: API 명세, 서비스 ## 주요 기능 - 사용자 관리 (내부/기업) - API 키 관리 및 승인 워크플로우 - API 카탈로그 및 문서화 - API 테스트 프록시 - 감사 추적 (Hibernate Envers) ## 배포 ### 지원 서버 - JEUS - WebLogic - Tomcat (내장) ### Docker ```bash ./build_docker.sh docker run -p 8080:8080 eapim-portal:latest ``` ## 관련 프로젝트 프로젝트 구조 (kjb-eapim 디렉토리 기준): - `eapim-portal/` - Portal 웹 애플리케이션 (현재 프로젝트) - `eapim-online/` - Online 프로젝트 (elink-online-core-jpa 포함) - `elink-portal-common/` - 공통 유틸리티 라이브러리 - `kjb-safedb/` - SafeDB 암호화 라이브러리 - `eapim-admin/` - Admin 포털 (선택사항) - `kjb-eapim-sql/` - SQL 스크립트 (선택사항) ## 문서 - **프로젝트 상세 지침**: `CLAUDE.md` (한글) - **사용자 가이드**: `개발자포탈.md` (한글) - **빌드 스크립트**: `build-gf63.sh`, `deploy_portal.sh`