fix: 프로젝트 최상위 각종 설정 파일(gradlew 등)에 잘못 추가되었던 프로퍼티 내용 완전 제거
This commit is contained in:
27
.gitattributes
vendored
27
.gitattributes
vendored
@@ -1,12 +1,12 @@
|
|||||||
# 기본값: ëª¨ë“ í…<C3AD>스트 파ì<C592>¼ CRLF (Windows 개발 환경)
|
# 湲곕낯媛? 紐⑤뱺 ?띿뒪???뚯씪 CRLF (Windows 媛쒕컻 ?섍꼍)
|
||||||
* text=auto eol=crlf
|
* text=auto eol=crlf
|
||||||
|
|
||||||
# Shell 스í<EFBFBD>¬ë¦½íŠ¸ëŠ” LF ê³ ì • (Linux CI/CD 실행 환경)
|
# Shell ?ㅽ겕由쏀듃??LF 怨좎젙 (Linux CI/CD ?ㅽ뻾 ?섍꼍)
|
||||||
*.sh text eol=lf
|
*.sh text eol=lf
|
||||||
mvnw text eol=lf
|
mvnw text eol=lf
|
||||||
gradlew text eol=lf
|
gradlew text eol=lf
|
||||||
|
|
||||||
# ë°”ì<EFBFBD>´ë„ˆë¦¬ 파ì<C592>¼ (줄바꿈 변환 ì œì™¸)
|
# 諛붿씠?덈━ ?뚯씪 (以꾨컮轅?蹂???쒖쇅)
|
||||||
*.jar binary
|
*.jar binary
|
||||||
*.war binary
|
*.war binary
|
||||||
*.ear binary
|
*.ear binary
|
||||||
@@ -23,24 +23,3 @@ gradlew text eol=lf
|
|||||||
*.pdf binary
|
*.pdf binary
|
||||||
*.zip binary
|
*.zip binary
|
||||||
*.tar.gz binary
|
*.tar.gz binary
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (°³¹ß ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (Å×½ºÆ® ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (¿î¿µ ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
27
.gitignore
vendored
27
.gitignore
vendored
@@ -1,4 +1,4 @@
|
|||||||
# ===== 빌드 결과물 =====
|
# ===== 鍮뚮뱶 寃곌낵臾?=====
|
||||||
target/
|
target/
|
||||||
!**/src/main/**/target/
|
!**/src/main/**/target/
|
||||||
!**/src/test/**/target/
|
!**/src/test/**/target/
|
||||||
@@ -9,7 +9,7 @@ target/
|
|||||||
*.ear
|
*.ear
|
||||||
*.nar
|
*.nar
|
||||||
|
|
||||||
# ===== 로그 =====
|
# ===== 濡쒓렇 =====
|
||||||
*.log
|
*.log
|
||||||
logs/
|
logs/
|
||||||
spring-shell.log
|
spring-shell.log
|
||||||
@@ -61,27 +61,6 @@ build/
|
|||||||
Thumbs.db
|
Thumbs.db
|
||||||
ehthumbs.db
|
ehthumbs.db
|
||||||
|
|
||||||
# ===== í™˜ê²½ì„¤ì • (민ê°<C3AA>ì •ë³´ 분리 시) =====
|
# ===== ?섍꼍?ㅼ젙 (誘쇨컧?뺣낫 遺꾨━ ?? =====
|
||||||
# application-local.properties
|
# application-local.properties
|
||||||
# application-secret.properties
|
# application-secret.properties
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (°³¹ß ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (Å×½ºÆ® ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (¿î¿µ ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
@@ -12,14 +12,14 @@ public class AddJavadoc {
|
|||||||
"/**\n" +
|
"/**\n" +
|
||||||
" * @package %s\n" +
|
" * @package %s\n" +
|
||||||
" * @className %s\n" +
|
" * @className %s\n" +
|
||||||
" * @description AX HUB 시스템 처리 í<>´ëž˜ìФ\n" +
|
" * @description AX HUB ?쒖뒪??泥섎━ ?대옒??n" +
|
||||||
" * @author 김형ì‹<EFBFBD>\n" +
|
" * @author 源?뺤떇\n" +
|
||||||
" * @create 2026.09.01\n" +
|
" * @create 2026.09.01\n" +
|
||||||
" * <pre>\n" +
|
" * <pre>\n" +
|
||||||
" * ---------- ê°œì •ì<EFBFBD>´ë ¥ ----------\n" +
|
" * ---------- 媛쒖젙?대젰 ----------\n" +
|
||||||
" * ìˆ˜ì •ì<EFBFBD>¼ ìˆ˜ì •ìž<C3AC> ìˆ˜ì •ë‚´ìš©\n" +
|
" * ?섏젙?? ?섏젙?? ?섏젙?댁슜\n" +
|
||||||
" * ---------- -------- ---------------------------\n" +
|
" * ---------- -------- ---------------------------\n" +
|
||||||
" * 2026.09.01 김형ì‹<EFBFBD> 최초ìƒ<C3AC>성\n" +
|
" * 2026.09.01 源?뺤떇 理쒖큹?앹꽦\n" +
|
||||||
" * \n" +
|
" * \n" +
|
||||||
" * </pre>\n" +
|
" * </pre>\n" +
|
||||||
" */";
|
" */";
|
||||||
@@ -50,7 +50,7 @@ public class AddJavadoc {
|
|||||||
List<String> lines = Files.readAllLines(file);
|
List<String> lines = Files.readAllLines(file);
|
||||||
String content = String.join("\n", lines);
|
String content = String.join("\n", lines);
|
||||||
|
|
||||||
if (content.contains("---------- ê°œì •ì<EFBFBD>´ë ¥ ----------") || content.contains("@className")) {
|
if (content.contains("---------- 媛쒖젙?대젰 ----------") || content.contains("@className")) {
|
||||||
System.out.println("Skipping (already has javadoc): " + file);
|
System.out.println("Skipping (already has javadoc): " + file);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -101,24 +101,3 @@ public class AddJavadoc {
|
|||||||
System.out.println("Updated: " + file);
|
System.out.println("Updated: " + file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (°³¹ß ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (Å×½ºÆ® ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (¿î¿µ ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
37
Dockerfile
37
Dockerfile
@@ -1,51 +1,30 @@
|
|||||||
# 1. 빌드 환경 (JDK 21)
|
# 1. 鍮뚮뱶 ?섍꼍 (JDK 21)
|
||||||
FROM eclipse-temurin:21-jdk-alpine AS builder
|
FROM eclipse-temurin:21-jdk-alpine AS builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Gradle 래í<EFBFBD>¼ì™€ 소스 복사
|
# Gradle ?섑띁? ?뚯뒪 蹂듭궗
|
||||||
COPY gradlew .
|
COPY gradlew .
|
||||||
COPY gradle gradle
|
COPY gradle gradle
|
||||||
COPY build.gradle settings.gradle ./
|
COPY build.gradle settings.gradle ./
|
||||||
COPY src src
|
COPY src src
|
||||||
|
|
||||||
# 권한 부여 ë°<C3AB> 빌드 (테스트 ì œì™¸)
|
# 沅뚰븳 遺??諛?鍮뚮뱶 (?뚯뒪???쒖쇅)
|
||||||
RUN chmod +x gradlew
|
RUN chmod +x gradlew
|
||||||
RUN ./gradlew clean build -x test
|
RUN ./gradlew clean build -x test
|
||||||
|
|
||||||
# 2. 실행 환경 (JRE 21)
|
# 2. ?ㅽ뻾 ?섍꼍 (JRE 21)
|
||||||
FROM eclipse-temurin:21-jre-alpine
|
FROM eclipse-temurin:21-jre-alpine
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 타임존 ì„¤ì • (í•œêµ ì‹œê°„)
|
# ??꾩〈 ?ㅼ젙 (?쒓뎅 ?쒓컙)
|
||||||
RUN apk add --no-cache tzdata
|
RUN apk add --no-cache tzdata
|
||||||
ENV TZ=Asia/Seoul
|
ENV TZ=Asia/Seoul
|
||||||
|
|
||||||
# 빌드ë<EFBFBD>œ JAR 파ì<C592>¼ 복사
|
# 鍮뚮뱶??JAR ?뚯씪 蹂듭궗
|
||||||
COPY --from=builder /app/build/libs/*.jar app.jar
|
COPY --from=builder /app/build/libs/*.jar app.jar
|
||||||
|
|
||||||
# 기본 í<>¬íЏ 노출
|
# 湲곕낯 ?ы듃 ?몄텧
|
||||||
EXPOSE 8081
|
EXPOSE 8081
|
||||||
|
|
||||||
# 컨테ì<EFBFBD>´ë„ˆ 실행 시 JAR 실행
|
# 而⑦뀒?대꼫 ?ㅽ뻾 ??JAR ?ㅽ뻾
|
||||||
ENTRYPOINT ["java", "-jar", "app.jar"]
|
ENTRYPOINT ["java", "-jar", "app.jar"]
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (°³¹ß ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (Å×½ºÆ® ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (¿î¿µ ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
22
HELP.md
22
HELP.md
@@ -29,25 +29,3 @@ Due to Maven's design, elements are inherited from the parent POM to the project
|
|||||||
While most of the inheritance is fine, it also inherits unwanted elements like `<license>` and `<developers>` from the parent.
|
While most of the inheritance is fine, it also inherits unwanted elements like `<license>` and `<developers>` from the parent.
|
||||||
To prevent this, the project POM contains empty overrides for these elements.
|
To prevent this, the project POM contains empty overrides for these elements.
|
||||||
If you manually switch to a different parent and actually want the inheritance, you need to remove those overrides.
|
If you manually switch to a different parent and actually want the inheritance, you need to remove those overrides.
|
||||||
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (개발 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (테스트 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (운영 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class McpBridge {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
HttpRequest req = HttpRequest.newBuilder()
|
HttpRequest req = HttpRequest.newBuilder()
|
||||||
// Spring AI MCP Serverì<EFBFBD>˜ ê³µì‹<C3AC> 단ì<C2A8>¼ 엔드í<C593>¬ì<C2AC>¸íЏ
|
// Spring AI MCP Server??怨듭떇 ?⑥씪 ?붾뱶?ъ씤??
|
||||||
.uri(URI.create("http://localhost:8081/mcp"))
|
.uri(URI.create("http://localhost:8081/mcp"))
|
||||||
.header("Content-Type", "application/json")
|
.header("Content-Type", "application/json")
|
||||||
.POST(HttpRequest.BodyPublishers.ofString(line))
|
.POST(HttpRequest.BodyPublishers.ofString(line))
|
||||||
@@ -31,7 +31,7 @@ public class McpBridge {
|
|||||||
System.out.println(response.body());
|
System.out.println(response.body());
|
||||||
System.out.flush();
|
System.out.flush();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// MCP 표준 ì—<C3AC>러 í<>¬ë§·ìœ¼ë¡œ 반환 (ìž„ì<E2809E>˜ë¡œ id 추출 ì œì™¸, 최소한ì<C593>˜ ì—<C3AC>러 ì<>‘답)
|
// MCP ?쒖? ?먮윭 ?щ㎎?쇰줈 諛섑솚 (?꾩쓽濡?id 異붿텧 ?쒖쇅, 理쒖냼?쒖쓽 ?먮윭 ?묐떟)
|
||||||
System.out.println("{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32603,\"message\":\"" + e.getMessage().replace("\"", "\\\"") + "\"}}");
|
System.out.println("{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32603,\"message\":\"" + e.getMessage().replace("\"", "\\\"") + "\"}}");
|
||||||
System.out.flush();
|
System.out.flush();
|
||||||
}
|
}
|
||||||
@@ -41,27 +41,3 @@ public class McpBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (°³¹ß ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (Å×½ºÆ® ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (¿î¿µ ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
191
README.md
191
README.md
@@ -1,198 +1,177 @@
|
|||||||
# AXHUB Backend
|
# AXHUB Backend
|
||||||
|
|
||||||
Spring Boot 기반 AXHUB 관리자 백엔드 API 서버 및 MCP(Model Context Protocol) Gateway / Tool 분산 서버 프로젝트입니다.
|
Spring Boot 湲곕컲 AXHUB 愿由ъ옄 諛깆뿏??API ?쒕쾭 諛?MCP(Model Context Protocol) Gateway / Tool 遺꾩궛 ?쒕쾭 ?꾨줈?앺듃?낅땲??
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 아키텍처 개요 (Architecture Overview)
|
## ?꾪궎?띿쿂 媛쒖슂 (Architecture Overview)
|
||||||
|
|
||||||
AXHUB Backend는 크게 2개의 주요 애플리케이션 계층으로 분리 운영됩니다:
|
AXHUB Backend???ш쾶 2媛쒖쓽 二쇱슂 ?좏뵆由ъ??댁뀡 怨꾩링?쇰줈 遺꾨━ ?댁쁺?⑸땲??
|
||||||
|
|
||||||
1. **MCP Gateway (`AxHubGatewayApplication`)**: 내장된 웹 UI(AI 챗봇, 스캐폴더) 제공 및 외부 LLM(Claude, GPT 등) 서버의 MCP 통신을 받아 내부 Tool 서버들로 분배(라우팅)하는 허브 서버 (포트: 8081)
|
1. **MCP Gateway (`AxHubGatewayApplication`)**: ?댁옣????UI(AI 梨쀫큸, ?ㅼ틦?대뜑) ?쒓났 諛??몃? LLM(Claude, GPT ?? ?쒕쾭??MCP ?듭떊??諛쏆븘 ?대? Tool ?쒕쾭?ㅻ줈 遺꾨같(?쇱슦???섎뒗 ?덈툕 ?쒕쾭 (?ы듃: 8081)
|
||||||
2. **MCP Tool (`AxHubToolApplication`)**: 실제 레거시 시스템(MCI, EAI 등)과 통신하여 비즈니스 로직(결제, 휴가신청 등)을 수행하는 어댑터 서버 (포트: 8082~8085 등 분산 구성 가능)
|
2. **MCP Tool (`AxHubToolApplication`)**: ?ㅼ젣 ?덇굅???쒖뒪??MCI, EAI ??怨??듭떊?섏뿬 鍮꾩쫰?덉뒪 濡쒖쭅(寃곗젣, ?닿??좎껌 ?????섑뻾?섎뒗 ?대뙌???쒕쾭 (?ы듃: 8082~8085 ??遺꾩궛 援ъ꽦 媛??
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 환경 (Environment)
|
## ?섍꼍 (Environment)
|
||||||
|
|
||||||
| 항목 | 버전 |
|
| ??ぉ | 踰꾩쟾 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| Java | 21 |
|
| Java | 21 |
|
||||||
| Spring Boot | 4.0.5 |
|
| Spring Boot | 4.0.5 |
|
||||||
| Build Tool | Gradle |
|
| Build Tool | Gradle |
|
||||||
| 주요 기술 스택 | MyBatis, Lombok, MapStruct, P6Spy |
|
| 二쇱슂 湲곗닠 ?ㅽ깮 | MyBatis, Lombok, MapStruct, P6Spy |
|
||||||
| 데이터베이스 | H2 (in-memory, 로컬 개발용) |
|
| ?곗씠?곕쿋?댁뒪 | H2 (in-memory, 濡쒖뺄 媛쒕컻?? |
|
||||||
| 세션/캐시 저장소 | Redis |
|
| ?몄뀡/罹먯떆 ??μ냼 | Redis |
|
||||||
| **장애 격리 / 제어** | **Resilience4j (RateLimiter, CircuitBreaker, Retry)** |
|
| **?μ븷 寃⑸━ / ?쒖뼱** | **Resilience4j (RateLimiter, CircuitBreaker, Retry)** |
|
||||||
| **메시지 큐** | **Kafka (트래픽 폭주 시 대기열 전환용)** |
|
| **硫붿떆吏 ??* | **Kafka (?몃옒????< ???湲곗뿴 ?꾪솚??** |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ▶ 실행 방법 (How to Run)
|
## ???ㅽ뻾 諛⑸쾿 (How to Run)
|
||||||
|
|
||||||
### 1. Docker Compose를 이용한 전체 실행 (권장)
|
### 1. Docker Compose瑜??댁슜???꾩껜 ?ㅽ뻾 (沅뚯옣)
|
||||||
마이크로서비스 아키텍처 특성상 여러 개의 Tool Pod이 필요하므로, Docker Compose를 이용한 전체 실행을 권장합니다.
|
留덉씠?щ줈?쒕퉬???꾪궎?띿쿂 ?뱀꽦???щ윭 媛쒖쓽 Tool Pod???꾩슂?섎?濡? Docker Compose瑜??댁슜???꾩껜 ?ㅽ뻾??沅뚯옣?⑸땲??
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 전체 시스템(Gateway + Redis + 모든 Tool Pod) 빌드 및 백그라운드 실행
|
# ?꾩껜 ?쒖뒪??Gateway + Redis + 紐⑤뱺 Tool Pod) 鍮뚮뱶 諛?諛깃렇?쇱슫???ㅽ뻾
|
||||||
./gradlew build -x test
|
./gradlew build -x test
|
||||||
docker compose up -d --build
|
docker compose up -d --build
|
||||||
```
|
```
|
||||||
- **Gateway (Chat UI & 라우터)**: `http://localhost:8281`
|
- **Gateway (Chat UI & ?쇱슦??**: `http://localhost:8281`
|
||||||
- Gateway가 뜨면 내장된 챗봇 웹 UI(`http://localhost:8281/chat.html`)에 접속하여 바로 테스트할 수 있습니다.
|
- Gateway媛 ?⑤㈃ ?댁옣??梨쀫큸 ??UI(`http://localhost:8281/chat.html`)???묒냽?섏뿬 諛붾줈 ?뚯뒪?명븷 ???덉뒿?덈떎.
|
||||||
|
|
||||||
### 2. 로컬 개발 시 개별 실행 (IntelliJ / Gradle)
|
### 2. 濡쒖뺄 媛쒕컻 ??媛쒕퀎 ?ㅽ뻾 (IntelliJ / Gradle)
|
||||||
개발 중 특정 모듈만 띄워 디버깅해야 할 경우 아래와 같이 실행합니다.
|
媛쒕컻 以??뱀젙 紐⑤뱢留??꾩썙 ?붾쾭源낇빐????寃쎌슦 ?꾨옒? 媛숈씠 ?ㅽ뻾?⑸땲??
|
||||||
|
|
||||||
- **Gateway 서버 기동:**
|
- **Gateway ?쒕쾭 湲곕룞:**
|
||||||
- `./gradlew :axhub-gateway:bootRun`
|
- `./gradlew :axhub-gateway:bootRun`
|
||||||
- **Tool 서버 기동 (예: other 툴):**
|
- **Tool ?쒕쾭 湲곕룞 (?? other ??:**
|
||||||
- `./gradlew :axhub-tool-other:bootRun`
|
- `./gradlew :axhub-tool-other:bootRun`
|
||||||
- Tool 서버가 기동되면 자동으로 Gateway에 자신을 등록(Auto-Registration)합니다.
|
- Tool ?쒕쾭媛 湲곕룞?섎㈃ ?먮룞?쇰줈 Gateway???먯떊???깅줉(Auto-Registration)?⑸땲??
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🤖 AI Agent 연동 아키텍처 (Spring AI & MCP)
|
## ?쨼 AI Agent ?곕룞 ?꾪궎?띿쿂 (Spring AI & MCP)
|
||||||
|
|
||||||
본 시스템은 **투트랙(Two-Track) AI 연동 아키텍처**를 제공하여 로컬 개발 환경과 프로덕션 환경 모두를 완벽하게 지원합니다.
|
蹂??쒖뒪?쒖? **?ы듃??Two-Track) AI ?곕룞 ?꾪궎?띿쿂**瑜??쒓났?섏뿬 濡쒖뺄 媛쒕컻 ?섍꼍怨??꾨줈?뺤뀡 ?섍꼍 紐⑤몢瑜??꾨꼍?섍쾶 吏?먰빀?덈떎.
|
||||||
|
|
||||||
### 1. 내장형 웹 챗봇 (Spring AI 기반) - NEW! 🎉
|
### 1. ?댁옣????梨쀫큸 (Spring AI 湲곕컲) - NEW! ?럦
|
||||||
가장 빠르고 직관적으로 AI 에이전트를 테스트할 수 있는 내장형 챗봇 화면을 제공합니다. Gateway 서버 자체에 **Spring AI (spring-ai-starter-mcp-server-webmvc)** 가 연동되어 있어 별도의 파이썬 스크립트나 외부 앱 없이도 즉각적인 테스트가 가능합니다.
|
媛??鍮좊Ⅴ怨?吏곴??곸쑝濡?AI ?먯씠?꾪듃瑜??뚯뒪?명븷 ???덈뒗 ?댁옣??梨쀫큸 ?붾㈃???쒓났?⑸땲?? Gateway ?쒕쾭 ?먯껜??**Spring AI (spring-ai-starter-mcp-server-webmvc)** 媛 ?곕룞?섏뼱 ?덉뼱 蹂꾨룄???뚯씠???ㅽ겕由쏀듃???몃? ???놁씠??利됯컖?곸씤 ?뚯뒪?멸? 媛?ν빀?덈떎.
|
||||||
|
|
||||||
- **접속 방법**: Gateway(Docker) 기동 후 브라우저에서 `http://localhost:8281/chat.html` 접속
|
- **?묒냽 諛⑸쾿**: Gateway(Docker) 湲곕룞 ??釉뚮씪?곗??먯꽌 `http://localhost:8281/chat.html` ?묒냽
|
||||||
- **동작 방식**:
|
- **?숈옉 諛⑹떇**:
|
||||||
1. 사용자가 질문을 입력하면 내부 `ChatClient` (Gemini API 등)로 전송
|
1. ?ъ슜?먭? 吏덈Ц???낅젰?섎㈃ ?대? `ChatClient` (Gemini API ??濡??꾩넚
|
||||||
2. Spring AI가 내부 레지스트리의 Tool 목록을 분석하여 필요한 Tool 탐색
|
2. Spring AI媛 ?대? ?덉??ㅽ듃由ъ쓽 Tool 紐⑸줉??遺꾩꽍?섏뿬 ?꾩슂??Tool ?먯깋
|
||||||
3. LLM이 Tool 호출 판단 시, Gateway의 `ExecuteService`를 거쳐 Tool Pod의 기능을 직접 실행
|
3. LLM??Tool ?몄텧 ?먮떒 ?? Gateway??`ExecuteService`瑜?嫄곗퀜 Tool Pod??湲곕뒫??吏곸젒 ?ㅽ뻾
|
||||||
4. 결과를 LLM이 다시 해석하여 사용자에게 자연어로 응답
|
4. 寃곌낵瑜?LLM???ㅼ떆 ?댁꽍?섏뿬 ?ъ슜?먯뿉寃??먯뿰?대줈 ?묐떟
|
||||||
|
|
||||||
### 2. 프로덕션 클라우드 AI (Google Cloud Agent Builder 등) 연동
|
### 2. ?꾨줈?뺤뀡 ?대씪?곕뱶 AI (Google Cloud Agent Builder ?? ?곕룞
|
||||||
실제 라이브 서비스에서 동작하는 클라우드 Agent Builder는 REST API 기반의 OpenAPI Spec을 요구합니다.
|
?ㅼ젣 ?쇱씠釉??쒕퉬?ㅼ뿉???숈옉?섎뒗 ?대씪?곕뱶 Agent Builder??REST API 湲곕컲??OpenAPI Spec???붽뎄?⑸땲??
|
||||||
`axhub-gateway`는 이미 **Agent Builder 규격의 REST API(`/mcp/api/v1/tools/call`)를 네이티브로 제공**하므로, 별도의 브릿지나 어댑터 없이 Endpoint URL과 Swagger(OpenAPI) 문서만 클라우드 콘솔에 등록하면 즉시 라이브 챗봇/에이전트로 서비스할 수 있습니다.
|
`axhub-gateway`???대? **Agent Builder 洹쒓꺽??REST API(`/mcp/api/v1/tools/call`)瑜??ㅼ씠?곕툕濡??쒓났**?섎?濡? 蹂꾨룄??釉뚮┸吏???대뙌???놁씠 Endpoint URL怨?Swagger(OpenAPI) 臾몄꽌留??대씪?곕뱶 肄섏넄???깅줉?섎㈃ 利됱떆 ?쇱씠釉?梨쀫큸/?먯씠?꾪듃濡??쒕퉬?ㅽ븷 ???덉뒿?덈떎.
|
||||||
|
|
||||||
### 3. (Legacy) 로컬 코딩 AI (Cursor, Claude Desktop 등) 연동
|
### 3. (Legacy) 濡쒖뺄 肄붾뵫 AI (Cursor, Claude Desktop ?? ?곕룞
|
||||||
표준 MCP 통신(Stdio)을 요구하는 로컬 AI 에이전트를 위해 자바 기반의 브릿지 스크립트(`McpBridge.java`)를 내장하고 있습니다. 브릿지가 Stdio 요청을 HTTP로 변환하여 로컬 환경의 Gateway로 전달합니다.
|
?쒖? MCP ?듭떊(Stdio)???붽뎄?섎뒗 濡쒖뺄 AI ?먯씠?꾪듃瑜??꾪빐 ?먮컮 湲곕컲??釉뚮┸吏 ?ㅽ겕由쏀듃(`McpBridge.java`)瑜??댁옣?섍퀬 ?덉뒿?덈떎. 釉뚮┸吏媛 Stdio ?붿껌??HTTP濡?蹂?섑븯??濡쒖뺄 ?섍꼍??Gateway濡??꾨떖?⑸땲??
|
||||||
|
|
||||||
- **설정 방법**: IDE의 `mcp_config.json` 설정 파일에 아래와 같이 등록합니다.
|
- **?ㅼ젙 諛⑸쾿**: IDE??`mcp_config.json` ?ㅼ젙 ?뚯씪???꾨옒? 媛숈씠 ?깅줉?⑸땲??
|
||||||
```json
|
```json
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"axhub-gateway": {
|
"axhub-gateway": {
|
||||||
"command": "java",
|
"command": "java",
|
||||||
"args": ["C:/절대경로/axhub-backend-main/McpBridge.java"]
|
"args": ["C:/?덈?寃쎈줈/axhub-backend-main/McpBridge.java"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 비공개 Tool 관리 및 Fallback 연동 (Visibility & Routing)
|
## 鍮꾧났媛?Tool 愿由?諛?Fallback ?곕룞 (Visibility & Routing)
|
||||||
|
|
||||||
저희 시스템은 MSA 보안 및 아키텍처 원칙에 따라 Tool의 **레지스트리 등록 여부(라우팅)**와 **API 노출 여부(가시성)**를 완벽히 분리하여 관리합니다.
|
????쒖뒪?쒖? MSA 蹂댁븞 諛??꾪궎?띿쿂 ?먯튃???곕씪 Tool??**?덉??ㅽ듃由??깅줉 ?щ?(?쇱슦??**? **API ?몄텧 ?щ?(媛?쒖꽦)**瑜??꾨꼍??遺꾨━?섏뿬 愿由ы빀?덈떎.
|
||||||
|
|
||||||
1. **`visible = false`**:
|
1. **`visible = false`**:
|
||||||
레지스트리에 정상적으로 등록되어 게이트웨이가 동적으로 라우팅하지만, 클라이언트에게 제공되는 `/tools/list` API 목록에서는 숨겨집니다.
|
?덉??ㅽ듃由ъ뿉 ?뺤긽?곸쑝濡??깅줉?섏뼱 寃뚯씠?몄썾?닿? ?숈쟻?쇰줈 ?쇱슦?낇븯吏留? ?대씪?댁뼵?몄뿉寃??쒓났?섎뒗 `/tools/list` API 紐⑸줉?먯꽌???④꺼吏묐땲??
|
||||||
2. **`register = false`**:
|
2. **`register = false`**:
|
||||||
내부 레지스트리(Redis)에 툴 정보를 등록하지 않습니다 (외부 레지스트리를 독자적으로 사용할 경우 등).
|
?대? ?덉??ㅽ듃由?Redis)?????뺣낫瑜??깅줉?섏? ?딆뒿?덈떎 (?몃? ?덉??ㅽ듃由щ? ?낆옄?곸쑝濡??ъ슜??寃쎌슦 ??.
|
||||||
이 경우 게이트웨이는 `application.properties`의 `mcp.gateway.fallback.routes` 설정을 참조하여 **Fallback 정적 라우팅**을 수행하므로 연동이 100% 보장됩니다.
|
??寃쎌슦 寃뚯씠?몄썾?대뒗 `application.properties`??`mcp.gateway.fallback.routes` ?ㅼ젙??李몄“?섏뿬 **Fallback ?뺤쟻 ?쇱슦??*???섑뻾?섎?濡??곕룞??100% 蹂댁옣?⑸땲??
|
||||||
|
|
||||||
```java
|
```java
|
||||||
@McpFunction(
|
@McpFunction(
|
||||||
name = "secret_tool",
|
name = "secret_tool",
|
||||||
visible = false, // 목록 숨김 여부 (기본값: true)
|
visible = false, // 紐⑸줉 ?④? ?щ? (湲곕낯媛? true)
|
||||||
register = false // 내부 Redis 등록 여부 (기본값: true)
|
register = false // ?대? Redis ?깅줉 ?щ? (湲곕낯媛? true)
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🛡️ 시스템 안정성 및 네트워크 제어 (Resilience & Network)
|
## ?썳截??쒖뒪???덉젙??諛??ㅽ듃?뚰겕 ?쒖뼱 (Resilience & Network)
|
||||||
|
|
||||||
MSA 및 외부 시스템(MCI) 연동 환경의 안정성을 위해 완벽한 3-Tier 방어 체계를 구축했습니다.
|
MSA 諛??몃? ?쒖뒪??MCI) ?곕룞 ?섍꼍???덉젙?깆쓣 ?꾪빐 ?꾨꼍??3-Tier 諛⑹뼱 泥닿퀎瑜?援ъ텞?덉뒿?덈떎.
|
||||||
|
|
||||||
1. **Gateway 라우팅 방어 (Timeout & Fallback):**
|
1. **Gateway ?쇱슦??諛⑹뼱 (Timeout & Fallback):**
|
||||||
- MCP 라우터(`McpRouterController`) 단에 1초 타임아웃을 강제 적용하여 특정 Tool Pod의 응답 지연이 전체 시스템 장애로 이어지는 것을 방지하고 신속하게 정적 Fallback 라우팅으로 전환합니다.
|
- MCP ?쇱슦??`McpRouterController`) ?⑥뿉 1珥???꾩븘?껋쓣 媛뺤젣 ?곸슜?섏뿬 ?뱀젙 Tool Pod???묐떟 吏?곗씠 ?꾩껜 ?쒖뒪???μ븷濡??댁뼱吏??寃껋쓣 諛⑹??섍퀬 ?좎냽?섍쾶 ?뺤쟻 Fallback ?쇱슦?낆쑝濡??꾪솚?⑸땲??
|
||||||
2. **MCI 네트워크 안정화 (HTTP/1.1 Downgrade):**
|
2. **MCI ?ㅽ듃?뚰겕 ?덉젙??(HTTP/1.1 Downgrade):**
|
||||||
- 기존 HTTP/2 사용 시 레거시 시스템 연동 중 간헐적으로 발생하던 `RST_STREAM` 오류를 원천 차단하기 위해, MCI 전용 `HttpEimsSender`에는 고도로 최적화된 **HTTP/1.1 전용 커넥션 풀(Factory)**이 고정 적용되어 네트워크 단절을 방지합니다.
|
- 湲곗〈 HTTP/2 ?ъ슜 ???덇굅???쒖뒪???곕룞 以?媛꾪뿉?곸쑝濡?諛쒖깮?섎뜕 `RST_STREAM` ?ㅻ쪟瑜??먯쿇 李⑤떒?섍린 ?꾪빐, MCI ?꾩슜 `HttpEimsSender`?먮뒗 怨좊룄濡?理쒖쟻?붾맂 **HTTP/1.1 ?꾩슜 而ㅻ꽖???(Factory)**??怨좎젙 ?곸슜?섏뼱 ?ㅽ듃?뚰겕 ?⑥젅??諛⑹??⑸땲??
|
||||||
3. **Resilience4j 기반 트래픽 제어:**
|
3. **Resilience4j 湲곕컲 ?몃옒???쒖뼱:**
|
||||||
- **Gateway 계층 (동적 방어):** Tool 등록 시 제출된 SLA 메타데이터를 기반으로 동적 CircuitBreaker 및 RateLimiter를 가동하며, 한계치 초과 시 Kafka 큐로 비동기 전환합니다.
|
- **Gateway 怨꾩링 (?숈쟻 諛⑹뼱):** Tool ?깅줉 ???쒖텧??SLA 硫뷀??곗씠?곕? 湲곕컲?쇰줈 ?숈쟻 CircuitBreaker 諛?RateLimiter瑜?媛?숉븯硫? ?쒓퀎移?珥덇낵 ??Kafka ?먮줈 鍮꾨룞湲??꾪솚?⑸땲??
|
||||||
- **Tool 계층 (정적 방어):** 레거시 커넥터 내부에 `@CircuitBreaker`, `@RateLimiter` 어노테이션 기반의 장애 전파 차단 로직이 2차적으로 가동됩니다.
|
- **Tool 怨꾩링 (?뺤쟻 諛⑹뼱):** ?덇굅??而ㅻ꽖???대???`@CircuitBreaker`, `@RateLimiter` ?대끂?뚯씠??湲곕컲???μ븷 ?꾪뙆 李⑤떒 濡쒖쭅??2李⑥쟻?쇰줈 媛?숇맗?덈떎.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 모듈(Pod) 및 Tool 코드 자동 생성 (Scaffolders)
|
## 紐⑤뱢(Pod) 諛?Tool 肄붾뱶 ?먮룞 ?앹꽦 (Scaffolders)
|
||||||
|
|
||||||
새로운 도메인의 기능을 추가할 때 발생하는 반복적인 설정(보일러플레이트, 설정 파일 복사 등)을 1초 만에 자동화하기 위해 **AXHUB Developer Portal (Web UI)** 및 **CLI 스캐폴더 2종**을 제공합니다.
|
?덈줈???꾨찓?몄쓽 湲곕뒫??異붽?????諛쒖깮?섎뒗 諛섎났?곸씤 ?ㅼ젙(蹂댁씪?ы뵆?덉씠?? ?ㅼ젙 ?뚯씪 蹂듭궗 ????1珥?留뚯뿉 ?먮룞?뷀븯湲??꾪빐 **AXHUB Developer Portal (Web UI)** 諛?**CLI ?ㅼ틦?대뜑 2醫?*???쒓났?⑸땲??
|
||||||
|
|
||||||
### 1. AXHUB Developer Portal (Web UI) - 가장 추천하는 방식!
|
### 1. AXHUB Developer Portal (Web UI) - 媛??異붿쿇?섎뒗 諛⑹떇!
|
||||||
이제 더 이상 터미널에서 명령어를 칠 필요가 없습니다. Gateway 모듈에 내장된 웹 화면에서 빈칸만 채우면 코드가 마법처럼 찍혀 나옵니다.
|
?댁젣 ???댁긽 ?곕??먯뿉??紐낅졊?대? 移??꾩슂媛 ?놁뒿?덈떎. Gateway 紐⑤뱢???댁옣?????붾㈃?먯꽌 鍮덉뭏留?梨꾩슦硫?肄붾뱶媛 留덈쾿泥섎읆 李랁? ?섏샃?덈떎.
|
||||||
|
|
||||||
1. **접속 방법**: Gateway 서버 기동 후 브라우저에서 `http://localhost:8081/admin/scaffold.html` 접속
|
1. **?묒냽 諛⑸쾿**: Gateway ?쒕쾭 湲곕룞 ??釉뚮씪?곗??먯꽌 `http://localhost:8081/admin/scaffold.html` ?묒냽
|
||||||
2. **Pod (모듈) 생성 탭**: 모듈명(예: hr)과 포트만 입력하면 독립적인 Spring Boot 모듈이 디렉토리부터 빌드 스크립트까지 완벽히 생성됩니다.
|
2. **Pod (紐⑤뱢) ?앹꽦 ??*: 紐⑤뱢紐??? hr)怨??ы듃留??낅젰?섎㈃ ?낅┰?곸씤 Spring Boot 紐⑤뱢???붾젆?좊━遺??鍮뚮뱶 ?ㅽ겕由쏀듃源뚯? ?꾨꼍???앹꽦?⑸땲??
|
||||||
3. **Tool (기능) 생성 탭**: 생성된 모듈에 새로운 툴(서비스/DTO) 코드를 자동으로 주입합니다.
|
3. **Tool (湲곕뒫) ?앹꽦 ??*: ?앹꽦??紐⑤뱢???덈줈?????쒕퉬??DTO) 肄붾뱶瑜??먮룞?쇰줈 二쇱엯?⑸땲??
|
||||||
|
|
||||||
### 2. CLI 스캐폴더 (기존 터미널 방식)
|
### 2. CLI ?ㅼ틦?대뜑 (湲곗〈 ?곕???諛⑹떇)
|
||||||
웹 화면을 사용할 수 없는 환경이거나 터미널이 익숙한 경우, 아래 명령어를 통해 CLI 마법사를 사용할 수 있습니다.
|
???붾㈃???ъ슜?????녿뒗 ?섍꼍?닿굅???곕??먯씠 ?듭닕??寃쎌슦, ?꾨옒 紐낅졊?대? ?듯빐 CLI 留덈쾿?щ? ?ъ슜?????덉뒿?덈떎.
|
||||||
|
|
||||||
### 1⃣ 새로운 Pod(모듈) 전체를 생성할 때: `PodScaffolder`
|
### 1???덈줈??Pod(紐⑤뱢) ?꾩껜瑜??앹꽦???? `PodScaffolder`
|
||||||
새로운 도메인(예: 결제, HR)을 위한 완전히 독립적인 Spring Boot 모듈을 생성합니다. 폴더 구조, 빌드 스크립트, 각종 프로퍼티 및 도커 설정까지 완벽하게 세팅됩니다.
|
?덈줈???꾨찓???? 寃곗젣, HR)???꾪븳 ?꾩쟾???낅┰?곸씤 Spring Boot 紐⑤뱢???앹꽦?⑸땲?? ?대뜑 援ъ“, 鍮뚮뱶 ?ㅽ겕由쏀듃, 媛곸쥌 ?꾨줈?쇳떚 諛??꾩빱 ?ㅼ젙源뚯? ?꾨꼍?섍쾶 ?명똿?⑸땲??
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 사용법: javac로 컴파일 후 실행
|
# ?ъ슜踰? javac濡?而댄뙆?????ㅽ뻾
|
||||||
javac -encoding UTF-8 axhub-common/src/main/java/io/shinhanlife/axhub/common/util/PodScaffolder.java
|
javac -encoding UTF-8 axhub-common/src/main/java/io/shinhanlife/axhub/common/util/PodScaffolder.java
|
||||||
java -cp axhub-common/src/main/java io.shinhanlife.axhub.common.util.PodScaffolder [모듈명] [포트번호]
|
java -cp axhub-common/src/main/java io.shinhanlife.axhub.common.util.PodScaffolder [紐⑤뱢紐? [?ы듃踰덊샇]
|
||||||
|
|
||||||
# 실행 예시 (axhub-tool-hr 모듈을 8086 포트로 생성)
|
# ?ㅽ뻾 ?덉떆 (axhub-tool-hr 紐⑤뱢??8086 ?ы듃濡??앹꽦)
|
||||||
java -cp axhub-common/src/main/java io.shinhanlife.axhub.common.util.PodScaffolder hr 8086
|
java -cp axhub-common/src/main/java io.shinhanlife.axhub.common.util.PodScaffolder hr 8086
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2⃣ 생성된 모듈에 새로운 툴(Function)을 추가할 때: `ToolScaffolder`
|
### 2???앹꽦??紐⑤뱢???덈줈????Function)??異붽????? `ToolScaffolder`
|
||||||
어노테이션(`@McpTool`, `@McpFunction`)이 완벽히 달린 Service와 입출력 DTO 코드를 지정된 모듈 패키지 룰에 맞춰 자동 생성합니다.
|
?대끂?뚯씠??`@McpTool`, `@McpFunction`)???꾨꼍???щ┛ Service? ?낆텧??DTO 肄붾뱶瑜?吏?뺣맂 紐⑤뱢 ?⑦궎吏 猷곗뿉 留욎떠 ?먮룞 ?앹꽦?⑸땲??
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 사용법: javac로 컴파일 후 실행
|
# ?ъ슜踰? javac濡?而댄뙆?????ㅽ뻾
|
||||||
javac -encoding UTF-8 axhub-common/src/main/java/io/shinhanlife/axhub/common/util/ToolScaffolder.java
|
javac -encoding UTF-8 axhub-common/src/main/java/io/shinhanlife/axhub/common/util/ToolScaffolder.java
|
||||||
java -cp axhub-common/src/main/java io.shinhanlife.axhub.common.util.ToolScaffolder [Tool이름] [인터페이스ID] "[기능설명]" "[그룹명]" "[통신방식]" "[모듈명]"
|
java -cp axhub-common/src/main/java io.shinhanlife.axhub.common.util.ToolScaffolder [Tool?대쫫] [?명꽣?섏씠?짪D] "[湲곕뒫?ㅻ챸]" "[洹몃9紐?" "[?듭떊諛⑹떇]" "[紐⑤뱢紐?"
|
||||||
|
|
||||||
# 실행 예시 (payment 모듈에 결제 승인 기능 추가)
|
# ?ㅽ뻾 ?덉떆 (payment 紐⑤뱢??寃곗젣 ?뱀씤 湲곕뒫 異붽?)
|
||||||
java -cp axhub-common/src/main/java io.shinhanlife.axhub.common.util.ToolScaffolder PaymentApproval PAY_001 "결제 승인 처리 기능" "COMMON" "HTTP" "axhub-tool-payment"
|
java -cp axhub-common/src/main/java io.shinhanlife.axhub.common.util.ToolScaffolder PaymentApproval PAY_001 "寃곗젣 ?뱀씤 泥섎━ 湲곕뒫" "COMMON" "HTTP" "axhub-tool-payment"
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 패키지 구조 (Package Structure)
|
## ?⑦궎吏 援ъ“ (Package Structure)
|
||||||
|
|
||||||
```text
|
```text
|
||||||
axhub-backend-main (Root)
|
axhub-backend-main (Root)
|
||||||
├── axhub-gateway # MCP 라우팅 허브 서버 (외부 LLM과 통신 및 Tool 분배)
|
?쒋?? axhub-gateway # MCP ?쇱슦???덈툕 ?쒕쾭 (?몃? LLM怨??듭떊 諛?Tool 遺꾨같)
|
||||||
├── axhub-common # 공통 모듈 (Security, Session, Config 등)
|
?쒋?? axhub-common # 怨듯넻 紐⑤뱢 (Security, Session, Config ??
|
||||||
├── axhub-tool-core # Tool 공통 기능 (AbstractMcpToolService, Annotation, Scaffolder)
|
?쒋?? axhub-tool-core # Tool 怨듯넻 湲곕뒫 (AbstractMcpToolService, Annotation, Scaffolder)
|
||||||
├── axhub-tool-email # [Tool] 이메일 발송 특화 어댑터 모듈
|
?쒋?? axhub-tool-email # [Tool] ?대찓??諛쒖넚 ?뱁솕 ?대뙌??紐⑤뱢
|
||||||
├── axhub-tool-sms # [Tool] SMS 발송 특화 어댑터 모듈
|
?쒋?? axhub-tool-sms # [Tool] SMS 諛쒖넚 ?뱁솕 ?대뙌??紐⑤뱢
|
||||||
├── axhub-tool-payment # [Tool] 결제 비즈니스 어댑터 모듈 (Scaffolded)
|
?쒋?? axhub-tool-payment # [Tool] 寃곗젣 鍮꾩쫰?덉뒪 ?대뙌??紐⑤뱢 (Scaffolded)
|
||||||
└── axhub-tool-other # [Tool] 기타 비즈니스(청구, 계약, 고객, HR 등) 어댑터 모듈
|
?붴?? axhub-tool-other # [Tool] 湲고? 鍮꾩쫰?덉뒪(泥?뎄, 怨꾩빟, 怨좉컼, HR ?? ?대뙌??紐⑤뱢
|
||||||
```
|
```
|
||||||
|
|
||||||
*(참고: 기존 단일 모듈 프로젝트에서 마이크로서비스 확장을 위해 모듈별로 분리되었으며, 각 Tool 서버는 독립적으로 확장 및 배포할 수 있습니다.)*
|
*(李멸퀬: 湲곗〈 ?⑥씪 紐⑤뱢 ?꾨줈?앺듃?먯꽌 留덉씠?щ줈?쒕퉬???뺤옣???꾪빐 紐⑤뱢蹂꾨줈 遺꾨━?섏뿀?쇰ʼn, 媛?Tool ?쒕쾭???낅┰?곸쑝濡??뺤옣 諛?諛고룷?????덉뒿?덈떎.)*
|
||||||
|
|
||||||
# --- <20><><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD> EAI/MCI <20><><EFBFBD><EFBFBD> IP <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> ȯ<><C8AF>) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- <20><><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD> EAI/MCI <20><><EFBFBD><EFBFBD> IP <20><><EFBFBD><EFBFBD> (<28><EFBFBD>Ʈ ȯ<><C8AF>) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- <20><><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD> EAI/MCI <20><><EFBFBD><EFBFBD> IP <20><><EFBFBD><EFBFBD> (<28> ȯ<><C8AF>) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
@@ -121,24 +121,3 @@ services:
|
|||||||
- GLOW_COMMUNICATION_EXTMCI_PORT=8080
|
- GLOW_COMMUNICATION_EXTMCI_PORT=8080
|
||||||
- GLOW_COMMUNICATION_EAI_HOST=http://mci-mock
|
- GLOW_COMMUNICATION_EAI_HOST=http://mci-mock
|
||||||
- GLOW_COMMUNICATION_EAI_PORT=8080
|
- GLOW_COMMUNICATION_EAI_PORT=8080
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (개발 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (테스트 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (운영 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
31
gradlew
vendored
31
gradlew
vendored
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copyright 짤 2015-2021 the original authors.
|
# Copyright 짤 2015-2021 the original authors.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@@ -34,10 +34,10 @@
|
|||||||
# Busybox and similar reduced shells will NOT work, because this script
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
# requires all of these POSIX shell features:
|
# requires all of these POSIX shell features:
|
||||||
# * functions;
|
# * functions;
|
||||||
# * expansions 짬$var쨩, 짬${var}쨩, 짬${var:-default}쨩, 짬${var+SET}쨩,
|
# * expansions 짬$var쨩, 짬${var}쨩, 짬${var:-default}쨩, 짬${var+SET}쨩,
|
||||||
# 짬${var#prefix}쨩, 짬${var%suffix}쨩, and 짬$( cmd )쨩;
|
# 짬${var#prefix}쨩, 짬${var%suffix}쨩, and 짬$( cmd )쨩;
|
||||||
# * compound commands having a testable exit status, especially 짬case쨩;
|
# * compound commands having a testable exit status, especially 짬case쨩;
|
||||||
# * various built-in commands including 짬command쨩, 짬set쨩, and 짬ulimit쨩.
|
# * various built-in commands including 짬command쨩, 짬set쨩, and 짬ulimit쨩.
|
||||||
#
|
#
|
||||||
# Important for patching:
|
# Important for patching:
|
||||||
#
|
#
|
||||||
@@ -249,24 +249,3 @@ eval "set -- $(
|
|||||||
)" '"$@"'
|
)" '"$@"'
|
||||||
|
|
||||||
exec "$JAVACMD" "$@"
|
exec "$JAVACMD" "$@"
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (개발 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (테스트 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (운영 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
21
gradlew.bat
vendored
21
gradlew.bat
vendored
@@ -92,24 +92,3 @@ exit /b %EXIT_CODE%
|
|||||||
if "%OS%"=="Windows_NT" endlocal
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
:omega
|
:omega
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (개발 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (테스트 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (운영 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
312
sql.txt
312
sql.txt
@@ -1,7 +1,7 @@
|
|||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- ì <EFBFBD>용시스템명 : ìš´ì˜<C3AC>계(ORACLE)
|
-- ?곸슜?쒖뒪?쒕챸 : ?댁쁺怨?ORACLE)
|
||||||
-- í…Œì<EFBFBD>´ë¸” : ZT_통합코드
|
-- ?뚯씠釉?: ZT_?듯빀肄붾뱶
|
||||||
-- í…Œì<EFBFBD>´ë¸”ID : ZT_UNFC_CD
|
-- ?뚯씠釉봊D : ZT_UNFC_CD
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
CREATE TABLE S_NNZ.ZT_UNFC_CD
|
CREATE TABLE S_NNZ.ZT_UNFC_CD
|
||||||
(
|
(
|
||||||
@@ -30,32 +30,32 @@ TABLESPACE TS_ZT_D01;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
COMMENT ON TABLE S_NNZ.ZT_UNFC_CD IS 'ZT_통합코드';
|
COMMENT ON TABLE S_NNZ.ZT_UNFC_CD IS 'ZT_?듯빀肄붾뱶';
|
||||||
|
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_ID IS '통합코드ID';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_ID IS '?듯빀肄붾뱶ID';
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_NM IS '통합코드명';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_NM IS '?듯빀肄붾뱶紐?;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_HAN_NM IS '통합코드한글명';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_HAN_NM IS '?듯빀肄붾뱶?쒓?紐?;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_ENG_NM IS '통합코드ì˜<EFBFBD>문명';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_ENG_NM IS '?듯빀肄붾뱶?곷Ц紐?;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_DS IS '통합코드설명';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.UNFC_CD_DS IS '?듯빀肄붾뱶?ㅻ챸';
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.META_SYST_CD IS '메타시스템코드';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.META_SYST_CD IS '硫뷀??쒖뒪?쒖퐫??;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.META_DUTJ_TYPE_CD IS 'ë©”íƒ€ì—…ë¬´ìœ í˜•ì½”ë“œ';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.META_DUTJ_TYPE_CD IS '硫뷀??낅Т?좏삎肄붾뱶';
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.PUSE_YN IS '사용여부';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.PUSE_YN IS '?ъ슜?щ?';
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SPPO_UNFC_CD_ID IS 'ìƒ<EFBFBD>위통합코드ID';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SPPO_UNFC_CD_ID IS '?곸쐞?듯빀肄붾뱶ID';
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.DATA_LOAD_DT IS 'ë<EFBFBD>°ì<EFBFBD>´í„°ì <EFBFBD>재ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.DATA_LOAD_DT IS '?곗씠?곗쟻?ъ씪??;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_DT IS '시스템등ë¡<EFBFBD>ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_DT IS '?쒖뒪?쒕벑濡앹씪??;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_PRAF_NO IS '시스템등ë¡<EFBFBD>ì<EFBFBD>¸ì‚¬ë²ˆí˜¸';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_PRAF_NO IS '?쒖뒪?쒕벑濡앹씤?щ쾲??;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_OGNZ_NO IS '시스템등ë¡<EFBFBD>ì¡°ì§<EFBFBD>번호';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_OGNZ_NO IS '?쒖뒪?쒕벑濡앹“吏곷쾲??;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_SYST_CD IS '시스템등ë¡<EFBFBD>시스템코드';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_SYST_CD IS '?쒖뒪?쒕벑濡앹떆?ㅽ뀥肄붾뱶';
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_PRGR_ID IS '시스템등ë¡<EFBFBD>프로그램ID';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_RGI_PRGR_ID IS '?쒖뒪?쒕벑濡앺봽濡쒓렇?쭵D';
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_DT IS '시스템변경ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_DT IS '?쒖뒪?쒕?寃쎌씪??;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_PRAF_NO IS '시스템변경ì<EFBFBD>¸ì‚¬ë²ˆí˜¸';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_PRAF_NO IS '?쒖뒪?쒕?寃쎌씤?щ쾲??;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_OGNZ_NO IS '시스템변경조ì§<EFBFBD>번호';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_OGNZ_NO IS '?쒖뒪?쒕?寃쎌“吏곷쾲??;
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_SYST_CD IS '?쒖뒪?쒕?寃쎌떆?ㅽ뀥肄붾뱶';
|
||||||
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
|
COMMENT ON COLUMN S_NNZ.ZT_UNFC_CD.SYST_CHG_PRGR_ID IS '?쒖뒪?쒕?寃쏀봽濡쒓렇?쭵D';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- 개별권한 Role
|
-- 媛쒕퀎沅뚰븳 Role
|
||||||
GRANT SELECT ON S_NNZ.ZT_UNFC_CD TO RL_A_EAI_NNZ_SEL;
|
GRANT SELECT ON S_NNZ.ZT_UNFC_CD TO RL_A_EAI_NNZ_SEL;
|
||||||
|
|
||||||
GRANT INSERT,UPDATE,DELETE ON S_NNZ.ZT_UNFC_CD TO RL_A_EAI_NNZ_IUD;
|
GRANT INSERT,UPDATE,DELETE ON S_NNZ.ZT_UNFC_CD TO RL_A_EAI_NNZ_IUD;
|
||||||
@@ -90,9 +90,9 @@ ALTER TABLE S_NNZ.ZT_UNFC_CD ADD (
|
|||||||
USING INDEX S_NNZ.PK_ZT_UNFC_CD);
|
USING INDEX S_NNZ.PK_ZT_UNFC_CD);
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- ì <EFBFBD>용시스템명 : 개발계(ORACLE)
|
-- ?곸슜?쒖뒪?쒕챸 : 媛쒕컻怨?ORACLE)
|
||||||
-- í…Œì<EFBFBD>´ë¸” : ZT_통합코드ìƒ<C3AC>세
|
-- ?뚯씠釉?: ZT_?듯빀肄붾뱶?곸꽭
|
||||||
-- í…Œì<EFBFBD>´ë¸”ID : ZT_UNFC_CD_DTPT
|
-- ?뚯씠釉봊D : ZT_UNFC_CD_DTPT
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
CREATE TABLE S_TFG.ZT_UNFC_CD_DTPT
|
CREATE TABLE S_TFG.ZT_UNFC_CD_DTPT
|
||||||
(
|
(
|
||||||
@@ -128,35 +128,35 @@ TABLESPACE TS_TFG_D01;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
COMMENT ON TABLE S_TFG.ZT_UNFC_CD_DTPT IS 'ZT_통합코드ìƒ<EFBFBD>세';
|
COMMENT ON TABLE S_TFG.ZT_UNFC_CD_DTPT IS 'ZT_?듯빀肄붾뱶?곸꽭';
|
||||||
|
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.UNFC_CD_ID IS '통합코드ID';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.UNFC_CD_ID IS '?듯빀肄붾뱶ID';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU IS 'ì½”ë“œìœ íš¨ê°’';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU IS '肄붾뱶?좏슚媛?;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_INQR_SEQ IS 'ì½”ë“œìœ íš¨ê°’ì¡°íšŒìˆœì„œ';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_INQR_SEQ IS '肄붾뱶?좏슚媛믪“?뚯닚??;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_NM IS 'ì½”ë“œìœ íš¨ê°’ëª…';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_NM IS '肄붾뱶?좏슚媛믩챸';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_HNGL_ABR_NM IS 'ì½”ë“œìœ íš¨ê°’í•œê¸€ì•½ì–´ëª…';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_HNGL_ABR_NM IS '肄붾뱶?좏슚媛믫븳湲?쎌뼱紐?;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_ENGC_ABR_NM IS 'ì½”ë“œìœ íš¨ê°’ì˜<EFBFBD>문약어명';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_ENGC_ABR_NM IS '肄붾뱶?좏슚媛믪쁺臾몄빟?대챸';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_HAN_NM IS 'ì½”ë“œìœ íš¨ê°’í•œê¸€ëª…';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_HAN_NM IS '肄붾뱶?좏슚媛믫븳湲紐?;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_ENG_NM IS 'ì½”ë“œìœ íš¨ê°’ì˜<EFBFBD>문명';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_ENG_NM IS '肄붾뱶?좏슚媛믪쁺臾몃챸';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_DS IS 'ì½”ë“œìœ íš¨ê°’ì„¤ëª…';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_VLDT_VALU_DS IS '肄붾뱶?좏슚媛믪꽕紐?;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_ASRT_TYPE_BIT_CD IS 'ì½”ë“œë¶„ë¥˜ìœ í˜•ë¹„íŠ¸ì½”ë“œ';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.CD_ASRT_TYPE_BIT_CD IS '肄붾뱶遺꾨쪟?좏삎鍮꾪듃肄붾뱶';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SPPO_CD_VLDT_VALU IS 'ìƒ<EFBFBD>ìœ„ì½”ë“œìœ íš¨ê°’';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SPPO_CD_VLDT_VALU IS '?곸쐞肄붾뱶?좏슚媛?;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SPPO_UNFC_CD_ID IS 'ìƒ<EFBFBD>위통합코드ID';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SPPO_UNFC_CD_ID IS '?곸쐞?듯빀肄붾뱶ID';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.VLDT_STRT_YMD IS 'ìœ íš¨ì‹œìž‘ì<EFBFBD>¼ìž<EFBFBD>';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.VLDT_STRT_YMD IS '?좏슚?쒖옉?쇱옄';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.VLDT_END_YMD IS 'ìœ íš¨ì¢…ë£Œì<EFBFBD>¼ìž<EFBFBD>';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.VLDT_END_YMD IS '?좏슚醫낅즺?쇱옄';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.USER_DEF_VALU_1 IS '사용ìž<EFBFBD>ì •ì<EFBFBD>˜ê°’1';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.USER_DEF_VALU_1 IS '?ъ슜?먯젙?섍컪1';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.USER_DEF_VALU_2 IS '사용ìž<EFBFBD>ì •ì<EFBFBD>˜ê°’2';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.USER_DEF_VALU_2 IS '?ъ슜?먯젙?섍컪2';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_DT IS '시스템등ë¡<EFBFBD>ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_DT IS '?쒖뒪?쒕벑濡앹씪??;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_PRAF_NO IS '시스템등ë¡<EFBFBD>ì<EFBFBD>¸ì‚¬ë²ˆí˜¸';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_PRAF_NO IS '?쒖뒪?쒕벑濡앹씤?щ쾲??;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_OGNZ_NO IS '시스템등ë¡<EFBFBD>ì¡°ì§<EFBFBD>번호';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_OGNZ_NO IS '?쒖뒪?쒕벑濡앹“吏곷쾲??;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_SYST_CD IS '시스템등ë¡<EFBFBD>시스템코드';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_SYST_CD IS '?쒖뒪?쒕벑濡앹떆?ㅽ뀥肄붾뱶';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_PRGR_ID IS '시스템등ë¡<EFBFBD>프로그램ID';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_RGI_PRGR_ID IS '?쒖뒪?쒕벑濡앺봽濡쒓렇?쭵D';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_DT IS '시스템변경ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_DT IS '?쒖뒪?쒕?寃쎌씪??;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_PRAF_NO IS '시스템변경ì<EFBFBD>¸ì‚¬ë²ˆí˜¸';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_PRAF_NO IS '?쒖뒪?쒕?寃쎌씤?щ쾲??;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_OGNZ_NO IS '시스템변경조ì§<EFBFBD>번호';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_OGNZ_NO IS '?쒖뒪?쒕?寃쎌“吏곷쾲??;
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_SYST_CD IS '?쒖뒪?쒕?寃쎌떆?ㅽ뀥肄붾뱶';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.SYST_CHG_PRGR_ID IS '?쒖뒪?쒕?寃쏀봽濡쒓렇?쭵D';
|
||||||
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.DATA_LOAD_DT IS 'ë<EFBFBD>°ì<EFBFBD>´í„°ì <EFBFBD>재ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN S_TFG.ZT_UNFC_CD_DTPT.DATA_LOAD_DT IS '?곗씠?곗쟻?ъ씪??;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -177,127 +177,107 @@ ALTER TABLE S_TFG.ZT_UNFC_CD_DTPT ADD (
|
|||||||
USING INDEX S_TFG.PK_ZT_UNFC_CD_DTPT);
|
USING INDEX S_TFG.PK_ZT_UNFC_CD_DTPT);
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------
|
||||||
-- ZT_MENU í…Œì<EFBFBD>´ë¸” ìƒ<C3AC>성 (메뉴 기본 ì •ë³´ ì €ìž¥)
|
-- ZT_MENU ?뚯씠釉??앹꽦 (硫붾돱 湲곕낯 ?뺣낫 ???
|
||||||
CREATE TABLE ZT_MENU (
|
CREATE TABLE ZT_MENU (
|
||||||
MENU_ID INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, -- ìž<EFBFBD>ë<EFBFBD>™ ì¦<C3AC>ê°€ ID (PK)
|
MENU_ID INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, -- ?먮룞 利앷? ID (PK)
|
||||||
PARENT_MENU_ID INTEGER, -- 부모 메뉴 ID (FK, NULL 가능 for 루트 메뉴)
|
PARENT_MENU_ID INTEGER, -- 遺紐?硫붾돱 ID (FK, NULL 媛??for 猷⑦듃 硫붾돱)
|
||||||
NAME VARCHAR(100), -- ì»´í<EFBFBD>¬ë„ŒíЏ ì<>´ë¦„ (옵셔ë„<C3AB>)
|
NAME VARCHAR(100), -- 而댄룷?뚰듃 ?대쫫 (?듭뀛??
|
||||||
PATH VARCHAR(255) NOT NULL, -- ë<EFBFBD>¼ìš°íЏ 경로 (필수)
|
PATH VARCHAR(255) NOT NULL, -- ?쇱슦??寃쎈줈 (?꾩닔)
|
||||||
TITLE VARCHAR(100) NOT NULL, -- 메뉴 ì<>´ë¦„ (meta.title, 필수)
|
TITLE VARCHAR(100) NOT NULL, -- 硫붾돱 ?대쫫 (meta.title, ?꾩닔)
|
||||||
ICON VARCHAR(50), -- 메뉴 ì•„ì<E2809E>´ì½˜ (옵셔ë„<C3AB>)
|
ICON VARCHAR(50), -- 硫붾돱 ?꾩씠肄?(?듭뀛??
|
||||||
SHOW_BADGE VARCHAR(1) DEFAULT 'N' CHECK (SHOW_BADGE IN ('Y', 'N')), -- ë°°ì§€ 표시 여부 (Y/N, 옵셔ë„<C3AB>)
|
SHOW_BADGE VARCHAR(1) DEFAULT 'N' CHECK (SHOW_BADGE IN ('Y', 'N')), -- 諛곗? ?쒖떆 ?щ? (Y/N, ?듭뀛??
|
||||||
SHOW_TEXT_BADGE VARCHAR(50), -- í…<EFBFBD>스트 ë°°ì§€ 표시 (옵셔ë„<C3AB>)
|
SHOW_TEXT_BADGE VARCHAR(50), -- ?띿뒪??諛곗? ?쒖떆 (?듭뀛??
|
||||||
IS_HIDE VARCHAR(1) DEFAULT 'N' CHECK (IS_HIDE IN ('Y', 'N')), -- 메뉴 숨김 여부 (Y/N, 옵셔ë„<C3AB>)
|
IS_HIDE VARCHAR(1) DEFAULT 'N' CHECK (IS_HIDE IN ('Y', 'N')), -- 硫붾돱 ?④? ?щ? (Y/N, ?듭뀛??
|
||||||
IS_HIDE_TAB VARCHAR(1) DEFAULT 'N' CHECK (IS_HIDE_TAB IN ('Y', 'N')),-- íƒ ìˆ¨ê¹€ 여부 (Y/N, 옵셔ë„<C3AB>)
|
IS_HIDE_TAB VARCHAR(1) DEFAULT 'N' CHECK (IS_HIDE_TAB IN ('Y', 'N')),-- ???④? ?щ? (Y/N, ?듭뀛??
|
||||||
LINK VARCHAR(255), -- ë§<EFBFBD>í<EFBFBD>¬ (옵셔ë„<C3AB>)
|
LINK VARCHAR(255), -- 留곹겕 (?듭뀛??
|
||||||
IS_IFRAME VARCHAR(1) DEFAULT 'N' CHECK (IS_IFRAME IN ('Y', 'N')), -- iframe 여부 (Y/N, 옵셔ë„<EFBFBD>)
|
IS_IFRAME VARCHAR(1) DEFAULT 'N' CHECK (IS_IFRAME IN ('Y', 'N')), -- iframe ?щ? (Y/N, ?듭뀛??
|
||||||
KEEP_ALIVE VARCHAR(1) DEFAULT 'N' CHECK (KEEP_ALIVE IN ('Y', 'N')), -- ìº<EFBFBD>시 여부 (Y/N, 옵셔ë„<C3AB>)
|
KEEP_ALIVE VARCHAR(1) DEFAULT 'N' CHECK (KEEP_ALIVE IN ('Y', 'N')), -- 罹먯떆 ?щ? (Y/N, ?듭뀛??
|
||||||
ORDER_SEQ INTEGER DEFAULT 0 NOT NULL, -- 메뉴 표시 순서 (ì •ë ¬ìš©, 필수)
|
ORDER_SEQ INTEGER DEFAULT 0 NOT NULL, -- 硫붾돱 ?쒖떆 ?쒖꽌 (?뺣젹?? ?꾩닔)
|
||||||
IS_ACTIVE VARCHAR(1) DEFAULT 'Y' CHECK (IS_ACTIVE IN ('Y', 'N')), -- 활성 여부 (Y/N, 기본 Y)
|
IS_ACTIVE VARCHAR(1) DEFAULT 'Y' CHECK (IS_ACTIVE IN ('Y', 'N')), -- ?쒖꽦 ?щ? (Y/N, 湲곕낯 Y)
|
||||||
SYST_RGI_DT DATE, -- 시스템등ë¡<EFBFBD>ì<EFBFBD>¼ì‹œ
|
SYST_RGI_DT DATE, -- ?쒖뒪?쒕벑濡앹씪??
|
||||||
SYST_RGI_PRAF_NO VARCHAR(50), -- 시스템등ë¡<EFBFBD>ì<EFBFBD>¸ì‚¬ë²ˆí˜¸
|
SYST_RGI_PRAF_NO VARCHAR(50), -- ?쒖뒪?쒕벑濡앹씤?щ쾲??
|
||||||
SYST_RGI_OGNZ_NO VARCHAR(50), -- 시스템등ë¡<EFBFBD>ì¡°ì§<EFBFBD>번호
|
SYST_RGI_OGNZ_NO VARCHAR(50), -- ?쒖뒪?쒕벑濡앹“吏곷쾲??
|
||||||
SYST_RGI_SYST_CD VARCHAR(50), -- 시스템등ë¡<EFBFBD>시스템코드
|
SYST_RGI_SYST_CD VARCHAR(50), -- ?쒖뒪?쒕벑濡앹떆?ㅽ뀥肄붾뱶
|
||||||
SYST_RGI_PRGR_ID VARCHAR(50), -- 시스템등ë¡<EFBFBD>프로그램ID
|
SYST_RGI_PRGR_ID VARCHAR(50), -- ?쒖뒪?쒕벑濡앺봽濡쒓렇?쭵D
|
||||||
SYST_CHG_DT DATE, -- 시스템변경ì<EFBFBD>¼ì‹œ
|
SYST_CHG_DT DATE, -- ?쒖뒪?쒕?寃쎌씪??
|
||||||
SYST_CHG_PRAF_NO VARCHAR(50), -- 시스템변경ì<EFBFBD>¸ì‚¬ë²ˆí˜¸
|
SYST_CHG_PRAF_NO VARCHAR(50), -- ?쒖뒪?쒕?寃쎌씤?щ쾲??
|
||||||
SYST_CHG_OGNZ_NO VARCHAR(50), -- 시스템변경조ì§<EFBFBD>번호
|
SYST_CHG_OGNZ_NO VARCHAR(50), -- ?쒖뒪?쒕?寃쎌“吏곷쾲??
|
||||||
SYST_CHG_SYST_CD VARCHAR(50), -- 시스템변경시스템코드
|
SYST_CHG_SYST_CD VARCHAR(50), -- ?쒖뒪?쒕?寃쎌떆?ㅽ뀥肄붾뱶
|
||||||
SYST_CHG_PRGR_ID VARCHAR(50) -- 시스템변경프로그램ID
|
SYST_CHG_PRGR_ID VARCHAR(50) -- ?쒖뒪?쒕?寃쏀봽濡쒓렇?쭵D
|
||||||
);
|
);
|
||||||
|
|
||||||
-- ì œì•½ ì¡°ê±´ 추가
|
-- ?쒖빟 議곌굔 異붽?
|
||||||
ALTER TABLE ZT_MENU ADD CONSTRAINT FK_ZT_MENU_PARENT FOREIGN KEY (PARENT_MENU_ID) REFERENCES ZT_MENU (MENU_ID) ON DELETE CASCADE; -- 부모 ì‚ì œ 시 ìž<C3AC>ì‹<C3AC>ë<EFBFBD>„ ì‚ì œ (계층 ì‚ì œ ì§€ì›<C3AC>)
|
ALTER TABLE ZT_MENU ADD CONSTRAINT FK_ZT_MENU_PARENT FOREIGN KEY (PARENT_MENU_ID) REFERENCES ZT_MENU (MENU_ID) ON DELETE CASCADE; -- 遺紐???젣 ???먯떇????젣 (怨꾩링 ??젣 吏??
|
||||||
|
|
||||||
-- ì<EFBFBD>¸ë<EFBFBD>±ìФ ìƒ<C3AC>성 (조회 최ì <C3AC>í™”)
|
-- ?몃뜳???앹꽦 (議고쉶 理쒖쟻??
|
||||||
CREATE INDEX IDX_ZT_MENU_PARENT ON ZT_MENU (PARENT_MENU_ID);
|
CREATE INDEX IDX_ZT_MENU_PARENT ON ZT_MENU (PARENT_MENU_ID);
|
||||||
CREATE INDEX IDX_ZT_MENU_PATH ON ZT_MENU (PATH);
|
CREATE INDEX IDX_ZT_MENU_PATH ON ZT_MENU (PATH);
|
||||||
|
|
||||||
-- 컬럼 코멘트 추가
|
-- 而щ읆 肄붾찘??異붽?
|
||||||
COMMENT ON COLUMN ZT_MENU.MENU_ID IS '메뉴 ID (PK)';
|
COMMENT ON COLUMN ZT_MENU.MENU_ID IS '硫붾돱 ID (PK)';
|
||||||
COMMENT ON COLUMN ZT_MENU.PARENT_MENU_ID IS '부모 메뉴 ID (FK)';
|
COMMENT ON COLUMN ZT_MENU.PARENT_MENU_ID IS '遺紐?硫붾돱 ID (FK)';
|
||||||
COMMENT ON COLUMN ZT_MENU.NAME IS 'ì»´í<EFBFBD>¬ë„ŒíЏ ì<>´ë¦„';
|
COMMENT ON COLUMN ZT_MENU.NAME IS '而댄룷?뚰듃 ?대쫫';
|
||||||
COMMENT ON COLUMN ZT_MENU.PATH IS 'ë<EFBFBD>¼ìš°íЏ 경로';
|
COMMENT ON COLUMN ZT_MENU.PATH IS '?쇱슦??寃쎈줈';
|
||||||
COMMENT ON COLUMN ZT_MENU.TITLE IS '메뉴 ì<>´ë¦„';
|
COMMENT ON COLUMN ZT_MENU.TITLE IS '硫붾돱 ?대쫫';
|
||||||
COMMENT ON COLUMN ZT_MENU.ICON IS '메뉴 ì•„ì<E2809E>´ì½˜';
|
COMMENT ON COLUMN ZT_MENU.ICON IS '硫붾돱 ?꾩씠肄?;
|
||||||
COMMENT ON COLUMN ZT_MENU.SHOW_BADGE IS '배지 표시 여부 (Y/N)';
|
COMMENT ON COLUMN ZT_MENU.SHOW_BADGE IS '諛곗? ?쒖떆 ?щ? (Y/N)';
|
||||||
COMMENT ON COLUMN ZT_MENU.SHOW_TEXT_BADGE IS 'í…<EFBFBD>스트 ë°°ì§€ 표시';
|
COMMENT ON COLUMN ZT_MENU.SHOW_TEXT_BADGE IS '?띿뒪??諛곗? ?쒖떆';
|
||||||
COMMENT ON COLUMN ZT_MENU.IS_HIDE IS '메뉴 숨김 여부 (Y/N)';
|
COMMENT ON COLUMN ZT_MENU.IS_HIDE IS '硫붾돱 ?④? ?щ? (Y/N)';
|
||||||
COMMENT ON COLUMN ZT_MENU.IS_HIDE_TAB IS 'íƒ ìˆ¨ê¹€ 여부 (Y/N)';
|
COMMENT ON COLUMN ZT_MENU.IS_HIDE_TAB IS '???④? ?щ? (Y/N)';
|
||||||
COMMENT ON COLUMN ZT_MENU.LINK IS 'ë§<EFBFBD>í<EFBFBD>¬';
|
COMMENT ON COLUMN ZT_MENU.LINK IS '留곹겕';
|
||||||
COMMENT ON COLUMN ZT_MENU.IS_IFRAME IS 'iframe 여부 (Y/N)';
|
COMMENT ON COLUMN ZT_MENU.IS_IFRAME IS 'iframe ?щ? (Y/N)';
|
||||||
COMMENT ON COLUMN ZT_MENU.KEEP_ALIVE IS 'ìº<EFBFBD>시 여부 (Y/N)';
|
COMMENT ON COLUMN ZT_MENU.KEEP_ALIVE IS '罹먯떆 ?щ? (Y/N)';
|
||||||
COMMENT ON COLUMN ZT_MENU.ORDER_SEQ IS '메뉴 표시 순서';
|
COMMENT ON COLUMN ZT_MENU.ORDER_SEQ IS '硫붾돱 ?쒖떆 ?쒖꽌';
|
||||||
COMMENT ON COLUMN ZT_MENU.IS_ACTIVE IS '활성 여부 (Y/N)';
|
COMMENT ON COLUMN ZT_MENU.IS_ACTIVE IS '?쒖꽦 ?щ? (Y/N)';
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_RGI_DT IS '시스템등ë¡<EFBFBD>ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN ZT_MENU.SYST_RGI_DT IS '?쒖뒪?쒕벑濡앹씪??;
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_RGI_PRAF_NO IS '시스템등ë¡<EFBFBD>ì<EFBFBD>¸ì‚¬ë²ˆí˜¸';
|
COMMENT ON COLUMN ZT_MENU.SYST_RGI_PRAF_NO IS '?쒖뒪?쒕벑濡앹씤?щ쾲??;
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_RGI_OGNZ_NO IS '시스템등ë¡<EFBFBD>ì¡°ì§<EFBFBD>번호';
|
COMMENT ON COLUMN ZT_MENU.SYST_RGI_OGNZ_NO IS '?쒖뒪?쒕벑濡앹“吏곷쾲??;
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_RGI_SYST_CD IS '시스템등ë¡<EFBFBD>시스템코드';
|
COMMENT ON COLUMN ZT_MENU.SYST_RGI_SYST_CD IS '?쒖뒪?쒕벑濡앹떆?ㅽ뀥肄붾뱶';
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_RGI_PRGR_ID IS '시스템등ë¡<EFBFBD>프로그램ID';
|
COMMENT ON COLUMN ZT_MENU.SYST_RGI_PRGR_ID IS '?쒖뒪?쒕벑濡앺봽濡쒓렇?쭵D';
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_CHG_DT IS '시스템변경ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN ZT_MENU.SYST_CHG_DT IS '?쒖뒪?쒕?寃쎌씪??;
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_CHG_PRAF_NO IS '시스템변경ì<EFBFBD>¸ì‚¬ë²ˆí˜¸';
|
COMMENT ON COLUMN ZT_MENU.SYST_CHG_PRAF_NO IS '?쒖뒪?쒕?寃쎌씤?щ쾲??;
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_CHG_OGNZ_NO IS '시스템변경조ì§<EFBFBD>번호';
|
COMMENT ON COLUMN ZT_MENU.SYST_CHG_OGNZ_NO IS '?쒖뒪?쒕?寃쎌“吏곷쾲??;
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
|
COMMENT ON COLUMN ZT_MENU.SYST_CHG_SYST_CD IS '?쒖뒪?쒕?寃쎌떆?ㅽ뀥肄붾뱶';
|
||||||
COMMENT ON COLUMN ZT_MENU.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
|
COMMENT ON COLUMN ZT_MENU.SYST_CHG_PRGR_ID IS '?쒖뒪?쒕?寃쏀봽濡쒓렇?쭵D';
|
||||||
|
|
||||||
-- ZT_MENU_AUTH í…Œì<EFBFBD>´ë¸” ìƒ<C3AC>성 (메뉴 권한 목ë¡<C3AB> ì €ìž¥)
|
-- ZT_MENU_AUTH ?뚯씠釉??앹꽦 (硫붾돱 沅뚰븳 紐⑸줉 ???
|
||||||
CREATE TABLE ZT_MENU_AUTH (
|
CREATE TABLE ZT_MENU_AUTH (
|
||||||
AUTH_ID INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, -- ìž<EFBFBD>ë<EFBFBD>™ ì¦<C3AC>ê°€ ID (PK)
|
AUTH_ID INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, -- ?먮룞 利앷? ID (PK)
|
||||||
MENU_ID INTEGER NOT NULL, -- 메뉴 ID (FK)
|
MENU_ID INTEGER NOT NULL, -- 硫붾돱 ID (FK)
|
||||||
TITLE VARCHAR(100) NOT NULL, -- 권한 ì œëª© (e.g., ''추가'', ''편집'')
|
TITLE VARCHAR(100) NOT NULL, -- 沅뚰븳 ?쒕ぉ (e.g., ''異붽?'', ''?몄쭛'')
|
||||||
AUTH_MARK VARCHAR(100) NOT NULL, -- 권한 마í<CB86>¬ (e.g., ''add'', ''edit'')
|
AUTH_MARK VARCHAR(100) NOT NULL, -- 沅뚰븳 留덊겕 (e.g., ''add'', ''edit'')
|
||||||
ORDER_SEQ INTEGER DEFAULT 0 NOT NULL, -- 권한 표시 순서 (ì •ë ¬ìš©)
|
ORDER_SEQ INTEGER DEFAULT 0 NOT NULL, -- 沅뚰븳 ?쒖떆 ?쒖꽌 (?뺣젹??
|
||||||
SYST_RGI_DT DATE, -- 시스템등ë¡<EFBFBD>ì<EFBFBD>¼ì‹œ
|
SYST_RGI_DT DATE, -- ?쒖뒪?쒕벑濡앹씪??
|
||||||
SYST_RGI_PRAF_NO VARCHAR(50), -- 시스템등ë¡<EFBFBD>ì<EFBFBD>¸ì‚¬ë²ˆí˜¸
|
SYST_RGI_PRAF_NO VARCHAR(50), -- ?쒖뒪?쒕벑濡앹씤?щ쾲??
|
||||||
SYST_RGI_OGNZ_NO VARCHAR(50), -- 시스템등ë¡<EFBFBD>ì¡°ì§<EFBFBD>번호
|
SYST_RGI_OGNZ_NO VARCHAR(50), -- ?쒖뒪?쒕벑濡앹“吏곷쾲??
|
||||||
SYST_RGI_SYST_CD VARCHAR(50), -- 시스템등ë¡<EFBFBD>시스템코드
|
SYST_RGI_SYST_CD VARCHAR(50), -- ?쒖뒪?쒕벑濡앹떆?ㅽ뀥肄붾뱶
|
||||||
SYST_RGI_PRGR_ID VARCHAR(50), -- 시스템등ë¡<EFBFBD>프로그램ID
|
SYST_RGI_PRGR_ID VARCHAR(50), -- ?쒖뒪?쒕벑濡앺봽濡쒓렇?쭵D
|
||||||
SYST_CHG_DT DATE, -- 시스템변경ì<EFBFBD>¼ì‹œ
|
SYST_CHG_DT DATE, -- ?쒖뒪?쒕?寃쎌씪??
|
||||||
SYST_CHG_PRAF_NO VARCHAR(50), -- 시스템변경ì<EFBFBD>¸ì‚¬ë²ˆí˜¸
|
SYST_CHG_PRAF_NO VARCHAR(50), -- ?쒖뒪?쒕?寃쎌씤?щ쾲??
|
||||||
SYST_CHG_OGNZ_NO VARCHAR(50), -- 시스템변경조ì§<EFBFBD>번호
|
SYST_CHG_OGNZ_NO VARCHAR(50), -- ?쒖뒪?쒕?寃쎌“吏곷쾲??
|
||||||
SYST_CHG_SYST_CD VARCHAR(50), -- 시스템변경시스템코드
|
SYST_CHG_SYST_CD VARCHAR(50), -- ?쒖뒪?쒕?寃쎌떆?ㅽ뀥肄붾뱶
|
||||||
SYST_CHG_PRGR_ID VARCHAR(50) -- 시스템변경프로그램ID
|
SYST_CHG_PRGR_ID VARCHAR(50) -- ?쒖뒪?쒕?寃쏀봽濡쒓렇?쭵D
|
||||||
);
|
);
|
||||||
|
|
||||||
-- ì œì•½ ì¡°ê±´ 추가
|
-- ?쒖빟 議곌굔 異붽?
|
||||||
ALTER TABLE ZT_MENU_AUTH ADD CONSTRAINT FK_ZT_MENU_AUTH_MENU FOREIGN KEY (MENU_ID) REFERENCES ZT_MENU (MENU_ID) ON DELETE CASCADE; -- 메뉴 ì‚ì œ 시 권한ë<C593>„ ì‚ì œ
|
ALTER TABLE ZT_MENU_AUTH ADD CONSTRAINT FK_ZT_MENU_AUTH_MENU FOREIGN KEY (MENU_ID) REFERENCES ZT_MENU (MENU_ID) ON DELETE CASCADE; -- 硫붾돱 ??젣 ??沅뚰븳????젣
|
||||||
|
|
||||||
-- ì<EFBFBD>¸ë<EFBFBD>±ìФ ìƒ<C3AC>성
|
-- ?몃뜳???앹꽦
|
||||||
CREATE INDEX IDX_ZT_MENU_AUTH_MENU ON ZT_MENU_AUTH (MENU_ID);
|
CREATE INDEX IDX_ZT_MENU_AUTH_MENU ON ZT_MENU_AUTH (MENU_ID);
|
||||||
|
|
||||||
-- 컬럼 코멘트 추가
|
-- 而щ읆 肄붾찘??異붽?
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.AUTH_ID IS '권한 ID (PK)';
|
COMMENT ON COLUMN ZT_MENU_AUTH.AUTH_ID IS '沅뚰븳 ID (PK)';
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.MENU_ID IS '메뉴 ID (FK)';
|
COMMENT ON COLUMN ZT_MENU_AUTH.MENU_ID IS '硫붾돱 ID (FK)';
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.TITLE IS '권한 ì œëª©';
|
COMMENT ON COLUMN ZT_MENU_AUTH.TITLE IS '沅뚰븳 ?쒕ぉ';
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.AUTH_MARK IS '권한 마í<CB86>¬';
|
COMMENT ON COLUMN ZT_MENU_AUTH.AUTH_MARK IS '沅뚰븳 留덊겕';
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.ORDER_SEQ IS '권한 표시 순서';
|
COMMENT ON COLUMN ZT_MENU_AUTH.ORDER_SEQ IS '沅뚰븳 ?쒖떆 ?쒖꽌';
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_DT IS '시스템등ë¡<EFBFBD>ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_DT IS '?쒖뒪?쒕벑濡앹씪??;
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_PRAF_NO IS '시스템등ë¡<EFBFBD>ì<EFBFBD>¸ì‚¬ë²ˆí˜¸';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_PRAF_NO IS '?쒖뒪?쒕벑濡앹씤?щ쾲??;
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_OGNZ_NO IS '시스템등ë¡<EFBFBD>ì¡°ì§<EFBFBD>번호';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_OGNZ_NO IS '?쒖뒪?쒕벑濡앹“吏곷쾲??;
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_SYST_CD IS '시스템등ë¡<EFBFBD>시스템코드';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_SYST_CD IS '?쒖뒪?쒕벑濡앹떆?ㅽ뀥肄붾뱶';
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_PRGR_ID IS '시스템등ë¡<EFBFBD>프로그램ID';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_RGI_PRGR_ID IS '?쒖뒪?쒕벑濡앺봽濡쒓렇?쭵D';
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_DT IS '시스템변경ì<EFBFBD>¼ì‹œ';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_DT IS '?쒖뒪?쒕?寃쎌씪??;
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_PRAF_NO IS '시스템변경ì<EFBFBD>¸ì‚¬ë²ˆí˜¸';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_PRAF_NO IS '?쒖뒪?쒕?寃쎌씤?щ쾲??;
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_OGNZ_NO IS '시스템변경조ì§<EFBFBD>번호';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_OGNZ_NO IS '?쒖뒪?쒕?寃쎌“吏곷쾲??;
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_SYST_CD IS '?쒖뒪?쒕?寃쎌떆?ㅽ뀥肄붾뱶';
|
||||||
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
|
COMMENT ON COLUMN ZT_MENU_AUTH.SYST_CHG_PRGR_ID IS '?쒖뒪?쒕?寃쏀봽濡쒓렇?쭵D';
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (°³¹ß ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (Å×½ºÆ® ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- ½ÅÇѶóÀÌÇÁ EAI/MCI ¿¬°è IP Á¤º¸ (¿î¿µ ȯ°æ) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
BIN
sse_out.txt
BIN
sse_out.txt
Binary file not shown.
@@ -1,22 +1 @@
|
|||||||
{"jsonrpc":"2.0","method":"tools/list","id":1}
|
{"jsonrpc":"2.0","method":"tools/list","id":1}
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (개발 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=D
|
|
||||||
shinhan.integration.eai.url=http://10.176.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.176.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.176.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.176
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (테스트 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=T
|
|
||||||
shinhan.integration.eai.url=http://10.174.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.174.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.174.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.176.32.177
|
|
||||||
|
|
||||||
# --- 신한라이프 EAI/MCI 연계 IP 정보 (운영 환경) ---
|
|
||||||
shinhan.integration.envrTypeCd=R
|
|
||||||
shinhan.integration.eai.url=http://10.172.32.181
|
|
||||||
shinhan.integration.internalMci.url=http://10.172.32.173
|
|
||||||
shinhan.integration.bancaMci.url=http://10.172.32.117
|
|
||||||
shinhan.integration.externalMci.url=http://10.172.32.177
|
|
||||||
|
|||||||
Reference in New Issue
Block a user