- K8sUtil 파일 삭제

- 승인관리 완전삭제 기능 추가
- DJBank로 명칭 업데이트
This commit is contained in:
Rinjae
2026-05-21 09:51:38 +09:00
parent 1122db4e00
commit 5deda2a004
21 changed files with 68 additions and 134 deletions
+2 -2
View File
@@ -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 프로파일로 실행 (기본값)
-51
View File
@@ -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` (한글)
+3 -17
View File
@@ -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+')
}
}
@@ -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();
}
@@ -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<String, Object> result = new HashMap<>();
try {
var currentUser = SecurityUtil.getPortalAuthenticatedUser();
PortalAuthenticatedUser currentUser = SecurityUtil.getPortalAuthenticatedUser();
if (currentUser.getRoleCode() != PortalUserEnums.RoleCode.ROLE_USER) {
result.put("status", "ERROR");
@@ -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;
+1 -1
View File
@@ -5,7 +5,7 @@ server:
timeout: 15m
encoding:
charset: UTF-8
port: '8080'
port: '39130'
error:
include-message: never
include-stacktrace: never
@@ -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
@@ -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
@@ -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",
@@ -59,7 +59,7 @@
</div>
<div id="PrintDIV">
<h1 style="text-align:center">
<img style="height:30px;" th:src="@{/img/logo/logo.png}" alt="광주은행 오픈뱅킹" />
<img style="height:30px;" th:src="@{/img/logo/logo.png}" alt="DJBank 오픈뱅킹" />
</h1>
<p style="text-align:center">우61470 광주광역시 동구 제봉로 225 전화 (062)239-6722 FAX (062)239-6719 오픈뱅크 플랫폼 담당자</p>
@@ -6,7 +6,7 @@
<section layout:fragment="title">
<div class="page-title-banner">
<img th:src="@{/img/img_title_bg.png}" class="title-image" alt="타이틀 배경">
<h1>사업 제휴</h1>
<h1>피드백/개선요청</h1>
</div>
</section>
@@ -15,8 +15,8 @@
<!-- Title Bar -->
<div class="register-title-bar">
<h2 class="register-title">사업 제휴 신</h2>
<span class="register-subtitle">광주은행은 온라인 비즈니스 혁신을 위한 사업 제안을 환영합니다.</span>
<h2 class="register-title">피드백/개선요</h2>
<span class="register-subtitle">DJBank은 온라인 비즈니스 혁신을 위한 피드백/개선요청을 환영합니다.</span>
</div>
<!-- Form Content -->
@@ -24,10 +24,10 @@
<form name="partnershipForm" id="partnershipForm" th:action="@{/partnership}" th:object="${partnership}"
enctype="multipart/form-data" method="post" class="register-form">
<!-- 사업 제목 Field -->
<!-- 제목 Field -->
<div class="form-row">
<div class="form-label-wrapper label-offset">
<span class="form-label-text">사업 제목</span>
<span class="form-label-text">제목</span>
<span class="required-badge">필수</span>
</div>
<div class="form-field-wrapper">
@@ -35,7 +35,7 @@
id="bizSubject"
th:field="*{bizSubject}"
class="form-input"
placeholder="제안하고자 하시는 사업 제목을 입력해 주세요"
placeholder="제안하고자 하 제목을 입력해 주세요"
required
maxlength="200">
</div>
@@ -44,7 +44,7 @@
<!-- 사업 내용 Field -->
<div class="form-row">
<div class="form-label-wrapper">
<span class="form-label-text">사업 내용</span>
<span class="form-label-text">내용</span>
<span class="required-badge">필수</span>
</div>
<div class="form-field-wrapper">
@@ -52,7 +52,7 @@
th:field="*{bizDetail}"
class="form-textarea"
rows="10"
placeholder="제안하고자 하시는 사업 내용을 상세히 입력해 주세요 (사업의 목적, 내용, 기대 효과 등)"
placeholder="제안하고자 하시는 내용을 상세히 입력해 주세요"
required
maxlength="4000"></textarea>
<small class="char-counter-wrapper">
@@ -62,7 +62,8 @@
</div>
<!-- File Upload Field -->
<div class="form-row">
<!--/* 260520 - DJB 에서는 첨부 파일 허용안함. */-->
<!--<div class="form-row">
<div class="form-label-wrapper label-offset">
<span class="form-label-text">첨부파일</span>
</div>
@@ -99,7 +100,7 @@
</p>
</div>
</div>
</div>
</div>-->
</form>
</div>
@@ -108,7 +109,7 @@
<div class="form-actions">
<button type="button" class="btn btn-submit btn-secondary" th:onclick="|location.href='@{/}'|">취소</button>
<button type="button" class="btn btn-submit btn-primary btn-submit-form">
<span>제휴 신청</span>
<span>작성 완료</span>
</button>
</div>
@@ -8,7 +8,7 @@
<div class="login-card">
<!-- Logo -->
<div class="login-logo">
<img th:src="@{/img/logo/logo_box.png}" alt="광주은행">
<img th:src="@{/img/logo/logo_box.png}" alt="DJBank">
</div>
<!-- Header Message -->
@@ -16,12 +16,12 @@
<div class="hero-text-content">
<div class="hero-text">
<p class="hero-subtitle">세상의 모든 서비스</p>
<p class="hero-title">광주은행 API가 함께 합니다.</p>
<p class="hero-title">DJBank API가 함께 합니다.</p>
</div>
<a th:href="@{/signup}" class="btn-hero-signup">회원가입하기</a>
</div>
<div class="hero-image-content">
<img th:src="@{/img/hero_image_1.png}" alt="광주은행 API 서비스" class="hero-image">
<img th:src="@{/img/hero_image_1.png}" alt="DJBank API 서비스" class="hero-image">
</div>
</div>
</div>
@@ -32,12 +32,12 @@
<div class="hero-text-content">
<div class="hero-text">
<p class="hero-subtitle">세상의 모든 서비스</p>
<p class="hero-title">광주은행 API가 함께 합니다.</p>
<p class="hero-title">DJBank API가 함께 합니다.</p>
</div>
<a th:href="@{/signup}" class="btn-hero-signup">회원가입하기</a>
</div>
<div class="hero-image-content">
<img th:src="@{/img/hero_image_2.png}" alt="광주은행 API 서비스" class="hero-image">
<img th:src="@{/img/hero_image_2.png}" alt="DJBank API 서비스" class="hero-image">
</div>
</div>
</div>
@@ -48,12 +48,12 @@
<div class="hero-text-content">
<div class="hero-text">
<p class="hero-subtitle">세상의 모든 서비스</p>
<p class="hero-title">광주은행 API가 함께 합니다.</p>
<p class="hero-title">DJBank API가 함께 합니다.</p>
</div>
<a th:href="@{/signup}" class="btn-hero-signup">회원가입하기</a>
</div>
<div class="hero-image-content">
<img th:src="@{/img/hero_image_3.png}" alt="광주은행 API 서비스" class="hero-image">
<img th:src="@{/img/hero_image_3.png}" alt="DJBank API 서비스" class="hero-image">
</div>
</div>
</div>
@@ -156,7 +156,7 @@
<span th:if="${service.groupDesc != null and !#strings.isEmpty(service.groupDesc)}"
th:text="${service.groupDesc}">서비스 설명</span>
<span th:unless="${service.groupDesc != null and !#strings.isEmpty(service.groupDesc)}">
광주은행 API 서비스를 이용해보세요.
DJBank API 서비스를 이용해보세요.
</span>
</p>
<div class="card-illustration">
@@ -178,15 +178,15 @@
<div class="info-content">
<h2 class="info-title">
차별화된 API 서비스,<br>
<span class="title-highlight">광주은행 API Portal</span>
<span class="title-highlight">DJBank API Portal</span>
</h2>
<p class="info-description">
광주은행 API Portal은 기업이 금융 서비스를 편리하게 개발할 수 있도록 차별화된 API와 테스트환경을 제공합니다.
DJBank API Portal은 기업이 금융 서비스를 편리하게 개발할 수 있도록 차별화된 API와 테스트환경을 제공합니다.
</p>
<div class="action-buttons">
<a href="#" class="action-btn action-btn-primary">
처음 만나는 광주은행 API
처음 만나는 DJBank API
</a>
<a href="#" class="action-btn action-btn-secondary">
사업 제휴 문의
@@ -195,7 +195,7 @@
</div>
<div class="info-image">
<img th:src="@{/img/img_api_intro.png}" alt="광주은행 API">
<img th:src="@{/img/img_api_intro.png}" alt="DJBank API">
</div>
</div>
</div>
@@ -208,7 +208,7 @@
<div class="section-header">
<h2 class="section-title">
<span class="title-regular">비지니스의 시작,</span><br>
<span class="title-bold">광주은행 오픈 API가 함께 하겠습니다.</span>
<span class="title-bold">DJBank 오픈 API가 함께 하겠습니다.</span>
</h2>
</div>
<div class="support-grid">
@@ -219,8 +219,8 @@
</div>
<div class="card-content">
<h3>공지사항</h3>
<p class="pc">광주은행 API의 새로운 소식</p>
<p class="mobile">광주은행 API의 <br/>새로운 소식</p>
<p class="pc">DJBank API의 새로운 소식</p>
<p class="mobile">DJBank API의 <br/>새로운 소식</p>
</div>
</a>
@@ -256,7 +256,7 @@
<div class="section-header">
<h2 class="section-title">
<span class="title-top">우리곁의 수많은 서비스들이</span>
<span class="title-highlight">광주은행 오픈 API</span>와 함께하고 있습니다.
<span class="title-highlight">DJBank 오픈 API</span>와 함께하고 있습니다.
</h2>
</div>
<div class="stats-cards">
@@ -320,7 +320,7 @@
<div class="cta-background"></div>
<div class="container">
<div class="cta-content">
<h2 class="cta-title">광주은행 API를 지금 바로 만나보세요.</h2>
<h2 class="cta-title">DJBank API를 지금 바로 만나보세요.</h2>
<a th:href="@{/signup}" class="btn-signup-cta">회원가입하기</a>
</div>
</div>
@@ -10,11 +10,11 @@
<div class="signup-selection-card">
<!-- Logo -->
<div class="signup-logo">
<img th:src="@{/img/logo/logo_box.png}" alt="광주은행">
<img th:src="@{/img/logo/logo_box.png}" alt="DJBank">
</div>
<!-- Message -->
<p class="signup-message">광주은행 API Portal 사용을 위해 회원 가입해 주세요.</p>
<p class="signup-message">DJBank API Portal 사용을 위해 회원 가입해 주세요.</p>
<!-- Signup Buttons -->
<div class="signup-buttons">
@@ -28,7 +28,7 @@
</p>
<p class="info-text" style="margin-top: 16px;">
<strong th:text="${orgName}"></strong>에서
광주은행 API Portal 법인회원으로 초대하였습니다.
DJBank API Portal 법인회원으로 초대하였습니다.
</p>
</div>
@@ -36,7 +36,7 @@
<div class="result-info-box">
<p class="info-text">
<strong th:text="${orgName}"></strong>에서
광주은행 API Portal 법인회원으로 초대하였습니다.
DJBank API Portal 법인회원으로 초대하였습니다.
</p>
<p class="info-text" style="margin-top: 8px;">
초대를 수락하시면 법인회원으로 전환됩니다.
@@ -11,8 +11,8 @@
<h1 class="signup-guide__title">회원 가입 안내</h1>
<div class="signup-guide__underline"></div>
<div class="signup-guide__desc">
<p>광주은행 API 개발자 포털에 방문해 주셔서 감사합니다.</p>
<p>광주은행 API 사용을 위해서는 다음과 같은 이용절차로 진행하여야 합니다.</p>
<p>DJBank API 개발자 포털에 방문해 주셔서 감사합니다.</p>
<p>DJBank API 사용을 위해서는 다음과 같은 이용절차로 진행하여야 합니다.</p>
</div>
</div>
@@ -8,7 +8,7 @@
<div class="service-intro">
<!-- 메인 타이틀 섹션 -->
<header class="service-intro__header">
<h1 class="service-intro__title">광주은행 오픈뱅크 플랫폼</h1>
<h1 class="service-intro__title">DJBank 오픈뱅크 플랫폼</h1>
<div class="service-intro__underline"></div>
</header>
@@ -18,7 +18,7 @@
<div class="service-intro__text-column">
<div class="service-intro__card">
<p class="service-intro__desc">
광주은행이 제공하는 오픈API를 활용하여 핀테크 기업들이 새로운 금융서비스를 편리하게 개발할 수 있는 환경입니다.
DJBank이 제공하는 오픈API를 활용하여 핀테크 기업들이 새로운 금융서비스를 편리하게 개발할 수 있는 환경입니다.
</p>
</div>
<div class="service-intro__card">
@@ -36,7 +36,7 @@
<!-- 오른쪽: 다이어그램 이미지 -->
<div class="service-intro__diagram-column">
<div class="service-intro__diagram-card">
<img th:src="@{/img/service/intro_diagram.png}" alt="광주은행 오픈뱅크 플랫폼 구성도" class="service-intro__diagram-img">
<img th:src="@{/img/service/intro_diagram.png}" alt="DJBank 오픈뱅크 플랫폼 구성도" class="service-intro__diagram-img">
</div>
</div>
</div>
@@ -6,7 +6,7 @@
<div class="footer-content">
<!-- Left Section -->
<div class="footer-left">
<img src="/img/logo/logo.png" alt="광주은행" class="footer-logo">
<img src="/img/logo/logo.png" alt="DJBank" class="footer-logo">
<div class="footer-links">
<a th:href="@{/agreements/terms}" class="footer-link">이용약관</a>
<span class="footer-separator"></span>
@@ -19,10 +19,10 @@
<div class="footer-right">
<div class="footer-related-sites">
<select class="related-sites-select">
<option>광주은행 관련 사이트</option>
<option>광주은행 홈페이지</option>
<option>광주은행 인터넷뱅킹</option>
<option>광주은행 모바일뱅킹</option>
<option>DJBank 관련 사이트</option>
<option>DJBank 홈페이지</option>
<option>DJBank 인터넷뱅킹</option>
<option>DJBank 모바일뱅킹</option>
</select>
</div>
<p class="footer-contact">고객센터 1588-3388</p>
@@ -23,7 +23,7 @@
<div class="header-left">
<div class="logo-wrapper">
<a th:href="@{/}" class="logo-link">
<img src="/img/logo/logo.png" alt="광주은행" class="logo" width="114" height="22">
<img src="/img/logo/logo.png" alt="DJBank" class="logo" width="114" height="22">
</a>
<a th:href="@{/}" class="logo-text">API Portal</a>
</div>
@@ -96,7 +96,7 @@
<div class="mobile-header">
<div class="mobile-left">
<a th:href="@{/}" class="mobile-logo-link">
<img src="/img/logo/logo.png" alt="광주은행" class="mobile-logo">
<img src="/img/logo/logo.png" alt="DJBank" class="mobile-logo">
</a>
<a th:href="@{/}" class="mobile-logo-text">API Portal</a>
</div>
@@ -122,7 +122,7 @@
<div class="drawer-header">
<div class="drawer-header-left">
<a th:href="@{/}" class="drawer-logo-link">
<img th:src="@{/img/logo/logo.png}" alt="광주은행" class="drawer-logo">
<img th:src="@{/img/logo/logo.png}" alt="DJBank" class="drawer-logo">
</a>
<span class="drawer-logo-text">API Portal</span>
</div>
@@ -143,7 +143,7 @@
<!-- Welcome Section (Anonymous) -->
<div class="drawer-welcome" sec:authorize="isAnonymous()">
<p class="welcome-text">광주은행 API Portal에 오신것을 환영합니다.</p>
<p class="welcome-text">DJBank API Portal에 오신것을 환영합니다.</p>
<div class="welcome-buttons">
<a th:href="@{/signup}" class="btn-drawer-signup">회원가입</a>
<a th:href="@{/login}" class="btn-drawer-login">로그인</a>