# RPS 업무관리 시스템 ## 프로젝트 개요 본 프로젝트는 RPS(Resource Planning System) 업무관리 시스템입니다. 기업의 자원 계획 및 업무 프로세스를 통합적으로 관리하여 효율적인 업무 처리와 자원 최적화를 목표로 합니다. ## 주요 기능 RPS 업무관리 시스템의 주요 기능은 다음과 같습니다: - **자원 관리:** 인적 자원, 물적 자원, 시설 등의 통합 관리 - **업무 프로세스 관리:** 업무 흐름 정의, 승인 프로세스, 워크플로우 관리 - **프로젝트 관리:** 프로젝트 계획, 일정 관리, 진행 상황 추적 - **문서 관리:** 업무 문서의 생성, 수정, 승인, 보관 및 검색 - **보고서 및 분석:** 업무 현황 분석, KPI 관리, 대시보드 제공 - **사용자 및 권한 관리:** 역할 기반 접근 제어 및 권한 관리 - **알림 및 메시징:** 업무 관련 알림, 메시지 전송 기능 - **데이터 시각화:** 차트, 그래프를 통한 데이터 시각화 (jqGrid, Tabulator 등 활용) ## 기술 스택 - **Backend:** - Java 7 (Eclipse project settings and JRE 7 libraries confirm version 1.7) - Spring Framework (v3.2.4.RELEASE) - MyBatis (v3.2.3) - 데이터베이스 연동 - **Frontend:** - JSP (JavaServer Pages) - JavaScript (jQuery v1.11.3 / v2.1.4, jqGrid v4.7.1, Tabulator 확인) - CSS (basic.css - 메인 스타일시트, 드롭다운 메뉴 및 반응형 디자인 포함) - Apache Tiles (v3.0.5) - 페이지 레이아웃/템플릿 - **Database:** - PostgreSQL (연결 정보 및 드라이버 확인) - **Web Server / WAS:** - Apache Tomcat (v7.0 - `.classpath` 및 `SETTING_GUIDE.txt` 참조) - **Build:** - IDE (Eclipse) 기반 빌드 (소스는 `src`, 컴파일된 클래스는 `WebContent/WEB-INF/classes`, 라이브러리는 `WebContent/WEB-INF/lib`) - Maven/Gradle 등 표준 빌드 관리 도구는 사용되지 않음 - **주요 라이브러리:** - `log4j`, `slf4j` (로깅) - Tomcat JNDI DataSource 사용 추정 (Datasource 설정 및 관련 라이브러리 부재 기반) - `jackson`, `json-lib`, `gson` (JSON 처리) - Apache Commons 라이브러리 (Lang, IO, Collections, FileUpload 등) - `jxl`, `poi` (Excel 파일 처리) - `pdfbox` (PDF 처리) - 기타 다수 (`WebContent/WEB-INF/lib` 디렉토리 참조) ## UI 구조 및 메뉴 시스템 ### 메뉴 구조 - **상단 네비게이션:** 메인 메뉴가 상단 헤더에 위치 - **드롭다운 메뉴:** 상단 메뉴 클릭 시 하위 메뉴가 드롭다운으로 표시 - **전체 화면 활용:** 왼쪽 프레임을 제거하고 컨텐츠 영역을 전체 화면으로 확대 - **반응형 디자인:** 다양한 화면 크기에 대응하는 반응형 레이아웃 ### 주요 파일 - **header.jsp:** 상단 메뉴 및 네비게이션 구조 정의 - **basic.css:** 메인 스타일시트, 드롭다운 메뉴 스타일 포함 - **메뉴 관련 JavaScript:** jQuery 기반 메뉴 인터랙션 처리 ## Materialize CSS 드롭다운 시스템 본 시스템은 [Materialize CSS](https://materializecss.com/dropdown.html) 프레임워크의 드롭다운 컴포넌트를 활용하여 현대적이고 사용자 친화적인 메뉴 시스템을 구현합니다. ### Materialize CSS 드롭다운 특징 #### 기본 구조 ```html Drop Me!
``` #### JavaScript 초기화 ```javascript // DOM 로드 완료 후 초기화 document.addEventListener('DOMContentLoaded', function() { var elems = document.querySelectorAll('.dropdown-trigger'); var instances = M.Dropdown.init(elems, options); }); // jQuery 방식 $('.dropdown-trigger').dropdown(); ``` #### 주요 옵션 | 옵션명 | 타입 | 기본값 | 설명 | |--------|------|--------|------| | alignment | String | 'left' | 메뉴 정렬 방향 정의 | | autoTrigger | Boolean | true | 키보드 포커스 자동 설정 | | constrainWidth | Boolean | true | 드롭다운 너비를 트리거 크기에 맞춤 | | container | Element | null | 드롭다운의 경계 컨테이너 지정 | | coverTrigger | Boolean | true | false시 트리거 아래에 드롭다운 표시 | | closeOnClick | Boolean | true | 항목 클릭시 드롭다운 닫기 | | hover | Boolean | false | 호버시 드롭다운 열기 | | inDuration | Number | 150 | 열림 애니메이션 지속시간 (ms) | | outDuration | Number | 250 | 닫힘 애니메이션 지속시간 (ms) | #### 주요 메서드 - **`.open()`**: 드롭다운 열기 - **`.close()`**: 드롭다운 닫기 - **`.recalculateDimensions()`**: 내용 변경시 크기 재계산 - **`.destroy()`**: 인스턴스 제거 #### 인스턴스 속성 - **`el`**: 초기화된 DOM 엘리먼트 - **`options`**: 초기화 옵션 객체 - **`id`**: 드롭다운 엘리먼트 ID - **`dropdownEl`**: 드롭다운 DOM 엘리먼트 - **`isOpen`**: 드롭다운 열림 상태 - **`isScrollable`**: 드롭다운 스크롤 가능 여부 - **`focusedIndex`**: 포커스된 항목 인덱스 ### 시스템 적용 방식 본 RPS 시스템에서는 Materialize CSS 드롭다운을 다음과 같이 활용합니다: 1. **CDN 라이브러리 로드** ```html ``` 2. **동적 메뉴 로딩**: AJAX를 통해 서버에서 메뉴 데이터를 가져와 동적으로 드롭다운 생성 3. **Material Design 아이콘**: 메뉴 항목에 Material Icons 적용으로 시각적 향상 4. **커스텀 스타일링**: basic.css를 통해 기존 시스템 디자인과 조화로운 스타일 적용 ## 프로젝트 구조 (폴더별 역할) - **`.git/`**: Git 버전 관리 시스템 메타데이터 저장소. - **`tomcat-conf/`**: Docker 환경에서 사용될 Tomcat 서버 설정 파일 (예: `server.xml`, `context.xml`). - **`db/`**: 데이터베이스 관련 파일 저장 (예: Docker 초기화용 DB 덤프 `.pgsql` 파일). - **`.svn/`**: Subversion 버전 관리 메타데이터 (과거 SVN 사용 이력 추정). - **`WebContent/`**: 웹 애플리케이션 루트 디렉토리 (Eclipse Dynamic Web Project 표준). - 정적 리소스 (HTML, CSS, JS, 이미지 등). - JSP 파일. - `WEB-INF/`: 웹 애플리케이션 설정 및 라이브러리. - `classes/`: 컴파일된 Java 클래스 파일 (`src` 폴더의 결과물). - `lib/`: 애플리케이션 실행에 필요한 라이브러리 (`.jar` 파일). - `web.xml`: 웹 애플리케이션 배포 서술자. - 기타 설정 파일 (예: Tiles 설정). - **`src/`**: Java 소스 코드 (`.java` 파일) - 백엔드 로직 (Controller, Service, DAO 등). - **`.settings/`**: Eclipse IDE 프로젝트 관련 설정 파일. ## 실행 환경 설정 (Docker) 이 프로젝트는 제공된 `Dockerfile` 및 `docker-compose.yml` 파일을 사용하여 Docker 컨테이너 환경에서 실행할 수 있습니다. 1. **Docker 및 Docker Compose 설치:** 시스템에 Docker와 Docker Compose가 설치되어 있어야 합니다. 2. **데이터베이스 파일 준비:** `ilshin.pgsql` 파일이 프로젝트 루트 디렉토리에 있는지 확인합니다. (필요시 `docker-compose.yml`에서 파일 경로 수정) 3. **Docker Compose 실행:** 프로젝트 루트 디렉토리에서 다음 명령어를 실행합니다. ```bash docker-compose up --build -d ``` - `-d` 옵션은 백그라운드 실행을 의미합니다. 4. **애플리케이션 접속:** 웹 브라우저에서 `http://localhost:8080` (또는 `docker-compose.yml`에 설정된 포트)으로 접속합니다. **참고:** - 애플리케이션이 데이터베이스 연결 정보를 읽는 방식 (예: JNDI, 환경 변수, 설정 파일)에 따라 `docker-compose.yml`의 `app` 서비스 환경 변수 또는 Tomcat 설정 파일 (`context.xml` 등) 수정이 필요할 수 있습니다. - `SETTING_GUIDE.txt`에 명시된 Tomcat 컨텍스트 경로 (`/ilshin`)를 사용하려면 `Dockerfile`에서 `WebContent`를 `/usr/local/tomcat/webapps/ilshin`로 복사하거나 Tomcat 설정을 변경해야 할 수 있습니다. 현재 설정은 `/` (ROOT) 경로로 배포됩니다.