ERP-node/docs/생산계획_수량조정_분할_기능_안내.md

394 lines
12 KiB
Markdown

# 생산계획 수량/날짜/분할/병합 조정 기능 안내
## 📋 개요
생산계획관리 페이지에서 자동 스케줄 생성 후 표시되는 품목별 계획수량 박스를 클릭하면 모달창이 열리며, 다음 기능들을 수행할 수 있습니다:
- ✏️ **수량 조정**: 생산 계획 수량 수정
- 📅 **날짜 조정**: 납기일 변경
- ✂️ **분할 조정**: 하나의 계획을 여러 개로 분할
- 🔗 **병합 조정**: 여러 개의 계획을 하나로 합치기 ⭐ NEW
## 🎯 주요 기능
### 1. 수량 조정
#### 사용 방법
1. 타임라인에서 생산 계획 박스 클릭
2. 모달에서 "총 생산수량" 입력 필드 수정
3. 수량 변경 시 자동으로 변경 전/후 비교 정보 표시
#### 특징
- 📊 기존 수량 → 변경 수량을 시각적으로 표시
- 💡 실시간으로 변경사항 확인 가능
- ✅ 저장 시 타임라인 자동 업데이트
```
예시:
기존 수량: 1,000 EA → 변경 수량: 1,500 EA
```
### 2. 날짜 조정
#### 사용 방법
1. 모달에서 "납기일" 필드 변경
2. 새로운 납기일 선택
3. 저장하면 생산 일정이 자동으로 재계산됨
#### 특징
- 📆 납기일 변경 시 생산 시작/종료일 자동 조정
- 🔔 변경된 날짜 차이 계산 (예: +7일, -3일)
- 🎯 긴급 납기 여부 자동 판단
### 3. 분할 조정 ⭐
#### 사용 방법
1. 모달에서 **"✂️ 계획 분할"** 섹션 확인
2. **"분할하기"** 버튼 클릭
3. 분할 개수 선택 (2개 / 3개 / 4개)
4. 각 계획의 수량 입력 (자동으로 균등 분할되어 표시됨)
5. **"✂️ 분할 실행"** 버튼 클릭
#### 분할 기능 상세
##### 분할 옵션
- **2개로 분할**: 1,000EA → 500EA + 500EA
- **3개로 분할**: 1,500EA → 500EA + 500EA + 500EA
- **4개로 분할**: 2,000EA → 500EA + 500EA + 500EA + 500EA
##### 자동 조정 사항
1. **수량 균등 분할**: 전체 수량을 선택한 개수로 자동 분할
2. **일정 자동 배분**:
- 첫 번째 계획: 원래 시작일 유지
- 이후 계획들: 이전 계획 종료일 다음날부터 연속으로 배치
3. **기간 비율 계산**: 각 계획의 수량 비율에 따라 생산 기간 자동 조정
4. **분할 표시**: 비고란에 "[분할 1/3]", "[분할 2/3]" 등 자동 추가
##### 검증 기능
- ✅ 분할된 수량의 합계가 원본 수량과 일치하는지 자동 검증
- ⚠️ 불일치 시 경고 메시지 표시
- 🔒 검증 통과 후에만 분할 실행 가능
#### 분할 예시
**원본 계획:**
```
품목: ITEM-001
수량: 1,500 EA
기간: 2024-01-01 ~ 2024-01-10 (10일)
```
**3개로 분할 후:**
```
계획 1: 500 EA (2024-01-01 ~ 2024-01-04) [분할 1/3]
계획 2: 500 EA (2024-01-05 ~ 2024-01-08) [분할 2/3]
계획 3: 500 EA (2024-01-09 ~ 2024-01-12) [분할 3/3]
```
### 4. 병합 조정 ⭐ NEW
#### 사용 방법
1. 타임라인에서 병합할 계획 박스들의 **체크박스 선택** (2개 이상)
2. 상단에 **"🔗 선택 계획 병합 (N개)"** 버튼 자동 표시
3. 버튼 클릭 → 확인 메시지 확인
4. 병합 실행 → 하나의 계획으로 통합
#### 병합 기능 상세
##### 병합 조건
- ✅ **동일 품목**만 병합 가능
-**2개 이상** 계획 선택 필요
-**완제품끼리** 또는 **반제품끼리**만 병합 가능
- ⚠️ 완제품과 반제품은 함께 병합 불가
##### 자동 병합 처리
1. **수량 합산**: 모든 선택된 계획의 수량을 합산
2. **일정 통합**:
- 시작일: 가장 빠른 시작일
- 종료일: 가장 늦은 종료일
3. **납기일**: 가장 빠른 납기일 적용
4. **수주 정보 병합**: 중복 없이 모든 수주 정보 통합
5. **설비 정보 병합**: 모든 설비 할당 정보 통합
6. **병합 표시**: 비고란에 "[N개 계획 병합]" 자동 추가
##### 병합 예시
**원본 계획들:**
```
계획 1: ITEM-001, 500 EA (2024-01-01~05) [분할 1/3]
계획 2: ITEM-001, 500 EA (2024-01-06~10) [분할 2/3]
계획 3: ITEM-001, 500 EA (2024-01-11~15) [분할 3/3]
```
**병합 후:**
```
병합 계획: ITEM-001, 1,500 EA (2024-01-01~15) [3개 계획 병합]
```
#### 병합 검증
- ✅ 같은 품목인지 자동 확인
- ✅ 완제품/반제품 구분 검증
- ✅ 최소 2개 이상 선택 확인
- 📊 병합 전 총 수량 미리보기
#### 활용 시나리오
**시나리오 1: 분할했던 계획 다시 합치기**
```
상황: 2개로 분할했던 계획을 다시 하나로 통합
해결:
1. 두 계획 박스의 체크박스 선택
2. "🔗 선택 계획 병합" 버튼 클릭
3. 확인 → 하나로 병합
```
**시나리오 2: 여러 소량 계획 통합**
```
상황: 같은 품목의 소량 계획 3개를 하나의 대량 생산으로 통합
해결:
1. 3개 계획 모두 체크박스 선택
2. 병합 버튼 클릭
3. 총 수량 확인 후 병합
4. 설비 재할당
```
**시나리오 3: 라인 통합 생산**
```
상황: 두 라인에서 생산하던 것을 한 라인으로 통합
해결:
1. 두 라인의 계획 선택
2. 병합 실행
3. 통합된 계획에 한 라인만 할당
```
### 5. 통합 관리
#### 모달에서 한 번에 조정 가능한 항목
1. ✏️ 총 생산수량
2. 📅 납기일
3. ✂️ 계획 분할
4. 🏭 설비 할당
5. 👤 담당자 지정
6. 📝 비고 입력
#### 타임라인에서 직접 조정 가능한 항목
1. ☑️ 계획 선택 (체크박스)
2. 🔗 선택 계획 병합
3. 🖱️ 드래그 앤 드롭 (날짜 이동)
## 🖥️ 사용자 인터페이스
### 계획 박스 구조
```
타임라인에서:
┌─────────────────────────────┐
│ ☑ ITEM-001 │ ← 체크박스: 병합용
│ ■■■■■■■ 1,000 EA │ ← 수량 클릭: 모달 열림
└─────────────────────────────┘
여러 개 선택 시:
☑ 계획1: 500EA ☑ 계획2: 500EA ☑ 계획3: 500EA
[🔗 선택 계획 병합 (3개)] 버튼 자동 표시
```
### 모달 구조
```
📋 생산 스케줄 상세
├── 기본 정보 (품목코드, 품목명)
├── 📋 수주 근거 정보
├── 생산 정보
│ ├── 총 생산수량 ← 수정 가능
│ └── 납기일 ← 수정 가능
├── ✂️ 계획 분할 (노란색 배경)
│ ├── [분할하기] 버튼
│ └── 분할 옵션 (펼침/접힘)
│ ├── 분할 개수 선택
│ ├── 각 계획 수량 입력
│ └── [취소] [✂️ 분할 실행]
├── 🏭 설비 할당
├── 생산 상태
└── 추가 정보
└── [🗑️ 삭제] [취소] [💾 저장]
```
## 💡 활용 시나리오
### 시나리오 1: 긴급 수주 대응
```
상황: 기존 1,000EA 계획에 추가 500EA 긴급 수주 발생
해결:
1. 계획 박스 클릭
2. 수량을 1,500EA로 변경
3. 납기일을 긴급 납기로 조정
4. 저장
```
### 시나리오 2: 라인 분산 생산
```
상황: 2,000EA를 두 라인에서 동시 생산 필요
해결:
1. 계획 박스 클릭
2. "분할하기" → "2개로 분할" 선택
3. 각각 1,000EA로 자동 분할
4. 분할 실행
5. 각 계획에 서로 다른 설비 할당
```
### 시나리오 3: 단계적 생산
```
상황: 3,000EA를 3주에 걸쳐 단계적으로 생산
해결:
1. 계획 박스 클릭
2. "분할하기" → "3개로 분할" 선택
3. 각각 1,000EA로 균등 분할
4. 분할 실행 → 자동으로 연속 일정 생성
```
## ⚙️ 기술 구현
### 데이터 구조
```javascript
// 분할된 계획 예시
{
id: "schedule-001-split-1-1234567890",
itemCode: "ITEM-001",
itemName: "제품A",
quantity: 500,
startDate: new Date("2024-01-01"),
endDate: new Date("2024-01-05"),
remarks: "원본 비고 [분할 1/3]",
// ... 기타 필드
}
```
### 주요 함수
#### 수량 변경 감지
```javascript
function updateQuantityInfo() {
// 수량 변경 시 실시간 비교 표시
// 원본 수량과 새 수량 비교
}
```
#### 날짜 변경 감지
```javascript
function updateDateInfo() {
// 날짜 변경 시 일수 차이 계산
// 납기 변경 영향도 분석
}
```
#### 분할 실행
```javascript
function executeSplit() {
// 1. 분할 수량 검증
// 2. 새로운 계획 객체 생성
// 3. 일정 자동 재계산
// 4. 원본 대체 및 배열 업데이트
// 5. 타임라인 재렌더링
}
```
## 🔄 작업 흐름
### 개별 계획 조정 (모달 사용)
```
[타임라인] → [수량 클릭] → [모달 열림]
┌─────────┼─────────┐
↓ ↓ ↓
[수량조정] [날짜조정] [분할조정]
↓ ↓ ↓
└─────────┼─────────┘
[💾 저장]
[타임라인 자동 업데이트]
```
### 여러 계획 병합 (체크박스 사용)
```
[타임라인] → [체크박스 선택 (2개 이상)]
[🔗 병합 버튼 자동 표시]
[버튼 클릭] → [확인]
[자동 병합 처리]
- 수량 합산
- 일정 통합
- 수주 정보 병합
[타임라인 자동 업데이트]
```
## 📌 주의사항
### 수량 조정 시
- ⚠️ 수량을 0 이하로 설정할 수 없습니다
- 💡 수량 증가 시 생산 기간도 자동으로 조정됩니다
- 📊 변경 전/후 비교가 자동으로 표시됩니다
### 날짜 조정 시
- ⚠️ 과거 날짜로 변경 시 경고가 표시됩니다
- 🔔 납기일이 7일 이내면 "긴급" 표시가 추가됩니다
- 📅 생산 시작/종료일이 자동으로 재계산됩니다
### 분할 조정 시
- ⚠️ 분할 후에는 원본 계획이 삭제되고 개별 계획으로 대체됩니다
- ⚠️ 분할 수량의 합계가 원본 수량과 일치해야 합니다
- 💡 각 분할 계획은 독립적으로 관리됩니다
- 🔄 분할 실행 전 확인 메시지가 표시됩니다
- ✅ 분할 후 각 계획에 개별적으로 설비를 할당할 수 있습니다
### 병합 조정 시
- ⚠️ 병합 후에는 원본 계획들이 삭제되고 하나의 계획으로 대체됩니다
- ⚠️ **같은 품목**만 병합할 수 있습니다 (다른 품목은 불가)
- ⚠️ **완제품끼리** 또는 **반제품끼리**만 병합 가능 (혼합 불가)
- 💡 수주 정보와 설비 할당 정보가 자동으로 통합됩니다
- 📊 병합 전 총 수량과 품목 정보가 확인 메시지에 표시됩니다
- ✅ 중복된 수주 정보는 자동으로 제거됩니다
- 🔗 분할했던 계획을 다시 병합하는 데 유용합니다
## 🎨 UI 특징
### 시각적 피드백
- **수량 변경**: 파란색 배경의 정보 박스로 변경사항 표시
- **분할 섹션**: 노란색 배경으로 강조 (눈에 잘 띔)
- **입력 필드**: 실시간 검증 및 자동 합계 계산
### 접근성
- 🖱️ 클릭 한 번으로 모달 열기
- ⌨️ 키보드로 모든 기능 접근 가능
- ✅ 명확한 버튼 레이블과 아이콘
- 📱 반응형 디자인 (모바일 대응)
## 🚀 향후 개선 가능 사항
### 추가 기능 제안
1. ~~**병합 기능**: 여러 계획을 하나로 합치기~~ ✅ 구현 완료
2. **템플릿 저장**: 자주 사용하는 분할 패턴 저장
3. **드래그 앤 드롭 날짜 조정**: 타임라인에서 직접 날짜 조정
4. **일괄 수정**: 여러 계획 동시 수정
5. **이력 관리**: 변경 이력 추적 및 되돌리기
6. **조건부 병합**: 일정 조건에 맞는 계획 자동 병합
7. **스마트 분할**: AI 기반 최적 분할 제안
### 검증 강화
- 재고 부족 경고
- 설비 중복 사용 체크
- 납기 초과 알림
- 수량 한도 검증
## 📞 문의 및 지원
이 기능에 대한 질문이나 개선 제안이 있으시면 AI 어시스턴트에게 문의하세요.
---
**마지막 업데이트**: 2025-01-28
**버전**: 1.0
**담당 파일**: `화면개발/생산계획관리.html`