Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
2025-10-15 15:58:08 +09:00
211 changed files with 1196 additions and 823 deletions

33
.gitignore vendored Normal file
View File

@@ -0,0 +1,33 @@
# Compiled class files
*.class
# Build directories
WebContent/WEB-INF/classes/
# Log files
*.log
logs/
# OS files
.DS_Store
Thumbs.db
# IDE files
.settings/
.classpath
.project
# Environment files (보안상 제외)
.env
.env.development
.env.production
# Temporary files
*.tmp
*.bak
*.swp
*~
# Docker volumes
.docker/

121
README.md
View File

@@ -1,21 +1,21 @@
# PLM 솔루션 (ILSHIN) # RPS 업무관리 시스템
## 프로젝트 개요 ## 프로젝트 개요
본 프로젝트는 제품 수명 주기 관리(PLM - Product Lifecycle Management) 솔루션입니다. 제품 개발 초기 단계부터 설계, 생산, 유통, 유지보수 및 폐기에 이르기까지 제품과 관련된 모든 데이터와 프로세스를 통합적으로 관리하는 것을 목표로 합니다. 본 프로젝트는 RPS(Resource Planning System) 업무관리 시스템입니다. 기업의 자원 계획 및 업무 프로세스를 통합적으로 관리하여 효율적인 업무 처리와 자원 최적화를 목표로 합니다.
## 주요 기능 (예상) ## 주요 기능
소스 코드 분석 및 일반적인 PLM 솔루션의 기능을 바탕으로 다음과 같은 메뉴/기능을 포함할 것으로 예상됩니다. 실제 메뉴는 애플리케이션 실행 후 확인해야 합니다. RPS 업무관리 시스템의 주요 기능은 다음과 같습니다:
- **제품 정보 관리:** 제품 분류, 속성, 사양 등 관리 - **자원 관리:** 인적 자원, 물적 자원, 시설 등의 통합 관리
- **BOM (Bill of Materials) 관리:** 부품 목록, 계층 구조 관리 (eBOM, mBOM 등) - **업무 프로세스 관리:** 업무 흐름 정의, 승인 프로세스, 워크플로우 관리
- **설계 변경 관리 (ECO/ECR):** 설계 변경 요청, 검토, 승인 프로세스 관리 - **프로젝트 관리:** 프로젝트 계획, 일정 관리, 진행 상황 추적
- **문서 관리:** CAD 데이터, 도면, 기술 문서 등의 버전 관리 및 접근 제어 - **문서 관리:** 업무 문서의 생성, 수정, 승인, 보관 및 검색
- **프로젝트/일정 관리:** 개발 프로젝트 일정, 리소스, 산출물 관리 - **보고서 및 분석:** 업무 현황 분석, KPI 관리, 대시보드 제공
- **사용자 및 권한 관리:** 역할 기반 접근 제어 - **사용자 및 권한 관리:** 역할 기반 접근 제어 및 권한 관리
- **워크플로우 관리:** 표준 프로세스 자동화 및 추적 - **알림 및 메시징:** 업무 관련 알림, 메시지 전송 기능
- **데이터 시각화/리포트:** 다양한 형식의 보고서 생성 (데이터 표시는 `jqGrid` 활용할 것으로 보입니다.) - **데이터 시각화:** 차트, 그래프를 통한 데이터 시각화 (jqGrid, Tabulator 등 활용)
## 기술 스택 ## 기술 스택
@@ -25,8 +25,8 @@
- MyBatis (v3.2.3) - 데이터베이스 연동 - MyBatis (v3.2.3) - 데이터베이스 연동
- **Frontend:** - **Frontend:**
- JSP (JavaServer Pages) - JSP (JavaServer Pages)
- JavaScript (jQuery v1.11.3 / v2.1.4, jqGrid v4.7.1 확인) - JavaScript (jQuery v1.11.3 / v2.1.4, jqGrid v4.7.1, Tabulator 확인)
- CSS - CSS (basic.css - 메인 스타일시트, 드롭다운 메뉴 및 반응형 디자인 포함)
- Apache Tiles (v3.0.5) - 페이지 레이아웃/템플릿 - Apache Tiles (v3.0.5) - 페이지 레이아웃/템플릿
- **Database:** - **Database:**
- PostgreSQL (연결 정보 및 드라이버 확인) - PostgreSQL (연결 정보 및 드라이버 확인)
@@ -44,6 +44,99 @@
- `pdfbox` (PDF 처리) - `pdfbox` (PDF 처리)
- 기타 다수 (`WebContent/WEB-INF/lib` 디렉토리 참조) - 기타 다수 (`WebContent/WEB-INF/lib` 디렉토리 참조)
## UI 구조 및 메뉴 시스템
### 메뉴 구조
- **상단 네비게이션:** 메인 메뉴가 상단 헤더에 위치
- **드롭다운 메뉴:** 상단 메뉴 클릭 시 하위 메뉴가 드롭다운으로 표시
- **전체 화면 활용:** 왼쪽 프레임을 제거하고 컨텐츠 영역을 전체 화면으로 확대
- **반응형 디자인:** 다양한 화면 크기에 대응하는 반응형 레이아웃
### 주요 파일
- **header.jsp:** 상단 메뉴 및 네비게이션 구조 정의
- **basic.css:** 메인 스타일시트, 드롭다운 메뉴 스타일 포함
- **메뉴 관련 JavaScript:** jQuery 기반 메뉴 인터랙션 처리
## Materialize CSS 드롭다운 시스템
본 시스템은 [Materialize CSS](https://materializecss.com/dropdown.html) 프레임워크의 드롭다운 컴포넌트를 활용하여 현대적이고 사용자 친화적인 메뉴 시스템을 구현합니다.
### Materialize CSS 드롭다운 특징
#### 기본 구조
```html
<!-- 드롭다운 트리거 -->
<a class='dropdown-trigger btn' href='#' data-target='dropdown1'>Drop Me!</a>
<!-- 드롭다운 구조 -->
<ul id='dropdown1' class='dropdown-content'>
<li><a href="#!">one</a></li>
<li><a href="#!">two</a></li>
<li class="divider" tabindex="-1"></li>
<li><a href="#!">three</a></li>
<li><a href="#!"><i class="material-icons">view_module</i>four</a></li>
<li><a href="#!"><i class="material-icons">cloud</i>five</a></li>
</ul>
```
#### 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
<!-- Materialize CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!-- Material Icons -->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Materialize JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
```
2. **동적 메뉴 로딩**: AJAX를 통해 서버에서 메뉴 데이터를 가져와 동적으로 드롭다운 생성
3. **Material Design 아이콘**: 메뉴 항목에 Material Icons 적용으로 시각적 향상
4. **커스텀 스타일링**: basic.css를 통해 기존 시스템 디자인과 조화로운 스타일 적용
## 프로젝트 구조 (폴더별 역할) ## 프로젝트 구조 (폴더별 역할)
- **`.git/`**: Git 버전 관리 시스템 메타데이터 저장소. - **`.git/`**: Git 버전 관리 시스템 메타데이터 저장소.

Some files were not shown because too many files have changed in this diff Show More