// 가이드레일 산정 기준 재생성 함수 const handleRecreateGuideRailRules = () => { try { // 새로운 가이드레일 산정 기준 생성 (첨부 이미지 기준 적용) // 제작길이(G) = H0 + 250 // 설치 유형별로 4개 규칙 생성: 벽면형/측면형 const timestamp = Date.now(); const newGuideRailRules: FormulaRule[] = [ // 벽면형 가이드레일 기준 { id: `rule-gr-wall-${timestamp}`, ruleCode: 'GUIDE-RAIL-WALL', ruleName: '가이드레일 품목 선택 (벽면형)', category: 'guide-rail', subcategory: '벽면형', ruleType: 'range', description: '벽면형 설치: 가이드레일 제작길이(G=H0+250) 구간별 품목 선택', inputVariable: 'G', status: 'active', ranges: [ { id: `range-${timestamp}-w1`, minValue: 1219, maxValue: 2438, result: '2438 x2개', itemCode: 'GR-2438', itemName: '가이드레일 2438mm', quantity: 2, description: '1219~2438mm: 2438 x2개' }, { id: `range-${timestamp}-w2`, minValue: 2439, maxValue: 3000, result: '3000 x2개', itemCode: 'GR-3000', itemName: '가이드레일 3000mm', quantity: 2, description: '2439~3000mm: 3000 x2개' }, { id: `range-${timestamp}-w3`, minValue: 3001, maxValue: 3500, result: '3500 x2개', itemCode: 'GR-3500', itemName: '가이드레일 3500mm', quantity: 2, description: '3001~3500mm: 3500 x2개' }, { id: `range-${timestamp}-w4`, minValue: 3501, maxValue: 4000, result: '4000 x2개', itemCode: 'GR-4000', itemName: '가이드레일 4000mm', quantity: 2, description: '3501~4000mm: 4000 x2개' }, { id: `range-${timestamp}-w5`, minValue: 4001, maxValue: 4300, result: '4300 x2개', itemCode: 'GR-4300', itemName: '가이드레일 4300mm', quantity: 2, description: '4001~4300mm: 4300 x2개' }, { id: `range-${timestamp}-w6`, minValue: 4301, maxValue: 5438, result: '3000 x2 + 3500 x2', itemCode: 'GR-COMBO-3000-3500', itemName: '가이드레일 조합 (3000+3500)', quantity: 1, description: '4301~5438mm: 3000 x2 + 3500 x2' }, { id: `range-${timestamp}-w7`, minValue: 5439, maxValue: 6000, result: '3000 x4개', itemCode: 'GR-3000', itemName: '가이드레일 3000mm', quantity: 4, description: '5439~6000mm: 3000 x4개' }, { id: `range-${timestamp}-w8`, minValue: 6001, maxValue: 6500, result: '4000 x2개', itemCode: 'GR-4000', itemName: '가이드레일 4000mm', quantity: 2, description: '6001~6500mm: 4000 x2개' }, { id: `range-${timestamp}-w9`, minValue: 6501, maxValue: 7000, result: '4300 x2개', itemCode: 'GR-4300', itemName: '가이드레일 4300mm', quantity: 2, description: '6501~7000mm: 4300 x2개' }, { id: `range-${timestamp}-w10`, minValue: 7001, maxValue: 7300, result: '4300 x2개', itemCode: 'GR-4300', itemName: '가이드레일 4300mm', quantity: 2, description: '7001~7300mm: 4300 x2개' } ], currentRevision: 0, isFinal: false, createdAt: new Date().toISOString().split('T')[0], createdBy: '시스템', updatedAt: new Date().toISOString().split('T')[0] }, // 측면형 가이드레일 기준 { id: `rule-gr-side-${timestamp}`, ruleCode: 'GUIDE-RAIL-SIDE', ruleName: '가이드레일 품목 선택 (측면형)', category: 'guide-rail', subcategory: '측면형', ruleType: 'range', description: '측면형 설치: 가이드레일 제작길이(G=H0+250) 구간별 품목 선택', inputVariable: 'G', status: 'active', ranges: [ { id: `range-${timestamp}-s1`, minValue: 1219, maxValue: 2438, result: '2438 x2개', itemCode: 'GR-2438', itemName: '가이드레일 2438mm', quantity: 2, description: '1219~2438mm: 2438 x2개' }, { id: `range-${timestamp}-s2`, minValue: 2439, maxValue: 3000, result: '3000 x2개', itemCode: 'GR-3000', itemName: '가이드레일 3000mm', quantity: 2, description: '2439~3000mm: 3000 x2개' }, { id: `range-${timestamp}-s3`, minValue: 3001, maxValue: 3500, result: '3500 x2개', itemCode: 'GR-3500', itemName: '가이드레일 3500mm', quantity: 2, description: '3001~3500mm: 3500 x2개' }, { id: `range-${timestamp}-s4`, minValue: 3501, maxValue: 4000, result: '4000 x2개', itemCode: 'GR-4000', itemName: '가이드레일 4000mm', quantity: 2, description: '3501~4000mm: 4000 x2개' }, { id: `range-${timestamp}-s5`, minValue: 4001, maxValue: 4300, result: '4300 x2개', itemCode: 'GR-4300', itemName: '가이드레일 4300mm', quantity: 2, description: '4001~4300mm: 4300 x2개' }, { id: `range-${timestamp}-s6`, minValue: 4301, maxValue: 5438, result: '3000 x2 + 3500 x2', itemCode: 'GR-COMBO-3000-3500', itemName: '가이드레일 조합 (3000+3500)', quantity: 1, description: '4301~5438mm: 3000 x2 + 3500 x2' }, { id: `range-${timestamp}-s7`, minValue: 5439, maxValue: 6000, result: '3000 x4개', itemCode: 'GR-3000', itemName: '가이드레일 3000mm', quantity: 4, description: '5439~6000mm: 3000 x4개' }, { id: `range-${timestamp}-s8`, minValue: 6001, maxValue: 6500, result: '4000 x2개', itemCode: 'GR-4000', itemName: '가이드레일 4000mm', quantity: 2, description: '6001~6500mm: 4000 x2개' }, { id: `range-${timestamp}-s9`, minValue: 6501, maxValue: 7000, result: '4300 x2개', itemCode: 'GR-4300', itemName: '가이드레일 4300mm', quantity: 2, description: '6501~7000mm: 4300 x2개' }, { id: `range-${timestamp}-s10`, minValue: 7001, maxValue: 7300, result: '4300 x2개', itemCode: 'GR-4300', itemName: '가이드레일 4300mm', quantity: 2, description: '7001~7300mm: 4300 x2개' } ], currentRevision: 0, isFinal: false, createdAt: new Date().toISOString().split('T')[0], createdBy: '시스템', updatedAt: new Date().toISOString().split('T')[0] }, // 하부 Base 기준 (벽면형) { id: `rule-base-wall-${timestamp}`, ruleCode: 'BASE-WALL', ruleName: '하부 Base (벽면형)', category: 'guide-rail', subcategory: '하부Base-벽면형', ruleType: 'fixed', description: '벽면형 설치 시 하부 Base 수량', fixedValue: 2, unit: 'EA', itemCode: 'BASE-WALL', itemName: '하부 Base (벽면형)', status: 'active', currentRevision: 0, isFinal: false, createdAt: new Date().toISOString().split('T')[0], createdBy: '시스템', updatedAt: new Date().toISOString().split('T')[0] }, // 하부 Base 기준 (측면형) { id: `rule-base-side-${timestamp}`, ruleCode: 'BASE-SIDE', ruleName: '하부 Base (측면형)', category: 'guide-rail', subcategory: '하부Base-측면형', ruleType: 'fixed', description: '측면형 설치 시 하부 Base 수량', fixedValue: 2, unit: 'EA', itemCode: 'BASE-SIDE', itemName: '하부 Base (측면형)', status: 'active', currentRevision: 0, isFinal: false, createdAt: new Date().toISOString().split('T')[0], createdBy: '시스템', updatedAt: new Date().toISOString().split('T')[0] } ]; // 기존 가이드레일 산정 기준 삭제 후 새로운 기준 추가 setFormulaRules((prev) => { const filtered = prev.filter(rule => rule.category !== 'guide-rail'); return [...filtered, ...newGuideRailRules]; }); alert('가이드레일 산정 기준이 재생성되었습니다!\n\n- 벽면형 가이드레일 기준 (10개 구간)\n- 측면형 가이드레일 기준 (10개 구간)\n- 하부 Base (벽면형) 기준\n- 하부 Base (측면형) 기준\n\n총 4개 규칙 생성 완료'); } catch (error) { console.error('가이드레일 산정 기준 재생성 오류:', error); alert('가이드레일 산정 기준 재생성 중 오류가 발생했습니다.'); } };