Rinjae 6694715195
eapim-portal CI / build (push) Has been cancelled
eapim-portal Test / test (push) Has been cancelled
Merge branch 'feature/session-timeout'
# Conflicts:
#	src/main/resources/static/css/main.css.map
2026-06-19 18:09:47 +09:00
2026-06-02 09:27:16 +09:00
2025-11-25 11:11:24 +09:00
2025-08-07 15:36:26 +09:00
2025-08-07 15:36:26 +09:00
2025-08-07 15:36:26 +09:00
2025-08-07 15:36:26 +09:00
2026-06-10 19:29:24 +09:00
2025-08-07 15:36:26 +09:00
2025-08-07 15:36:26 +09:00
2026-06-02 09:27:16 +09:00
2026-06-02 09:27:16 +09:00
2026-06-02 09:27:16 +09:00
2026-01-29 15:30:02 +09:00
2025-08-07 15:36:26 +09:00

EAPIM Portal

광주은행 엔터프라이즈 API 포털 관리 시스템

프로젝트 클론 (Git Clone)

아래 스크립트를 복사하여 한 번에 실행하면 모든 프로젝트를 클론합니다:

# 변수 설정 (환경에 맞게 수정하세요)
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 · Node.js & SASS · direnv · IDE 설정

요약:

  • JDK 8 (Zulu 권장)
  • Gradle 8.7 (gradlew 사용 금지)
  • Git
  • Oracle 19c 접근 (개발: 192.168.240.177:1599)
  • Node.js 18 LTS 이상 (SCSS 컴파일용)

Git 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 명령어 설정
export GRADLE_CMD="gradle"

# ====================================
# 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  # 또는 필요한 브랜치

# ====================================
# 6. 최종 폴더 구조 확인
# ====================================
# kjb-eapim/
# ├── eapim-portal/
# ├── eapim-online/
# │   └── elink-online-core-jpa/
# ├── elink-portal-common/

# ====================================
# 7. eapim-portal 프로젝트로 이동 및 디펜던시 다운로드
# ====================================
cd $WORKSPACE_DIR/eapim-portal

# Gradle 디펜던시 다운로드
$GRADLE_CMD dependencies

Windows 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 명령어 설정
set GRADLE_CMD=gradle

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 ====================================
REM 6. 최종 폴더 구조 확인
REM ====================================
REM kjb-eapim\
REM ├── eapim-portal\
REM ├── eapim-online\
REM │   └── elink-online-core-jpa\
REM ├── elink-portal-common\

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 명령어 사용 가능

빌드 및 실행

Gradle 명령어 설정

Git Bash:

export GRADLE_CMD="gradle"

Windows CMD:

set GRADLE_CMD=gradle

빌드 및 실행 명령어

# 개발 환경 실행
$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/   # 공통 유틸리티

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)

SASS / CSS 스타일 개발

개요

이 프로젝트는 Dart Sass를 사용하여 CSS를 관리합니다. src/main/resources/static/css/main.css는 SASS에서 컴파일된 결과물이므로 직접 수정하면 안 됩니다. 스타일 변경은 반드시 src/main/resources/static/sass/ 하위 파일을 수정하세요.

설치

Node.js 및 SASS 설치 절차는 개발환경 준비 사항 § 6. Node.js & SASS 빌드 환경 을 참고하세요.

Node.js가 이미 설치되어 있다면 프로젝트 의존성만 설치하면 됩니다:

npm install

빌드 명령어

# 1회 컴파일 (개발용, 들여쓰기 유지)
npm run sass:build

# 1회 컴파일 (배포용, minified)
npm run sass:build:minified

# 파일 변경 감지 후 자동 컴파일 (개발 중 권장)
npm run sass:watch

# 빌드 + minified 동시 생성
npm run build

# 단축 스크립트 (npm 없이 sass 직접 실행)
./sass-build.sh

SASS 파일 구조

src/main/resources/static/sass/
├── main.scss                  # 진입점 - 모든 파일을 @use로 조합
│
├── abstracts/                 # CSS 출력 없는 헬퍼 (변수, 믹스인 등)
│   ├── _variables.scss        # 색상, 타이포그래피, 그림자 변수
│   ├── _mixins.scss           # 재사용 믹스인
│   └── _color-functions.scss  # Dart Sass 3.0 color 유틸리티
│
├── base/                      # 전역 기본 스타일
│   ├── _reset.scss
│   ├── _typography.scss
│   ├── _animations.scss
│   ├── _kjb-font.scss         # 광주은행 전용 폰트
│   └── _utilities.scss        # 유틸리티 클래스
│
├── layout/                    # 페이지 레이아웃 구조
│   ├── _header.scss
│   ├── _footer.scss
│   ├── _grid.scss
│   └── _container.scss
│
├── components/                # 재사용 UI 컴포넌트
│   ├── _buttons.scss
│   ├── _forms.scss
│   ├── _modals.scss           # customPopup 모달 스타일
│   ├── _tables.scss
│   ├── _badges.scss
│   ├── _cards.scss
│   ├── _navigation.scss
│   ├── _pagination.scss
│   └── ...
│
├── pages/                     # 페이지별 스타일
│   ├── _mypage.scss
│   ├── _login.scss
│   ├── _apikey-list.scss
│   └── ...
│
├── themes/
│   └── _dark.scss             # 다크 테마 (예약)
│
└── vendors/
    └── _overrides.scss        # 외부 라이브러리 스타일 덮어쓰기

새 스타일 추가하는 방법

1. 기존 컴포넌트/페이지 파일에 추가

해당 _*.scss 파일을 직접 수정합니다.

// components/_buttons.scss 예시
.btn-withdrawal {
  color: $text-gray;
  border: 1px solid $border-gray;

  &:hover {
    color: $accent-orange;
  }
}

2. 새 페이지 스타일 파일 추가

# 1. 파일 생성 (언더스코어 접두사 필수)
touch src/main/resources/static/sass/pages/_new-page.scss

# 2. main.scss 에 @use 추가
// main.scss 에 추가
@use 'pages/new-page' as *;

3. 변수 활용 예시

// abstracts/_variables.scss 에 정의된 변수 사용
.my-component {
  color: $primary-blue;          // #0049b4 (광주은행 블루)
  background: $gray-bg;          // #F8FAFC
  border: 1px solid $border-gray; // #E2E8F0
  box-shadow: $shadow-md;
  font-family: $font-family-primary;
}

컴파일 결과 확인

# 컴파일 후 출력 파일 확인
ls -lh src/main/resources/static/css/main.css
ls -lh src/main/resources/static/css/main.min.css  # minified

주의사항

  • src/main/resources/static/css/main.css 직접 수정 금지 — SASS 재컴파일 시 덮어씌워짐
  • style2.css 는 레거시 파일(구 디자인 시스템)이며 main.css별도로 관리됨
  • @import 대신 @use 사용 (Dart Sass 3.0 호환)
  • 파일명 앞에 언더스코어(_) 필수 — _filename.scss 형식이어야 단독 컴파일되지 않음

AI 코딩 어시스턴트 지침 파일

이 프로젝트는 여러 AI 코딩 어시스턴트를 지원합니다. 각 도구는 다음 파일을 참조합니다:

지침 파일 위치

AI 도구 지침 파일 경로 용도
Claude Code CLAUDE.md 마스터 지침 파일 (한글)
GitHub Copilot .github/copilot-instructions.md Copilot용 지침
Cursor .cursorrules Cursor용 간결한 규칙

지침 파일 관리 방법

  1. 마스터 파일: CLAUDE.md

    • 가장 상세한 프로젝트 지침을 포함
    • 한글로 작성되어 한국 개발팀이 이해하기 쉬움
    • 수정 시 이 파일을 먼저 업데이트
  2. 동기화:

    # 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 키 관리 및 승인 워크플로우
  • 감사 추적 (Hibernate Envers)

배포

지원 서버

  • JEUS
  • WebLogic
  • Tomcat (내장)

문서

  • 개발환경 준비 사항: djb-docs/개발환경-준비-사항.md — JDK·Gradle·Node.js·SASS 설치 가이드
  • 프로젝트 상세 지침: CLAUDE.md (한글)
  • 사용자 가이드: 개발자포탈.md (한글)
  • 빌드 스크립트: build-gf63.sh, deploy_portal.sh
S
Description
No description provided
Readme 117 MiB
Languages
JavaScript 59.8%
HTML 12.9%
Java 11.8%
CSS 9.5%
SCSS 6%