diff --git a/.gitignore b/.gitignore index 5214320..2adda4b 100644 --- a/.gitignore +++ b/.gitignore @@ -243,4 +243,5 @@ gradle-gf63.sh eapim-admin-kjb/ .claude -*.report.md \ No newline at end of file +*.report.md +*.claude.md \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index 1d04763..881e98d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,17 @@ -# CLAUDE.md +# AI-Assisted Development Guide -이 파일은 Claude Code (claude.ai/code)가 이 저장소의 코드를 작업할 때 참고할 가이드를 제공합니다. +이 문서는 AI 어시스턴트가 이 저장소의 코드를 이해하고 기여하는 데 필요한 가이드를 제공합니다. + +## 프로젝트 주요 특징 + +AI 어시스턴트가 작업을 시작하기 전에 반드시 이해해야 할 핵심적인 특징들입니다. + +- **하이브리드 데이터 액세스**: 이 프로젝트는 **JPA(Hibernate)와 iBATIS를 함께 사용**합니다. + - **신규 기능**: 항상 **JPA**와 Spring Data 리포지토리를 사용해야 합니다. + - **레거시 코드**: 기존 iBATIS (`*.xml` 매퍼) 코드를 수정할 때는 해당 패턴을 따라야 합니다. +- **멀티 모듈 Gradle 프로젝트**: `settings.gradle`에 정의된 것처럼 여러 하위 모듈(`elink-online-*`, `kjb-*` 등)로 구성되어 있습니다. 특정 기능은 다른 모듈에 위치할 수 있습니다. +- **QueryDSL 코드 생성**: 빌드 시 `QueryDSL`을 사용하여 Q-class가 자동으로 생성됩니다. IDE에서 엔티티를 찾을 수 없다고 표시되면, `kjb-gradle.sh compileJava`를 먼저 실행하여 코드를 생성해야 합니다. +- **고객사별 커스터마이징**: `ext.kjb` 또는 `custom` 패키지는 특정 고객사(광주은행)를 위한 코드를 포함하므로, 일반적인 기능 수정 시에는 주의가 필요합니다. ## 프로젝트 개요 @@ -27,48 +38,86 @@ eLink EMS (eLink Management System)는 eLink의 웹 기반 관리 서비스로, ## 빌드 및 개발 명령어 ### 빌드 명령어 + +**⚠️ 중요**: 환경변수 문제로 인해 `gradle` 대신 `kjb-gradle.sh` 스크립트를 사용해야 합니다. +- 스크립트 위치: `/c/eactive/workspaces/shell-scripts/kjb-gradle.sh` +- PATH에 등록되어 있으므로 바로 `kjb-gradle.sh` 명령어 사용 가능 + ```bash # 표준 빌드 -gradle build +kjb-gradle.sh build # Weblogic 배포용 빌드 (테스트 제외) -gradle build -x test -Pprofile=weblogic +kjb-gradle.sh build -x test -Pprofile=weblogic # WAR 파일 빌드 -gradle war +kjb-gradle.sh war # 클린 빌드 -gradle clean build +kjb-gradle.sh clean build ``` ### 테스트 실행 ```bash # 모든 테스트 실행 -gradle test +kjb-gradle.sh test # 특정 테스트 클래스 실행 -gradle test --tests "com.example.ClassName" +kjb-gradle.sh test --tests "com.example.ClassName" # 특정 테스트 패키지 실행 (JUnit 플랫폼 사용) -gradle test --tests "com.eactive.eai.rms.*" +kjb-gradle.sh test --tests "com.eactive.eai.rms.*" ``` ### 개발 태스크 ```bash # 패키징 없이 클래스만 컴파일 -gradle classes +kjb-gradle.sh classes # QueryDSL Q-classes 및 기타 애노테이션 생성 -gradle compileJava +kjb-gradle.sh compileJava # 의존성 트리 보기 -gradle dependencies +kjb-gradle.sh dependencies # 사용 가능한 모든 태스크 목록 -gradle tasks --all +kjb-gradle.sh tasks --all ``` +## 로컬 개발 빠른 시작 + +새로운 환경에서 프로젝트를 처음 설정하고 실행하는 권장 절차입니다. + +1. **IDE 설정 파일 생성 (최초 1회)** + ```bash + # IntelliJ IDEA 사용 시 + kjb-gradle.sh idea + + # Eclipse 사용 시 + kjb-gradle.sh eclipse + ``` + +2. **QueryDSL 등 소스 코드 생성** + ```bash + kjb-gradle.sh compileJava + ``` + +3. **전체 빌드 및 테스트 실행** + ```bash + kjb-gradle.sh build + ``` + +4. **IDE에서 프로젝트 열기** + - `kjb-gradle.sh idea` 또는 `kjb-gradle.sh eclipse` 실행 후, IDE에서 프로젝트를 엽니다. + +5. **실행 구성(Run Configuration) 설정** + - 사용하는 WAS(Tomcat 등)에 `eapim-admin` 프로젝트를 배포하도록 설정합니다. + - **VM Options**에 위에 명시된 "필수 환경 변수 (Tomcat)"를 모두 추가합니다. + +6. **서버 실행** + - IDE에서 설정한 실행 구성을 시작하여 서버를 실행합니다. + ## 아키텍처 및 모듈 의존성 ### 멀티 모듈 구조 @@ -111,7 +160,7 @@ eapim-admin (root project) 이 프로젝트는 **Gradle과 Eclipse 애노테이션 프로세서 모두를 사용**하므로, Q-classes가 **두 위치에 생성**됩니다: -1. **`build/generated/java/`** - `gradle compileJava` 또는 `gradle build` 실행 시 Gradle이 생성 +1. **`build/generated/java/`** - `kjb-gradle.sh compileJava` 또는 `kjb-gradle.sh build` 실행 시 Gradle이 생성 2. **`WebContent/generated/`** - Eclipse IDE에서 빌드 시 Eclipse APT가 생성 **이는 예상된 동작이며 의도적입니다.** 두 디렉토리 모두 `.gitignore`에 포함되어 있으며 커밋해서는 안 됩니다. @@ -120,8 +169,8 @@ eapim-admin (root project) - **Gradle 빌드**: `build/generated/java/`의 Q-classes가 자동으로 classpath에 포함됩니다 - **Eclipse IDE**: `WebContent/generated/`의 Q-classes가 자동으로 classpath에 포함됩니다 -- **업데이트 pull 후**: `gradle compileJava`를 실행하거나 Eclipse 프로젝트를 새로고침하여 Q-classes를 재생성합니다 -- **Q-classes IDE 오류 시**: `gradle clean compileJava` 또는 Eclipse → Project → Clean으로 재생성합니다 +- **업데이트 pull 후**: `kjb-gradle.sh compileJava`를 실행하거나 Eclipse 프로젝트를 새로고침하여 Q-classes를 재생성합니다 +- **Q-classes IDE 오류 시**: `kjb-gradle.sh clean compileJava` 또는 Eclipse → Project → Clean으로 재생성합니다 중복이 문제를 일으키지 않는 이유: - 두 도구 모두 동일한 JPA 엔티티에서 동일한 Q-classes를 생성합니다 @@ -132,6 +181,9 @@ eapim-admin (root project) ### 필수 환경 변수 (Tomcat) +다음은 로컬 Tomcat 환경에서 개발 시 필요한 시스템 프로퍼티(-D)입니다. +**설정 방법**: IntelliJ, Eclipse 등 IDE의 실행 구성(Run Configuration)에서 'VM options'에 추가하거나, 사용하는 Tomcat의 `bin` 폴더에 `setenv.bat` (Windows) 또는 `setenv.sh` (Linux/macOS) 파일을 생성하여 아래 내용들을 `CATALINA_OPTS` 또는 `JAVA_OPTS` 환경 변수에 추가합니다. + ``` -Deai.datasource.type=DEV -Dinst.Name=emsSvr99 @@ -202,7 +254,7 @@ eapim-admin (root project) WebLogic용 빌드 시, DefaultServlet 문제를 해결하기 위해 `web.xml`을 `weblogic-web.xml`로 교체하는 `weblogic` 프로필을 사용합니다: ```bash -gradle build -x test -Pprofile=weblogic +kjb-gradle.sh build -x test -Pprofile=weblogic ``` ## 기술 스택 @@ -279,7 +331,7 @@ com.eactive.eai ### Eclipse ```bash -gradle eclipse +kjb-gradle.sh eclipse ``` 다음을 생성합니다: @@ -291,7 +343,7 @@ gradle eclipse ### IntelliJ IDEA ```bash -gradle idea +kjb-gradle.sh idea ``` 또는 IntelliJ에서 직접 "Import Gradle Project"를 사용합니다. diff --git a/GEMINI.md b/GEMINI.md new file mode 100644 index 0000000..60e6004 --- /dev/null +++ b/GEMINI.md @@ -0,0 +1,4 @@ +# GEMINI.md + +이 프로젝트에 대한 주요 정보 및 지침은 `CLAUDE.md` 파일을 참조하십시오. +(For key information and guidelines regarding this project, please refer to the `CLAUDE.md` file.) \ No newline at end of file diff --git a/WebContent/WEB-INF/sqlmap-config/oracle/sqlMapConfigOfOnl.xml b/WebContent/WEB-INF/sqlmap-config/oracle/sqlMapConfigOfOnl.xml index 8e843a1..0355c0c 100644 --- a/WebContent/WEB-INF/sqlmap-config/oracle/sqlMapConfigOfOnl.xml +++ b/WebContent/WEB-INF/sqlmap-config/oracle/sqlMapConfigOfOnl.xml @@ -201,4 +201,7 @@ + + + \ No newline at end of file diff --git a/WebContent/jsp/onl/admin/httpouttlsinfo/httpOutTlsInfoManDetail.jsp b/WebContent/jsp/onl/admin/httpouttlsinfo/httpOutTlsInfoManDetail.jsp index 5376062..187304e 100644 --- a/WebContent/jsp/onl/admin/httpouttlsinfo/httpOutTlsInfoManDetail.jsp +++ b/WebContent/jsp/onl/admin/httpouttlsinfo/httpOutTlsInfoManDetail.jsp @@ -234,11 +234,6 @@ var postData = $('#ajaxForm').serializeArray(); $clientId.prop('disabled', true); - - var key = "${param.clientId}"; - - //client 를 먼저 삭제 한 경우를 위해 mTls info 삭제 가능하도록 함. - postData.push({name: "clientId", value: key}); postData.push({name: "cmd", value: "DELETE"}); diff --git a/WebContent/jsp/onl/transaction/apim/apiInterfaceManDetail.jsp b/WebContent/jsp/onl/transaction/apim/apiInterfaceManDetail.jsp index 62702a9..a87c12f 100644 --- a/WebContent/jsp/onl/transaction/apim/apiInterfaceManDetail.jsp +++ b/WebContent/jsp/onl/transaction/apim/apiInterfaceManDetail.jsp @@ -313,9 +313,9 @@ return name + '=' + value; }).join(';'); if(headerValues.length > 0){ - $("#headerRoutingButton").text('Headers ['+label+']'); + $("#headerRoutingButton").text('MessageKey ['+label+']'); }else{ - $("#headerRoutingButton").text('HTTP 헤더 라우팅 정보 없음'); + $("#headerRoutingButton").text('MessageKey 라우팅 정보 없음'); } } @@ -382,7 +382,7 @@ '' + '' + '
' + - '' + + '' + '
' + ''; $('#headerPairs').append(newPairHtml); @@ -1632,7 +1632,7 @@