diff --git a/GEMINI.md b/GEMINI.md deleted file mode 100644 index 4a307df..0000000 --- a/GEMINI.md +++ /dev/null @@ -1,188 +0,0 @@ -# GEMINI Analysis for IBMS_NEW - -## Project Overview - -This project is the "Ilsan Dong-gu Illegal Building Integrated Management System" (일산 동구 건축물 위법행위 통합관리시스템). It appears to be a web application for government officials to manage and track violations related to illegal buildings. - -## 기본 중요 가이드 -### **[최우선 원칙] 파일 수정 시 최신 내용 보존** -**파일을 수정(예: `replace`, `write_file`)하기 직전에는 반드시 `read_file`을 통해 파일의 최신 내용을 다시 읽어와야 합니다. 이는 Gemini가 작업하는 동안 사용자가 파일을 수정했을 경우, 해당 내용이 유실되는 것을 방지하기 위함입니다. 이 원칙은 다른 모든 가이드라인에 우선합니다.** - -### 한글로 대화, 한글 필수 -### junie 의 중간 진행상황도 한글로 작성해서 보여줘 -### 테스트소스는 작성 불가!! -### 중요로직 주석 필수 (한글) -### 각 컨트롤러 클래스에 스웨거 적용 -### 기존소스의 공백제거 등 로직에 필요없는 부분은 수정 불가!! -### mvc 패턴, springboot + mybatis + jsp 구조, tiles 사용 -### view 단과, controller, 등 mode 값을 통일 시켜줘 -- mode : C = 등록 -- mode : U = 수정 -- mode : V = 보기 -- mode : D = 삭제 -### session 보안 -### 기본적인 코딩 스타일은 noticeSample 참조 (xml, java, jsp) -### url 은 기본적으로 사용 -### 정적 리소스는 src/main/webapp/resources/css,js,xit 등등 해당 위치에 있음. -- css, html 구조 는 src/main/webapp/WEB-INF/views/crdn -- 모달과 메인윈도우는 src/main/webapp/resources/xit/xit-common.css 에 css 추가 -- 팝업은 src/main/webapp/resources/xit/xit-popup.css 에 css 추가 -### 신규 sql, DDL 생성시 DB-DDL/maria/dictionary/column_word_dictionary.md, 컬럼 단어사전 무조건 참조!! -### 단어사전에 없다면 단어사전 신규 추가!! (규칙은 무조건 지켜야함 특히, 일시->dttm, 같은 경우) -### 시간이란 명칭의 컬럼도 LocalDateTime 일경우 일시(dttm) 으로 변경하여 저장 -### mybatis 기본적으로 camelCase 적용되어 있어 컬럼의 알리아스(별시) 별도로 사용하지 않아도 돼 -### DB 구조는 DB-DDL/maria/ddl/xitframework/*.sql 참조 -### 기본적인 key 는 시컨스를 이용, 총 10자리, LPAD 이용 -```mariadb -SELECT LPAD(NEXTVAL(seq_notice_id), 10, '0') -``` -### paging 처리 시 controller 에서 1.totalCount 구하기, 2.setTotalCount, 3.setPagingYn 순서 중요!! 해당순서를 지켜야지만 에러 발생안함. -```java - // 1. 총 개수 조회 -int totalCount = excelSampleService.selectExcelSampleListTotalCount(paramVO); -// 2. 응답 데이터 구성 - paramVO.setTotalCount(totalCount); -// 3. 페이징 처리 (필수는 아님, 상황에 따라 페이징이 필요 없을 경우 제거해도 됨.) - paramVO.setPagingYn("Y"); -``` -### JS 구현시 setTimeout 최대한 구현하지마, 모여서 문제 발생됨. -### 업무별 개발 패턴 가이드 -- **기초자료 (`baseData`)** 및 **단속 (`crdn`)** 등 업무 기능 개발 시, 아래 경로의 기존 소스 코드 패턴을 반드시 참조하여 일관성을 유지해야 합니다. - - **View (JSP):** - - `src/main/webapp/WEB-INF/views/baseData` - - `src/main/webapp/WEB-INF/views/crdn` - - **Controller/Service/Model (Java):** - - `src/main/java/go/kr/project/baseData/bldgNewPrcCrtrAmt` - - `src/main/java/go/kr/project/crdn` - -## 2 주요 기술 및 라이브러리 -### 2.1 핵심 기술 스택 -| 기술 | 버전 | 설명 | -|------|------|------| -| Java | 개발: 1.8, 배포: 1.8 | 자바 개발 및 실행 환경 | -| Spring Boot | 2.7.18 | 스프링 기반 애플리케이션 개발 프레임워크 | -| 전자정부 프레임워크 | 4.3.0 | 한국 정부 표준 웹 개발 프레임워크 | -| Servlet | 3.1 | 웹 애플리케이션 표준 | -| Gradle | - | 빌드 및 의존성 관리 도구 | -| MariaDB | - | 관계형 데이터베이스 | - -## 2.2 주요 라이브러리 -| 라이브러리 | 버전 | 설명 | -|------------|------|------| -| MyBatis | 2.3.1 | SQL 매핑 프레임워크 | -| Apache Tiles | 3.0.8 | 레이아웃 템플릿 엔진 | -| TOAST UI Grid | 4.19.2 | 자바스크립트 그리드 라이브러리 | -| Lombok | - | 자바 코드 생성 라이브러리 | -| Apache Commons Text | 1.10.0 | 텍스트 처리 유틸리티 | -| Apache POI | 5.3.0 | 엑셀 파일 처리 라이브러리 | - -## 3. 프로젝트 구조 -### 3.1 디렉토리 구조 -``` -IBMS_NEW/ -├── DB-DDL/ # 데이터베이스 스크립트 -│ └── maria/ # MariaDB 스크립트 -│ ├── ddl/ # 테이블 정의 스크립트 -│ └── dml/ # 샘플 데이터 스크립트 -├── src/ -│ ├── main/ -│ │ ├── java/ # 자바 소스 코드 -│ │ │ ├── egovframework/ # 전자정부 프레임워크 확장 코드 -│ │ │ └── go/kr/project/ # 프로젝트 소스 코드 -│ │ ├── resources/ # 리소스 파일 -│ │ │ ├── mybatis/ # MyBatis 설정 및 매퍼 -│ │ │ └── application.yml # 애플리케이션 설정 파일 -│ │ └── webapp/ # 웹 리소스 -│ │ ├── resources/ # 정적 리소스 (CSS, JS, 이미지 등) -│ │ └── WEB-INF/views/ # JSP 뷰 파일 -│ └── test/ # 테스트 코드 -└── build.gradle # Gradle 빌드 스크립트 -``` - -### 3.2 패키지 구조 -``` -go.kr.project/ -├── common/ # 공통 컴포넌트 -├── login/ # 로그인 관련 기능 -│ ├── controller/ # 컨트롤러 클래스 -│ ├── mapper/ # MyBatis 매퍼 인터페이스 -│ ├── model/ # 데이터 모델 클래스 -│ └── service/ # 서비스 클래스 -└── system/ # 시스템 관리 기능 - ├── auth/ # 권한 관리 - ├── code/ # 코드 관리 - ├── group/ # 그룹 관리 - ├── menu/ # 메뉴 관리 - ├── role/ # 역할 관리 - └── user/ # 사용자 관리 - ├── controller/ # 컨트롤러 클래스 - ├── mapper/ # MyBatis 매퍼 인터페이스 - ├── model/ # 데이터 모델 클래스 - └── service/ # 서비스 클래스 - -egovframework/ -├── config/ # 프레임워크 설정 -├── exception/ # 예외 처리 -├── filter/ # 필터 -├── interceptor/ # 인터셉터 -└── util/ # 유틸리티 클래스 -``` - -## 4. UI 및 JSP 구조 가이드 -### 4.1 화면 레이아웃 (Tiles) -- **`base` (기본 레이아웃):** - - 대부분의 관리자 페이지에서 사용되는 기본 레이아웃입니다. - - 템플릿: `/WEB-INF/views/layouts/base/default.jsp` - - 구성 요소: - - `menu_header`: 상단 로고 및 사용자 정보 - - `menu`: 좌측 내비게이션 메뉴 - - `main_header`: 메인 컨텐츠 영역의 헤더 - - `main`: 실제 페이지 내용이 표시되는 부분 -- **`login` (로그인 레이아웃):** - - 로그인 페이지를 위한 전용 레이아웃입니다. - - 템플릿: `/WEB-INF/views/layouts/login/default.jsp` -- **`popup` (팝업 레이아웃):** - - 팝업창을 위한 전용 레이아웃입니다. - - 템플릿: `/WEB-INF/views/layouts/popup/default.jsp` - -### 4.2 주요 UI 컴포넌트 구조 -- **모달 (Modal):** - - 목록 페이지 등 메인 JSP 파일 내에 HTML 구조를 포함하여 구현합니다. - - **핵심 CSS 클래스:** - - `.modalz`: 모달 전체를 감싸는 컨테이너 - - `.modalz_body`: 모달 내용 - - `.modalz_tit`: 모달 제목 - - `.modalz_con`: 컨텐츠 영역 - - `.modalz_foot`: 하단 버튼 영역 - - **동작:** JavaScript로 `.act` 클래스를 추가하여 화면에 표시합니다. (`$('#detailModal').addClass('act');`) - - **참조:** `src/main/webapp/WEB-INF/views/system/loginLog/list.jsp` - -- **팝업 (Popup):** - - `popup` Tiles 레이아웃을 사용하여 새로운 브라우저 창으로 표시됩니다. - - **핵심 CSS 클래스:** - - `.popup_wrap`: 팝업 전체를 감싸는 최상위 컨테이너 - - `.popup_inner`: 실제 팝업 컨텐츠를 담는 영역 - - `.popup_tit`: 팝업 제목 - - `.popup_con`: 컨텐츠 영역 - - `.popup_foot`: 하단 버튼 영역 - - **참조:** `src/main/webapp/WEB-INF/views/system/user/auth_popup.jsp` - - **CSS:** `src/main/webapp/resources/xit/xit-popup.css` - -- **그리드 (Grid):** - - `TOAST UI Grid`를 사용하여 목록을 표시합니다. - - **구현:** `XitTuiGridConfig` 헬퍼 클래스를 사용하여 그리드 설정을 초기화하고 `tui.Grid`로 인스턴스를 생성합니다. - - **데이터 로딩:** `dataSource` 객체의 `api.readData` 속성에 AJAX 호출 URL을 지정하여 서버와 통신합니다. - - **참조:** `src/main/webapp/WEB-INF/views/system/loginLog/list.jsp`의 `