From 5deda2a0047eea12eb6ace23db09b292e3f247ac Mon Sep 17 00:00:00 2001 From: Rinjae Date: Thu, 21 May 2026 09:51:38 +0900 Subject: [PATCH] =?UTF-8?q?-=20K8sUtil=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20-=20=EC=8A=B9=EC=9D=B8=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=99=84=EC=A0=84=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20DJBank=EB=A1=9C=20=EB=AA=85=EC=B9=AD?= =?UTF-8?q?=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 4 +- README.md | 51 ------------------- build.gradle | 20 ++------ .../auth/service/ApiPermissionFilter.java | 11 ++-- .../user/controller/AccountController.java | 5 +- .../GatewayDatasourceConfiguration.java | 2 - src/main/resources/application.yml | 2 +- .../message/apim/message_en.properties | 2 +- .../message/apim/message_ko.properties | 2 +- .../swagger/default-token-api-spec.json | 8 +-- .../apps/commission/commissionPrint.html | 2 +- .../apps/community/mainPartnershipForm.html | 23 +++++---- .../templates/views/apps/login/login.html | 2 +- .../templates/views/apps/main/index.html | 32 ++++++------ .../views/apps/register/signupSelection.html | 4 +- .../apps/register/userDecisionAccept.html | 2 +- .../apps/register/userDecisionProcess.html | 2 +- .../templates/views/apps/service/guide.html | 4 +- .../templates/views/apps/service/intro.html | 6 +-- .../views/fragment/kjbank/footer.html | 10 ++-- .../fragment/kjbank/header_container.html | 8 +-- 21 files changed, 68 insertions(+), 134 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 5c589d1..c77b7c8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,7 +8,7 @@ **기술 스택:** - Spring Boot 2.7.18 with Spring MVC and Thymeleaf -- Java 8 (targetCompatibility: 1.8) +- Java 8 (sourceCompatibility/targetCompatibility: 1.8) - Gradle 8.7 빌드 시스템 - Oracle 19c 데이터베이스 (JNDI를 통한 이중 데이터소스) - Spring Security (커스텀 인증) @@ -59,7 +59,7 @@ git push origin jenkins_with_weblogic ### 애플리케이션 실행 - gradlew 사용 금지 - offline gradle 단독 실행 -- msi-gf63 컴퓨터에서는 /c/eactive/workspaces/shell-scripts/kjb-gradle.sh 로 gradle 실행 (jdk, gradle 등 환경 변수 세팅 후 gradle 실행하는 스크립트) +- JDK/Gradle 환경 변수는 저장소 루트의 `.envrc`(direnv)로 자동 설정됨 (JAVA_HOME → Zulu JDK 8, GRADLE_USER_HOME → 격리 디렉터리) ```bash # dev 프로파일로 실행 (기본값) diff --git a/README.md b/README.md index 1417139..0af8879 100644 --- a/README.md +++ b/README.md @@ -90,10 +90,7 @@ 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. 작업 디렉토리 생성 @@ -128,12 +125,6 @@ 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. 최종 폴더 구조 확인 # ==================================== @@ -142,7 +133,6 @@ git checkout master # 또는 필요한 브랜치 # ├── eapim-online/ # │ └── elink-online-core-jpa/ # ├── elink-portal-common/ -# └── kjb-safedb/ # ==================================== # 7. eapim-portal 프로젝트로 이동 및 디펜던시 다운로드 @@ -169,10 +159,7 @@ 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. 작업 디렉토리 생성 @@ -207,12 +194,6 @@ 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 ==================================== @@ -221,7 +202,6 @@ REM ├── eapim-portal\ REM ├── eapim-online\ REM │ └── elink-online-core-jpa\ REM ├── elink-portal-common\ -REM └── kjb-safedb\ REM ==================================== REM 7. eapim-portal 프로젝트로 이동 및 디펜던시 다운로드 @@ -253,30 +233,19 @@ REM Gradle 디펜던시 다운로드 - **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 ``` ### 빌드 및 실행 명령어 @@ -310,7 +279,6 @@ kjb-eapim/ ├── eapim-online/ # Online 프로젝트 │ └── elink-online-core-jpa/ # Gateway 데이터 모델 ├── elink-portal-common/ # 공통 유틸리티 -└── kjb-safedb/ # SafeDB 암호화 라이브러리 ``` ### eapim-portal 내부 구조 @@ -327,7 +295,6 @@ src/main/java/com/eactive/apim/portal/ 이 프로젝트는 다음 모듈에 의존합니다 (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) ## SASS / CSS 스타일 개발 @@ -532,8 +499,6 @@ ls -lh src/main/resources/static/css/main.min.css # minified - 사용자 관리 (내부/기업) - API 키 관리 및 승인 워크플로우 -- API 카탈로그 및 문서화 -- API 테스트 프록시 - 감사 추적 (Hibernate Envers) ## 배포 @@ -543,22 +508,6 @@ ls -lh src/main/resources/static/css/main.min.css # minified - 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` (한글) diff --git a/build.gradle b/build.gradle index 918045e..6358b69 100644 --- a/build.gradle +++ b/build.gradle @@ -128,11 +128,13 @@ bootRun { } +// annotation processor 출력 디렉토리는 IntelliJ/Gradle 통합이 자동 등록함. +// 명시적으로 srcDir 추가하면 IntelliJ idea 모드에서 MapStruct가 같은 파일을 +// 중복 생성하려다 javax.annotation.processing.FilerException 발생함. sourceSets { main { java { srcDir 'src/main/java' - srcDir 'build/generated/sources/annotationProcessor/java/main' } } } @@ -181,20 +183,4 @@ task printSourceSets { println " Output dir : ${srcSet.output.classesDirs.asPath}" } } -} - -// CryptoCli 실행 task (bcrypt 지원) -task cryptoCli(type: JavaExec) { - mainClass = 'com.eactive.ext.kjb.safedb.CryptoCli' - classpath = sourceSets.main.runtimeClasspath - standardInput = System.in - - // SafeDB 라이브러리 경로 추가 (리눅스) - classpath += files("/safedb/JavaAPI/config") - classpath += fileTree(dir: "/safedb/JavaAPI/lib", include: ["*.jar"]) - - // CLI 인자 전달: ./gradlew cryptoCli --args="bcrypt hash password123" - if (project.hasProperty('args')) { - args project.args.split('\\s+') - } } \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/ApiPermissionFilter.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/ApiPermissionFilter.java index 3de31b3..3f3066d 100644 --- a/src/main/java/com/eactive/apim/portal/apps/auth/service/ApiPermissionFilter.java +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/ApiPermissionFilter.java @@ -3,8 +3,9 @@ package com.eactive.apim.portal.apps.auth.service; import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.user.dto.PortalOrgDTO; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; import com.eactive.apim.portal.common.util.SecurityUtil; -import lombok.var; import java.util.List; import java.util.stream.Collectors; @@ -18,12 +19,12 @@ public class ApiPermissionFilter { if (isAuthenticated) { // null 체크 추가 - var user = SecurityUtil.getPortalAuthenticatedUser(); + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); if (user != null && user.getRoleCode() != null) { roleCode = user.getRoleCode().toString(); } - var userOrg = SecurityUtil.getUserOrg(); + PortalOrgDTO userOrg = SecurityUtil.getUserOrg(); if (userOrg != null) { org = userOrg.getId(); } @@ -44,12 +45,12 @@ public class ApiPermissionFilter { if (isAuthenticated) { // null 체크 추가 - var user = SecurityUtil.getPortalAuthenticatedUser(); + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); if (user != null && user.getRoleCode() != null) { roleCode = user.getRoleCode().toString(); } - var userOrg = SecurityUtil.getUserOrg(); + PortalOrgDTO userOrg = SecurityUtil.getUserOrg(); if (userOrg != null) { org = userOrg.getId(); } diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/AccountController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/AccountController.java index e7dcd34..67ad0f1 100644 --- a/src/main/java/com/eactive/apim/portal/apps/user/controller/AccountController.java +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/AccountController.java @@ -24,7 +24,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import lombok.RequiredArgsConstructor; -import lombok.var; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; @@ -252,7 +251,7 @@ public class AccountController { @GetMapping("/mypage/org-transfer") public String showOrgTransferPage(Model model) { try { - var authenticatedUser = SecurityUtil.getPortalAuthenticatedUser(); + PortalAuthenticatedUser authenticatedUser = SecurityUtil.getPortalAuthenticatedUser(); PortalUserDTO user = userFacade.findById(authenticatedUser.getId()); if (user.getRoleCode() != PortalUserEnums.RoleCode.ROLE_USER) { @@ -282,7 +281,7 @@ public class AccountController { HttpServletResponse response) { Map result = new HashMap<>(); try { - var currentUser = SecurityUtil.getPortalAuthenticatedUser(); + PortalAuthenticatedUser currentUser = SecurityUtil.getPortalAuthenticatedUser(); if (currentUser.getRoleCode() != PortalUserEnums.RoleCode.ROLE_USER) { result.put("status", "ERROR"); diff --git a/src/main/java/com/eactive/apim/portal/config/GatewayDatasourceConfiguration.java b/src/main/java/com/eactive/apim/portal/config/GatewayDatasourceConfiguration.java index d824550..a5ce76b 100644 --- a/src/main/java/com/eactive/apim/portal/config/GatewayDatasourceConfiguration.java +++ b/src/main/java/com/eactive/apim/portal/config/GatewayDatasourceConfiguration.java @@ -9,7 +9,6 @@ import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; -import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; @@ -20,7 +19,6 @@ import javax.sql.DataSource; @Configuration @EntityScan(basePackages = {"com.eactive.apim.gateway"}) @EnableJpaRepositories(basePackages = "com.eactive.apim.gateway", repositoryBaseClass = BaseRepositoryImpl.class, entityManagerFactoryRef = "gatewayEntityManagerFactory") -@EnableJpaAuditing(auditorAwareRef = "auditorProvider") @Slf4j public class GatewayDatasourceConfiguration extends BaseDatasourceConfiguration { private final Environment env; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f3582d9..5787c3f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,7 +5,7 @@ server: timeout: 15m encoding: charset: UTF-8 - port: '8080' + port: '39130' error: include-message: never include-stacktrace: never diff --git a/src/main/resources/message/apim/message_en.properties b/src/main/resources/message/apim/message_en.properties index 5deccc9..173a046 100644 --- a/src/main/resources/message/apim/message_en.properties +++ b/src/main/resources/message/apim/message_en.properties @@ -1,4 +1,4 @@ -title.html=KJBank API Portal Portal +title.html=DJBank API Portal password.not.match=Password is not matched authnumber.not.match=Auth number is not matched. apim.route.register.file=File diff --git a/src/main/resources/message/apim/message_ko.properties b/src/main/resources/message/apim/message_ko.properties index 176e88b..0b3acbd 100644 --- a/src/main/resources/message/apim/message_ko.properties +++ b/src/main/resources/message/apim/message_ko.properties @@ -1,4 +1,4 @@ -title.html=\uAD11\uC8FC\uC740\uD589 API Portal +title.html=DJBank \uAC1C\uBC1C\uC790\uD3EC\uD0C8 apim.route.register.file=\uCCA8\uBD80\uD30C\uC77C field.required=\uD544\uC218 \uC785\uB825\uD56D\uBAA9\uC785\uB2C8\uB2E4. companyName=\uD68C\uC0AC\uBA85 diff --git a/src/main/resources/swagger/default-token-api-spec.json b/src/main/resources/swagger/default-token-api-spec.json index 6430a9d..0ce14bb 100644 --- a/src/main/resources/swagger/default-token-api-spec.json +++ b/src/main/resources/swagger/default-token-api-spec.json @@ -1,7 +1,7 @@ { "openapi": "3.0.0", "info": { - "title": "광주은행 OAuth 2.0 토큰 발급", + "title": "DJBank OAuth 2.0 토큰 발급", "description": "OAuth 2.0 토큰 발급을 위한 API 문서입니다.", "version": "1.0.0" }, @@ -28,7 +28,7 @@ "paths": { "/api/v1/oauth/token": { "post": { - "summary": "광주은행 액세스 토큰 발급", + "summary": "DJBank 액세스 토큰 발급", "description": "client_credentials grant type을 사용하여 액세스 토큰을 발급받습니다.", "security": [ { @@ -51,12 +51,12 @@ "client_id": { "type": "string", "maxLength": 256, - "description": "광주은행에서 발급한 client id" + "description": "DJBank에서 발급한 client id" }, "client_secret": { "type": "string", "maxLength": 512, - "description": "광주은행에서 발급한 client secret" + "description": "DJBank에서 발급한 client secret" }, "scope": { "type": "string", diff --git a/src/main/resources/templates/views/apps/commission/commissionPrint.html b/src/main/resources/templates/views/apps/commission/commissionPrint.html index bd3bbe3..2bd60d2 100644 --- a/src/main/resources/templates/views/apps/commission/commissionPrint.html +++ b/src/main/resources/templates/views/apps/commission/commissionPrint.html @@ -59,7 +59,7 @@

- 광주은행 오픈뱅킹 + DJBank 오픈뱅킹

우61470 광주광역시 동구 제봉로 225 전화 (062)239-6722 FAX (062)239-6719 오픈뱅크 플랫폼 담당자

diff --git a/src/main/resources/templates/views/apps/community/mainPartnershipForm.html b/src/main/resources/templates/views/apps/community/mainPartnershipForm.html index 4b47bd4..e088e61 100644 --- a/src/main/resources/templates/views/apps/community/mainPartnershipForm.html +++ b/src/main/resources/templates/views/apps/community/mainPartnershipForm.html @@ -6,7 +6,7 @@
타이틀 배경 -

사업 제휴

+

피드백/개선요청

@@ -15,8 +15,8 @@
-

사업 제휴 신청

- 광주은행은 온라인 비즈니스 혁신을 위한 사업 제안을 환영합니다. +

피드백/개선요청

+ DJBank은 온라인 비즈니스 혁신을 위한 피드백/개선요청을 환영합니다.
@@ -24,10 +24,10 @@
- +
- 사업 제목 + 제목 필수
@@ -35,7 +35,7 @@ id="bizSubject" th:field="*{bizSubject}" class="form-input" - placeholder="제안하고자 하시는 사업 제목을 입력해 주세요" + placeholder="제안하고자 하는 제목을 입력해 주세요" required maxlength="200">
@@ -44,7 +44,7 @@
- 사업 내용 + 내용 필수
@@ -52,7 +52,7 @@ th:field="*{bizDetail}" class="form-textarea" rows="10" - placeholder="제안하고자 하시는 사업 내용을 상세히 입력해 주세요 (사업의 목적, 내용, 기대 효과 등)" + placeholder="제안하고자 하시는 내용을 상세히 입력해 주세요" required maxlength="4000"> @@ -62,7 +62,8 @@
-
+ +
@@ -108,7 +109,7 @@
diff --git a/src/main/resources/templates/views/apps/login/login.html b/src/main/resources/templates/views/apps/login/login.html index fb159ca..b4a6a67 100644 --- a/src/main/resources/templates/views/apps/login/login.html +++ b/src/main/resources/templates/views/apps/login/login.html @@ -8,7 +8,7 @@
@@ -32,12 +32,12 @@

세상의 모든 서비스

-

광주은행 API가 함께 합니다.

+

DJBank API가 함께 합니다.

- 광주은행 API 서비스 + DJBank API 서비스
@@ -48,12 +48,12 @@

세상의 모든 서비스

-

광주은행 API가 함께 합니다.

+

DJBank API가 함께 합니다.

- 광주은행 API 서비스 + DJBank API 서비스
@@ -156,7 +156,7 @@ 서비스 설명 - 광주은행 API 서비스를 이용해보세요. + DJBank API 서비스를 이용해보세요.

@@ -178,15 +178,15 @@

차별화된 API 서비스,
- 광주은행 API Portal + DJBank API Portal

- 광주은행 API Portal은 기업이 금융 서비스를 편리하게 개발할 수 있도록 차별화된 API와 테스트환경을 제공합니다. + DJBank API Portal은 기업이 금융 서비스를 편리하게 개발할 수 있도록 차별화된 API와 테스트환경을 제공합니다.

- 광주은행 API + DJBank API
@@ -208,7 +208,7 @@

비지니스의 시작,
- 광주은행 오픈 API가 함께 하겠습니다. + DJBank 오픈 API가 함께 하겠습니다.

@@ -219,8 +219,8 @@

공지사항

-

광주은행 API의 새로운 소식

-

광주은행 API의
새로운 소식

+

DJBank API의 새로운 소식

+

DJBank API의
새로운 소식

@@ -256,7 +256,7 @@

우리곁의 수많은 서비스들이 - 광주은행 오픈 API와 함께하고 있습니다. + DJBank 오픈 API와 함께하고 있습니다.

@@ -320,7 +320,7 @@
-

광주은행 API를 지금 바로 만나보세요.

+

DJBank API를 지금 바로 만나보세요.

diff --git a/src/main/resources/templates/views/apps/register/signupSelection.html b/src/main/resources/templates/views/apps/register/signupSelection.html index e43b434..77b63ca 100644 --- a/src/main/resources/templates/views/apps/register/signupSelection.html +++ b/src/main/resources/templates/views/apps/register/signupSelection.html @@ -10,11 +10,11 @@