# SAM 산출식 시스템 분석 문서 **작성일**: 2025-09-22 **버전**: 2.0 (수정됨 🔄) **목적**: SAM 프로젝트 전체 산출식 체계 정리, 5130 실제 구현 반영 및 오류 수정 --- ## 📋 전체 산출식 개요 ### 기본 입력 파라미터 - **W0** (오픈사이즈 폭), **H0** (오픈사이즈 높이) - **설치방식**, **전원방식** - **제품타입**: 스크린/철재 ### 산출 흐름도 ``` W0, H0 → W1, H1 (제작사이즈) → 면적, 중량(K) → 각종 부자재 수량 ↓ 모터용량 → 샤프트규격 → 감기샤프트 ↓ 브라켓, 가이드레일, 케이스, 하단마감, 각파이프 ↓ 환봉(스크린전용), 조인트바 ``` --- ## 1. 오픈사이즈 → 제작사이즈/중량 계산 ### 제작사이즈 계산 (수정됨 🔄) **실제 5130 구현 기준**: - **스크린**: W1 = W0 + 160, H1 = H0 + 350 - **철재**: W1 = W0 + 110, H1 = H0 + 350 **변수 설정**: - makeWidth: 160 (스크린) / 110 (철재) - makeHeight: 350 (공통) ### 중량 계산 (수정됨 🔄) **스크린 (실제 구현)**: - 면적(㎡) = W1 × H1 ÷ 1,000,000 - 중량(kg) = (면적 × 2) + (W0 ÷ 1000 × 14.17) **철재 (추정)**: - 면적(㎡) = W1 × H1 ÷ 1,000,000 - 중량(kg) = 면적 × 40 (기존 공식 유지) --- ## 2. 모터 용량 산정 (전면 수정됨 🔄) ### 실제 구현: 샤프트별 중량 매트릭스 **스크린용 모터 (5130 실제 로직)**: | 샤프트 | 150K | 300K | 400K | 500K | 600K | 800K | 1000K | |--------|------|------|------|------|------|------|-------| | 4인치 | ≤150kg | 151-300kg | 301-400kg | - | - | - | - | | 5인치 | ≤123kg | 124-246kg | 247-327kg | 328-500kg | 501-600kg | - | - | | 6인치 | ≤104kg | 105-208kg | 209-300kg | 301-424kg | 425-508kg | 509-800kg | 801-1000kg | ### 샤프트 규격 결정 (수정됨 🔄) **스크린 기준**: - W1 ≤ 6000: 4인치 - 6000 < W1 ≤ 8200: 5인치 - W1 > 8200: 미정의 (0) **철재용 모터**: 별도 구현 필요 (주석 처리된 로직 존재) --- ## 3. 브라켓 및 지지각도 ### 브라켓 수량 | 제작사이즈 폭 (W1) | 브라켓 수량 | |------------------|-----------| | ~3000 | 2개 | | 3001~6000 | 3개 | | 6001~9000 | 4개 | | 9001~12000 | 5개 | ### 지지각도 - **수량**: 브라켓 수량와 동일 - **길이**: H1 + 200 --- ## 4. 가이드레일 및 연기차단막 ### 가이드레일 - **수량**: 2개 (양쪽) - **길이**: H1 + 200 ### 연기차단막 (높이 3000 이상인 경우) - **조건**: H1 ≥ 3000 - **면적**: W1 × (H1 - 3000) ÷ 1,000,000 (㎡) --- ## 5. 케이스(셔터박스) 구성품 ### 케이스 사이즈 - **스크린**: 500 × 350 - **철재**: 650 × 500 ### 구성품 계산 - **상판**: W1 × 500 (스크린) / W1 × 650 (철재) - **측판**: 500 × 350 × 2개 (스크린) / 650 × 500 × 2개 (철재) - **전면판**: (W1 - 10) × 350 (스크린) / (W1 - 10) × 500 (철재) - **후면판**: (W1 - 10) × 350 (스크린) / (W1 - 10) × 500 (철재) **🚨 문제점**: 케이스 타입(500×350 vs 650×500) 선택 기준 미정의 --- ## 6. 하단마감 자재 ### 자재 계산 - **하단레일**: W1 길이 - **하단씰**: W1 길이 - **하단브라켓**: W1 ÷ 300 (올림) - **결속끈**: W1 ÷ 200 (올림) - **하단스토퍼**: 2개 --- ## 7. 감기샤프트 (스크린용/철재용) (수정됨 🔄) ### 스크린용 감기샤프트 (실제 구현) #### 샤프트 규격 결정 (단순화됨) - **4인치**: W1 ≤ 6000 - **5인치**: 6000 < W1 ≤ 8200 - **미정의**: W1 > 8200 #### 메인샤프트 수량 계산 **4인치 샤프트**: - W1 ≤ 3050: 1개 × 수량 - 3050 < W1 ≤ 4550: 1개 × 수량 - 4550 < W1 ≤ 6050: 1개 × 수량 **5인치 샤프트**: - 0 < W1 ≤ 6050: 1개 × 수량 - 6050 < W1 ≤ 7050: 1개 × 수량 - W1 > 7050: 1개 × 수량 #### 보조샤프트 (3인치) - **규격**: 항상 3인치 - **수량**: 1개 × 수량 ### 철재용 감기샤프트 - **규격 결정**: W1과 중량(K) 두 조건 모두 만족해야 함 - **자재**: 통자재 1개만 사용 (조합 불가) | W1 구간 | 중량(K) 구간 | 샤프트 규격 | |---------|-------------|-----------| | 0 < W1 ≤ 4500 | K ≤ 400 | 4인치 | | 0 < W1 ≤ 4500 | 400 < K ≤ 600 | 5인치 | | 4500 < W1 ≤ 5600 | K ≤ 600 | 5인치 | | 5600 < W1 ≤ 7800 | 600 < K ≤ 800 | 6인치 | | 5600 < W1 ≤ 8200 | K > 800 | 8인치 | **🚨 문제점**: 경계값 처리 (W1=4500, K=400 등) 우선순위 불명확 --- ## 8. 각파이프 자재 (실제 구현 발견 🔄) ### 기본 정보 - **자재 규격**: 3000mm, 6000mm - **계산 기준**: col67 (상수길이 P) - **P 계산식**: P = W1 + (3000 × 각파이프 수량) ### 실제 구현된 계산식 #### 각파이프 수량 결정 (col66) ```javascript col66 = (W1 ≤ 1600) ? 3 : (W1 ≤ 2800) ? 4 : (W1 ≤ 4000) ? 5 : (W1 ≤ 5200) ? 6 : (W1 ≤ 6400) ? 7 : (W1 ≤ 7600) ? 8 : (W1 ≤ 8800) ? 9 : 0 ``` #### 상수길이 P 계산 (col67) ```javascript P = W1 + (3000 × col66) ``` #### 최종 수량 계산 (col68-69) **3000mm 자재 (col68)**: - P ≤ 9000: 3 × 수량 - 9000 < P ≤ 12000: 4 × 수량 - 12000 < P ≤ 15000: 5 × 수량 - 15000 < P ≤ 18000: 6 × 수량 **6000mm 자재 (col69)**: - 18000 < P ≤ 24000: 4 × 수량 - 24000 < P ≤ 30000: 5 × 수량 - 30000 < P ≤ 36000: 6 × 수량 - 36000 < P ≤ 42000: 7 × 수량 - 42000 < P ≤ 48000: 8 × 수량 **✅ 문제 해결**: 실제 구현된 계산식 발견 및 문서화 완료 --- ## 9. 환봉 (스크린 전용) ### 기본 정보 - **대상**: 스크린 셔터만 - **자재 규격**: 3000mm 고정 - **계산 기준**: 제작사이즈 W1 ### 수량표 | 제작사이즈 W1 구간 | 자재 규격 | 수량 | |------------------|---------|-----| | 0 < W1 ≤ 3000 | 3000mm | 1개 | | 3000 < W1 ≤ 6000 | 3000mm | 2개 | | 6000 < W1 ≤ 9000 | 3000mm | 3개 | | 9000 < W1 ≤ 12000 | 3000mm | 4개 | **✅ 문제없음**: 명확한 구간별 수량 정의 --- ## 10. 조인트바 ### 계산 공식 ``` 조인트바 수량 = 2 + FLOOR((W1 - 500) / 1000) ``` ### 설치 기준 - **기본 2개**: 양 끝 250mm 지점 고정 - **추가 설치**: 중앙 여유공간(W1-500) 내 1000mm 간격 ### 예시 | W1 | 중앙 여유공간 | 추가 수량 | 총 수량 | |----|-------------|---------|-------| | 1500 | 1000 | 1 | 3개 | | 2500 | 2000 | 2 | 4개 | | 3500 | 3000 | 3 | 5개 | **✅ 문제없음**: 명확한 수학 공식 --- ## 🚨 수정 결과 및 종합 분석 (업데이트됨 🔄) ### ✅ 해결된 문제점들 1. **제작사이즈 계산 오류 수정** - 스크린: W1=W0+160, H1=H0+350 (실제 구현 반영) - 철재: W1=W0+110, H1=H0+350 (실제 구현 반영) 2. **중량 계산 오류 수정** - 스크린: 복합 계산식 (면적×2) + (W0/1000×14.17) 반영 3. **모터 용량 산정 전면 수정** - 샤프트별 중량 매트릭스로 전환 - 실제 5130 구현 로직 반영 4. **샤프트 규격 결정 단순화** - W1 기준 단순 구간별 분류로 수정 5. **각파이프 계산식 발견 및 문서화** - P = W1 + (3000 × 각파이프수량) 공식 발견 - 전체 계산 로직 체계적 정리 ### ❌ 여전히 있는 문제점 1. **철재용 중량 계산**: 실제 구현 미확인 2. **철재용 모터 용량**: 주석 처리된 로직 존재 3. **케이스 타입 선택**: 자동 결정 로직 필요 ### ✅ 확인된 정확한 부분 - 환봉 산출 로직 (실제 구현과 일치) - 조인트바 계산 공식 (수학적 정확성) - 스크린 전체 산출 체계 (구현 반영 완료) --- ## 🛠️ 다음 단계 작업 및 권장사항 ### 즉시 수행 권장 1. **철재용 중량 계산식 확인** - 5130 코드에서 철재용 중량 계산 로직 찾기 - Slat 관련 함수에서 중량 계산 분석 2. **철재용 모터 로직 구현** - 주석 처리된 철재 전용 로직 활성화 - W1과 중량 복합 조건 구현 3. **케이스 타입 자동 선택 로직** - 스크린/철재 구분에 따른 자동 선택 - 500×350 / 650×500 선택 기준 명확화 ### 장기 개선 대상 4. **전체 산출식 체계를 API로 구현** - 파라미터 기반 동적 BOM 계산 - 실시간 견적 예상 시스템 구축 5. **산출식 검증 및 테스트** - 기존 5130 대비 정확성 검증 - 경계값 처리 테스트 케이스 추가 --- ## 📝 수정 이력 - **2025-09-22 v1.0**: 초기 분석 완료 - **2025-09-22 v2.0**: 5130 실제 구현 비교 및 주요 오류 수정 - 제작사이즈/중량 계산 오류 수정 - 모터 용량 산정 체계 전면 개편 - 각파이프 계산식 실제 구현 발견 및 반영 - 샤프트 규격 결정 로직 단순화