You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

9.9 KiB

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 은 기본적으로 <c: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 이용

SELECT LPAD(NEXTVAL(seq_notice_id), 10, '0')

paging 처리 시 controller 에서 1.totalCount 구하기, 2.setTotalCount, 3.setPagingYn 순서 중요!! 해당순서를 지켜야지만 에러 발생안함.

    // 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<script> 블록

4.3 공통 CSS 클래스

  • 버튼:
    • .newbtn, .newbtns: 일반적인 버튼 스타일
    • .newbtn_grid: 그리드 내에서 사용되는 작은 버튼
    • .btn-group: 버튼들을 그룹화하고 정렬 (left, center, right)
  • 레이아웃:
    • .main_body: 메인 컨텐츠 전체 컨테이너
    • .contants_body: 실제 컨텐츠(검색, 그리드 등)를 감싸는 영역
    • .forms_table_non, .detail-table: 상세 정보 테이블 스타일
  • 폼:
    • .numericMask, .decimalMask: 숫자/소수점 입력 필드를 우측 정렬하여 가독성을 높입니다.