자재별 구매 수량 계산 시스템 구현

- 파이프: 6,000mm 단위 + 절단여유분 2mm/조각 계산
- 볼트/너트: +5% 후 4의 배수로 올림
- 가스켓: 5의 배수로 올림
- 피팅/계기/밸브: BOM 수량 그대로
- MaterialsPage에 '필요 수량' 칼럼 추가
- 엑셀 내보내기에 구매 수량 정보 포함
- 리비전 비교시 구매 수량 변화량도 계산
This commit is contained in:
Hyungi Ahn
2025-07-23 10:41:50 +09:00
parent 5fa0ac4202
commit 905344681f
4 changed files with 235 additions and 1 deletions

View File

@@ -143,12 +143,42 @@ python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
4. **SQL에서 과도한 GROUP BY** - 같은 자재 분리됨
5. **비율 기반 길이 계산** - 실제 총길이 사용해야 함
## 💰 **구매 수량 계산 규칙**
### **1. 파이프 (PIPE)**
```javascript
// 6,000mm 단위 판매 + 절단여유분 2mm/조각
const cutLength = originalLength + 2; // 절단 여유분
const pipeCount = Math.ceil(cutLength / 6000); // 올림 처리
```
### **2. 피팅/계기/밸브 (FITTING/INSTRUMENT/VALVE)**
```javascript
// BOM 수량 그대로
const purchaseQuantity = bomQuantity;
```
### **3. 볼트/너트 (BOLT)**
```javascript
// +5% 후 4의 배수로 올림
const withMargin = bomQuantity * 1.05;
const purchaseQuantity = Math.ceil(withMargin / 4) * 4;
// 예: 150 → 157.5 → 160 SETS
```
### **4. 가스켓 (GASKET)**
```javascript
// 5의 배수로 올림
const purchaseQuantity = Math.ceil(bomQuantity / 5) * 5;
// 예: 7 → 10 EA
```
## 🎯 **현재 진행 상황**
- ✅ 자재 업로드 및 분류 시스템
- ✅ 리비전 비교 기능
- ✅ 파이프 길이 합산 로직 수정
- ✅ 엑셀 내보내기 기능
- 🚧 구매 관리 시스템 (진행 중)
- 🚧 구매 수량 계산 시스템 (진행 중)
## 📚 **추가 참고사항**
- 사용자는 가상환경에서 Python 실행을 선호