/**
 * 견적 수식 관리 샘플 데이터 생성 유틸리티
 * 
 * 자동 견적 산출 섹션의 모든 입력 항목을 기반으로
 * 완전한 샘플 데이터를 생성합니다.
 * 
 * 자동 견적 산출 입력 항목 (기준):
 * 1. 제품 선택 (productId)
 * 2. 제품 카테고리 (category): 스크린/철재
 * 3. 오픈사이즈 W0 (mm)
 * 4. 오픈사이즈 H0 (mm)
 * 5. 가이드레일 설치 유형: 벽면형/측면형/혼합형
 * 6. 모터 전원: 220V/380V
 * 7. 연동제어기: 매립/노출
 * 8. 수량
 * 9. 마구리 날개치수 (mm)
 * 10. 검사비 설정 (원)
 */

export interface SampleDataGenerator {
  itemMasters: any[];
  pricings: any[];
  formulaRules: any[];
  categoryGroups: any[];
}

export function generateCompleteSampleData(): SampleDataGenerator {
  const timestamp = Date.now();
  
  // ===============================================
  // 1. 품목 마스터 데이터 생성
  // ===============================================
  const sampleItemMasters = [
    // === 제품 (PR: 제품) ===
    {
      id: `PR-${timestamp}-1`,
      itemCode: 'PR-SCREEN-001',
      itemName: '스크린 제품 기본형',
      itemType: 'PR' as const,
      itemCategory: '스크린',
      specification: '기본형',
      unit: 'SET',
      description: '스크린 제품 샘플',
      bom: []
    },
    {
      id: `PR-${timestamp}-2`,
      itemCode: 'PR-STEEL-001',
      itemName: '철재 제품 기본형',
      itemType: 'PR' as const,
      itemCategory: '철재',
      specification: '기본형',
      unit: 'SET',
      description: '철재 제품 샘플',
      bom: []
    },
    
    // === 가이드레일 부품 (PT: 구매품) ===
    // 스크린용 120×70
    {
      id: `PT-${timestamp}-10`,
      itemCode: 'PT-GR-S-120-70-2438',
      itemName: '가이드레일 130×80×2438 (스크린 120×70)',
      itemType: 'PT' as const,
      itemCategory: '가이드레일',
      specification: '130×80×2438',
      unit: 'EA',
      productType: '스크린',
      baseSpec: '120×70',
      description: '스크린용 가이드레일 2438mm'
    },
    {
      id: `PT-${timestamp}-11`,
      itemCode: 'PT-GR-S-120-70-3000',
      itemName: '가이드레일 130×80×3000 (스크린 120×70)',
      itemType: 'PT' as const,
      itemCategory: '가이드레일',
      specification: '130×80×3000',
      unit: 'EA',
      productType: '스크린',
      baseSpec: '120×70',
      description: '스크린용 가이드레일 3000mm'
    },
    // 스크린용 120×120
    {
      id: `PT-${timestamp}-12`,
      itemCode: 'PT-GR-S-120-120-2438',
      itemName: '가이드레일 130×130×2438 (스크린 120×120)',
      itemType: 'PT' as const,
      itemCategory: '가이드레일',
      specification: '130×130×2438',
      unit: 'EA',
      productType: '스크린',
      baseSpec: '120×120',
      description: '스크린용 가이드레일 2438mm 대형'
    },
    {
      id: `PT-${timestamp}-13`,
      itemCode: 'PT-GR-S-120-120-3000',
      itemName: '가이드레일 130×130×3000 (스크린 120×120)',
      itemType: 'PT' as const,
      itemCategory: '가이드레일',
      specification: '130×130×3000',
      unit: 'EA',
      productType: '스크린',
      baseSpec: '120×120',
      description: '스크린용 가이드레일 3000mm 대형'
    },
    // 철재용 130×75
    {
      id: `PT-${timestamp}-14`,
      itemCode: 'PT-GR-I-130-75-2438',
      itemName: '가이드레일 140×85×2438 (철재 130×75)',
      itemType: 'PT' as const,
      itemCategory: '가이드레일',
      specification: '140×85×2438',
      unit: 'EA',
      productType: '철재',
      baseSpec: '130×75',
      description: '철재용 가이드레일 2438mm'
    },
    {
      id: `PT-${timestamp}-15`,
      itemCode: 'PT-GR-I-130-75-3000',
      itemName: '가이드레일 140×85×3000 (철재 130×75)',
      itemType: 'PT' as const,
      itemCategory: '가이드레일',
      specification: '140×85×3000',
      unit: 'EA',
      productType: '철재',
      baseSpec: '130×75',
      description: '철재용 가이드레일 3000mm'
    },
    // 철재용 130×125
    {
      id: `PT-${timestamp}-16`,
      itemCode: 'PT-GR-I-130-125-2438',
      itemName: '가이드레일 140×135×2438 (철재 130×125)',
      itemType: 'PT' as const,
      itemCategory: '가이드레일',
      specification: '140×135×2438',
      unit: 'EA',
      productType: '철재',
      baseSpec: '130×125',
      description: '철재용 가이드레일 2438mm 대형'
    },
    {
      id: `PT-${timestamp}-17`,
      itemCode: 'PT-GR-I-130-125-3000',
      itemName: '가이드레일 140×135×3000 (철재 130×125)',
      itemType: 'PT' as const,
      itemCategory: '가이드레일',
      specification: '140×135×3000',
      unit: 'EA',
      productType: '철재',
      baseSpec: '130×125',
      description: '철재용 가이드레일 3000mm 대형'
    },
    
    // === 케이스(셔터박스) 부품 ===
    {
      id: `PT-${timestamp}-20`,
      itemCode: 'PT-CASE-1219',
      itemName: '케이스 1219',
      itemType: 'PT' as const,
      itemCategory: '케이스',
      specification: '1219mm',
      unit: 'EA',
      description: '셔터박스 1219mm'
    },
    {
      id: `PT-${timestamp}-21`,
      itemCode: 'PT-CASE-2438',
      itemName: '케이스 2438',
      itemType: 'PT' as const,
      itemCategory: '케이스',
      specification: '2438mm',
      unit: 'EA',
      description: '셔터박스 2438mm'
    },
    {
      id: `PT-${timestamp}-22`,
      itemCode: 'PT-CASE-3000',
      itemName: '케이스 3000',
      itemType: 'PT' as const,
      itemCategory: '케이스',
      specification: '3000mm',
      unit: 'EA',
      description: '셔터박스 3000mm'
    },
    
    // === 모터 부품 (전원별) ===
    {
      id: `PT-${timestamp}-30`,
      itemCode: 'PT-MOTOR-150K-220V',
      itemName: '개폐전동기 150k 220V',
      itemType: 'PT' as const,
      itemCategory: '모터',
      specification: '150k/220V',
      unit: 'EA',
      description: '모터 150k 220V 전원'
    },
    {
      id: `PT-${timestamp}-31`,
      itemCode: 'PT-MOTOR-150K-380V',
      itemName: '개폐전동기 150k 380V',
      itemType: 'PT' as const,
      itemCategory: '모터',
      specification: '150k/380V',
      unit: 'EA',
      description: '모터 150k 380V 전원'
    },
    {
      id: `PT-${timestamp}-32`,
      itemCode: 'PT-MOTOR-300K-220V',
      itemName: '개폐전동기 300k 220V',
      itemType: 'PT' as const,
      itemCategory: '모터',
      specification: '300k/220V',
      unit: 'EA',
      description: '모터 300k 220V 전원'
    },
    {
      id: `PT-${timestamp}-33`,
      itemCode: 'PT-MOTOR-300K-380V',
      itemName: '개폐전동기 300k 380V',
      itemType: 'PT' as const,
      itemCategory: '모터',
      specification: '300k/380V',
      unit: 'EA',
      description: '모터 300k 380V 전원'
    },
    {
      id: `PT-${timestamp}-34`,
      itemCode: 'PT-MOTOR-400K-220V',
      itemName: '개폐전동기 400k 220V',
      itemType: 'PT' as const,
      itemCategory: '모터',
      specification: '400k/220V',
      unit: 'EA',
      description: '모터 400k 220V 전원'
    },
    {
      id: `PT-${timestamp}-35`,
      itemCode: 'PT-MOTOR-400K-380V',
      itemName: '개폐전동기 400k 380V',
      itemType: 'PT' as const,
      itemCategory: '모터',
      specification: '400k/380V',
      unit: 'EA',
      description: '모터 400k 380V 전원'
    },
    
    // === 제어기 부품 (설치 유형별) ===
    {
      id: `PT-${timestamp}-40`,
      itemCode: 'PT-CTL-EMBED',
      itemName: '제어기 매립형',
      itemType: 'PT' as const,
      itemCategory: '제어기',
      specification: '매립형',
      unit: 'EA',
      description: '매립형 제어기'
    },
    {
      id: `PT-${timestamp}-41`,
      itemCode: 'PT-CTL-EXPOSED',
      itemName: '제어기 노출형',
      itemType: 'PT' as const,
      itemCategory: '제어기',
      specification: '노출형',
      unit: 'EA',
      description: '노출형 제어기'
    },
    
    // === 기타 부품 ===
    {
      id: `PT-${timestamp}-50`,
      itemCode: 'PT-EDGE-WING',
      itemName: '마구리 날개',
      itemType: 'PT' as const,
      itemCategory: '마구리',
      specification: '가변',
      unit: 'EA',
      description: '마구리 날개 (치수 가변)'
    },
    {
      id: `PT-${timestamp}-51`,
      itemCode: 'PT-INSPECTION',
      itemName: '검사비',
      itemType: 'PT' as const,
      itemCategory: '검사',
      specification: '1회',
      unit: 'EA',
      description: '제품 검사비'
    }
  ];
  
  // ===============================================
  // 2. 단가 관리 데이터 생성
  // ===============================================
  const samplePricings = [
    // 가이드레일 단가
    { itemCode: 'PT-GR-S-120-70-2438', itemName: '가이드레일 130×80×2438 (스크린 120×70)', salesPrice: 45000, purchasePrice: 38000 },
    { itemCode: 'PT-GR-S-120-70-3000', itemName: '가이드레일 130×80×3000 (스크린 120×70)', salesPrice: 55000, purchasePrice: 47000 },
    { itemCode: 'PT-GR-S-120-120-2438', itemName: '가이드레일 130×130×2438 (스크린 120×120)', salesPrice: 60000, purchasePrice: 51000 },
    { itemCode: 'PT-GR-S-120-120-3000', itemName: '가이드레일 130×130×3000 (스크린 120×120)', salesPrice: 73000, purchasePrice: 62000 },
    { itemCode: 'PT-GR-I-130-75-2438', itemName: '가이드레일 140×85×2438 (철재 130×75)', salesPrice: 48000, purchasePrice: 41000 },
    { itemCode: 'PT-GR-I-130-75-3000', itemName: '가이드레일 140×85×3000 (철재 130×75)', salesPrice: 59000, purchasePrice: 50000 },
    { itemCode: 'PT-GR-I-130-125-2438', itemName: '가이드레일 140×135×2438 (철재 130×125)', salesPrice: 63000, purchasePrice: 54000 },
    { itemCode: 'PT-GR-I-130-125-3000', itemName: '가이드레일 140×135×3000 (철재 130×125)', salesPrice: 77000, purchasePrice: 66000 },
    
    // 케이스 단가
    { itemCode: 'PT-CASE-1219', itemName: '케이스 1219', salesPrice: 35000, purchasePrice: 30000 },
    { itemCode: 'PT-CASE-2438', itemName: '케이스 2438', salesPrice: 42000, purchasePrice: 36000 },
    { itemCode: 'PT-CASE-3000', itemName: '케이스 3000', salesPrice: 52000, purchasePrice: 44000 },
    
    // 모터 단가 (220V)
    { itemCode: 'PT-MOTOR-150K-220V', itemName: '개폐전동기 150k 220V', salesPrice: 120000, purchasePrice: 100000 },
    { itemCode: 'PT-MOTOR-300K-220V', itemName: '개폐전동기 300k 220V', salesPrice: 180000, purchasePrice: 150000 },
    { itemCode: 'PT-MOTOR-400K-220V', itemName: '개폐전동기 400k 220V', salesPrice: 240000, purchasePrice: 200000 },
    
    // 모터 단가 (380V)
    { itemCode: 'PT-MOTOR-150K-380V', itemName: '개폐전동기 150k 380V', salesPrice: 135000, purchasePrice: 112000 },
    { itemCode: 'PT-MOTOR-300K-380V', itemName: '개폐전동기 300k 380V', salesPrice: 202000, purchasePrice: 168000 },
    { itemCode: 'PT-MOTOR-400K-380V', itemName: '개폐전동기 400k 380V', salesPrice: 270000, purchasePrice: 225000 },
    
    // 제어기 단가
    { itemCode: 'PT-CTL-EMBED', itemName: '제어기 매립형', salesPrice: 85000, purchasePrice: 72000 },
    { itemCode: 'PT-CTL-EXPOSED', itemName: '제어기 노출형', salesPrice: 78000, purchasePrice: 66000 },
    
    // 기타 단가
    { itemCode: 'PT-EDGE-WING', itemName: '마구리 날개', salesPrice: 5000, purchasePrice: 4000 },
    { itemCode: 'PT-INSPECTION', itemName: '검사비', salesPrice: 50000, purchasePrice: 0 }
  ].map(p => ({
    ...p,
    unitPrice: p.salesPrice,
    currency: 'KRW',
    validFrom: '2025-01-01',
    validTo: '2025-12-31'
  }));
  
  // ===============================================
  // 3. 품목 수식 관리 데이터 생성
  // ===============================================
  const sampleFormulaRules = [
    // 3-1. 오픈사이즈 계산
    {
      ruleCode: 'OPEN-SIZE-W0',
      ruleName: '오픈사이즈 W0 (가로)',
      category: '오픈사이즈',
      inputVariable: 'W0',
      ruleType: 'formula',
      formula: 'W0',
      outputFormula: 'W0',
      unit: 'mm',
      description: '자동 견적 산출 섹션의 오픈사이즈 W0 입력값',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'OPEN-SIZE-H0',
      ruleName: '오픈사이즈 H0 (세로)',
      category: '오픈사이즈',
      inputVariable: 'H0',
      ruleType: 'formula',
      formula: 'H0',
      outputFormula: 'H0',
      unit: 'mm',
      description: '자동 견적 산출 섹션의 오픈사이즈 H0 입력값',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-2. 제작사이즈 계산
    {
      ruleCode: 'MAKE-SIZE-W1-SCREEN',
      ruleName: '제작사이즈 W1 (스크린)',
      category: '제작사이즈',
      inputVariable: 'W0',
      ruleType: 'formula',
      formula: 'W0 + 140',
      outputFormula: 'W0 + 140',
      unit: 'mm',
      description: '스크린 제작 가로 = 오픈 가로 + 140',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'MAKE-SIZE-H1-SCREEN',
      ruleName: '제작사이즈 H1 (스크린)',
      category: '제작사이즈',
      inputVariable: 'H0',
      ruleType: 'formula',
      formula: 'H0 + 350',
      outputFormula: 'H0 + 350',
      unit: 'mm',
      description: '스크린 제작 세로 = 오픈 세로 + 350',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'MAKE-SIZE-W1-STEEL',
      ruleName: '제작사이즈 W1 (철재)',
      category: '제작사이즈',
      inputVariable: 'W0',
      ruleType: 'formula',
      formula: 'W0 + 110',
      outputFormula: 'W0 + 110',
      unit: 'mm',
      description: '철재 제작 가로 = 오픈 가로 + 110',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'MAKE-SIZE-H1-STEEL',
      ruleName: '제작사이즈 H1 (철재)',
      category: '제작사이즈',
      inputVariable: 'H0',
      ruleType: 'formula',
      formula: 'H0 + 350',
      outputFormula: 'H0 + 350',
      unit: 'mm',
      description: '철재 제작 세로 = 오픈 세로 + 350',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-3. 면적 계산
    {
      ruleCode: 'AREA-CALCULATION',
      ruleName: '면적 계산',
      category: '면적',
      inputVariable: 'W1,H1',
      ruleType: 'formula',
      formula: 'W1 * H1 / 1000000',
      outputFormula: 'W1 * H1 / 1000000',
      unit: '㎡',
      description: '면적(㎡) = 제작가로(W1) × 제작세로(H1) ÷ 1,000,000',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-4. 중량 계산
    {
      ruleCode: 'WEIGHT-CALCULATION-SCREEN',
      ruleName: '중량 계산 (스크린)',
      category: '중량',
      inputVariable: 'M,W0',
      ruleType: 'formula',
      formula: 'M * 2 + W0 / 1000 * 14.17',
      outputFormula: 'M * 2 + W0 / 1000 * 14.17',
      unit: 'kg',
      description: '스크린 중량(kg) = 면적 × 2 + (오픈가로 ÷ 1000 × 14.17)',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'WEIGHT-CALCULATION-STEEL',
      ruleName: '중량 계산 (철재)',
      category: '중량',
      inputVariable: 'M',
      ruleType: 'formula',
      formula: 'M * 25',
      outputFormula: 'M * 25',
      unit: 'kg',
      description: '철재 중량(kg) = 면적 × 25',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-5. 가이드레일 자동 산출
    {
      ruleCode: 'GUIDERAIL-LENGTH',
      ruleName: '가이드레일 제작길이',
      category: '가이드레일',
      inputVariable: 'H0',
      ruleType: 'formula',
      formula: 'H0 + 250',
      outputFormula: 'H0 + 250',
      unit: 'mm',
      description: '가이드레일 제작길이(G) = 오픈세로(H0) + 250',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'GUIDERAIL-AUTO-SELECT',
      ruleName: '가이드레일 자재 자동 선택',
      category: '가이드레일',
      inputVariable: 'G',
      ruleType: 'range',
      ranges: [
        {
          minValue: 1219,
          maxValue: 2438,
          result: '2438 2개',
          itemCode: '',
          quantity: 2,
          description: '1219 < G ≤ 2438'
        },
        {
          minValue: 2438,
          maxValue: 3000,
          result: '3000 2개',
          itemCode: '',
          quantity: 2,
          description: '2438 < G ≤ 3000'
        }
      ],
      unit: 'EA',
      description: '가이드레일 길이 및 수량 자동 산출 (기본 2개)',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'GUIDERAIL-QUANTITY-WALL',
      ruleName: '가이드레일 수량 (벽면형)',
      category: '가이드레일',
      inputVariable: 'BASE_QTY',
      ruleType: 'formula',
      formula: 'BASE_QTY',
      outputFormula: 'BASE_QTY',
      unit: 'EA',
      description: '벽면형: 기본 수량 그대로 (좌우 2개)',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'GUIDERAIL-QUANTITY-SIDE',
      ruleName: '가이드레일 수량 (측면형)',
      category: '가이드레일',
      inputVariable: 'BASE_QTY',
      ruleType: 'formula',
      formula: 'BASE_QTY / 2',
      outputFormula: 'BASE_QTY / 2',
      unit: 'EA',
      description: '측면형: 기본 수량의 절반 (한쪽만)',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'GUIDERAIL-QUANTITY-MIXED',
      ruleName: '가이드레일 수량 (혼합형)',
      category: '가이드레일',
      inputVariable: 'BASE_QTY',
      ruleType: 'formula',
      formula: 'BASE_QTY * 1.5',
      outputFormula: 'BASE_QTY * 1.5',
      unit: 'EA',
      description: '혼합형: 기본 수량 × 1.5',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-6. 케이스(셔터박스) 자동 산출
    {
      ruleCode: 'CASE-SIZE-SCREEN',
      ruleName: '케이스 사이즈 (스크린)',
      category: '케이스',
      inputVariable: 'W0',
      ruleType: 'formula',
      formula: 'W0 + 220',
      outputFormula: 'W0 + 220',
      unit: 'mm',
      description: '스크린 케이스 사이즈(S) = 오픈가로(W0) + 220',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'CASE-SIZE-STEEL',
      ruleName: '케이스 사이즈 (철재)',
      category: '케이스',
      inputVariable: 'W0',
      ruleType: 'formula',
      formula: 'W0 + 240',
      outputFormula: 'W0 + 240',
      unit: 'mm',
      description: '철재 케이스 사이즈(S) = 오픈가로(W0) + 240',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'CASE-AUTO-SELECT',
      ruleName: '케이스 자재 자동 선택',
      category: '케이스',
      inputVariable: 'S',
      ruleType: 'range',
      ranges: [
        {
          minValue: 0,
          maxValue: 1219,
          result: '1219 1개',
          itemCode: 'PT-CASE-1219',
          quantity: 1,
          description: '0 < S ≤ 1219'
        },
        {
          minValue: 1219,
          maxValue: 2438,
          result: '2438 1개',
          itemCode: 'PT-CASE-2438',
          quantity: 1,
          description: '1219 < S ≤ 2438'
        },
        {
          minValue: 2438,
          maxValue: 3000,
          result: '3000 1개',
          itemCode: 'PT-CASE-3000',
          quantity: 1,
          description: '2438 < S ≤ 3000'
        }
      ],
      unit: 'EA',
      description: '케이스 자재 길이 및 수량 자동 산출',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-7. 모터 자동 선택
    {
      ruleCode: 'MOTOR-AUTO-SELECT',
      ruleName: '모터 자동 선택',
      category: '모터',
      inputVariable: 'K,POWER',
      ruleType: 'range',
      ranges: [
        {
          minValue: 0,
          maxValue: 150,
          result: '150k',
          itemCode: '',
          quantity: 1,
          description: '0 < K ≤ 150kg'
        },
        {
          minValue: 150,
          maxValue: 300,
          result: '300k',
          itemCode: '',
          quantity: 1,
          description: '150 < K ≤ 300kg'
        },
        {
          minValue: 300,
          maxValue: 400,
          result: '400k',
          itemCode: '',
          quantity: 1,
          description: '300 < K ≤ 400kg'
        }
      ],
      unit: 'EA',
      description: '모터 중량 기반 자동 선택 (전원 유형 반영)',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-8. 제어기 자동 선택
    {
      ruleCode: 'CONTROLLER-AUTO-SELECT',
      ruleName: '제어기 자동 선택',
      category: '제어기',
      inputVariable: 'CONTROLLER_TYPE',
      ruleType: 'mapping',
      formula: '',
      outputFormula: '',
      unit: 'EA',
      description: '연동제어기 설치 유형(매립/노출)에 따라 자동 선택',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-9. 마구리 날개 수량 계산
    {
      ruleCode: 'EDGE-WING-QUANTITY',
      ruleName: '마구리 날개 수량 계산',
      category: '마구리',
      inputVariable: 'EDGE_WING_SIZE',
      ruleType: 'formula',
      formula: 'EDGE_WING_SIZE / 50',
      outputFormula: 'EDGE_WING_SIZE / 50',
      unit: 'EA',
      description: '마구리 날개치수 ÷ 50 = 수량',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 3-10. 검사비
    {
      ruleCode: 'INSPECTION-FEE',
      ruleName: '검사비',
      category: '검사',
      inputVariable: 'INSPECTION_FEE',
      ruleType: 'formula',
      formula: '1',
      outputFormula: '1',
      unit: 'EA',
      description: '검사비 고정 1EA (단가는 검사비 설정값 적용)',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    
    // 4. 단가 수식
    {
      ruleCode: 'PRICE-FORMULA-GUIDERAIL',
      ruleName: '가이드레일 단가 수식',
      category: '단가수식',
      inputVariable: 'QTY,UNIT_PRICE',
      ruleType: 'formula',
      formula: 'QTY * UNIT_PRICE',
      outputFormula: 'QTY * UNIT_PRICE',
      unit: '원',
      description: '가이드레일 총액 = 수량 × 단가',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'PRICE-FORMULA-CASE',
      ruleName: '케이스 단가 수식',
      category: '단가수식',
      inputVariable: 'QTY,UNIT_PRICE',
      ruleType: 'formula',
      formula: 'QTY * UNIT_PRICE',
      outputFormula: 'QTY * UNIT_PRICE',
      unit: '원',
      description: '케이스 총액 = 수량 × 단가',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'PRICE-FORMULA-MOTOR',
      ruleName: '모터 단가 수식',
      category: '단가수식',
      inputVariable: 'QTY,UNIT_PRICE',
      ruleType: 'formula',
      formula: 'QTY * UNIT_PRICE',
      outputFormula: 'QTY * UNIT_PRICE',
      unit: '원',
      description: '모터 총액 = 수량 × 단가',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'PRICE-FORMULA-CONTROLLER',
      ruleName: '제어기 단가 수식',
      category: '단가수식',
      inputVariable: 'QTY,UNIT_PRICE',
      ruleType: 'formula',
      formula: 'QTY * UNIT_PRICE',
      outputFormula: 'QTY * UNIT_PRICE',
      unit: '원',
      description: '제어기 총액 = 수량 × 단가',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'PRICE-FORMULA-EDGE-WING',
      ruleName: '마구리 날개 단가 수식',
      category: '단가수식',
      inputVariable: 'QTY,UNIT_PRICE',
      ruleType: 'formula',
      formula: 'QTY * UNIT_PRICE',
      outputFormula: 'QTY * UNIT_PRICE',
      unit: '원',
      description: '마구리 날개 총액 = 수량 × 단가',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'PRICE-FORMULA-INSPECTION',
      ruleName: '검사비 단가 수식',
      category: '단가수식',
      inputVariable: 'INSPECTION_FEE',
      ruleType: 'formula',
      formula: 'INSPECTION_FEE',
      outputFormula: 'INSPECTION_FEE',
      unit: '원',
      description: '검사비 = 입력한 검사비 설정값',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'PRICE-FORMULA-AREA-SCREEN',
      ruleName: '면적 기반 단가 (스크린)',
      category: '단가수식',
      inputVariable: 'AREA,UNIT_PRICE_PER_M2',
      ruleType: 'formula',
      formula: 'AREA * UNIT_PRICE_PER_M2',
      outputFormula: 'AREA * UNIT_PRICE_PER_M2',
      unit: '원',
      description: '스크린 면적 기반 총액 = 면적(㎡) × ㎡당 단가',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    },
    {
      ruleCode: 'PRICE-FORMULA-AREA-STEEL',
      ruleName: '면적 기반 단가 (철재)',
      category: '단가수식',
      inputVariable: 'AREA,UNIT_PRICE_PER_M2',
      ruleType: 'formula',
      formula: 'AREA * UNIT_PRICE_PER_M2',
      outputFormula: 'AREA * UNIT_PRICE_PER_M2',
      unit: '원',
      description: '철재 면적 기반 총액 = 면적(㎡) × ㎡당 단가',
      status: 'active',
      currentRevision: 0,
      isFinal: false
    }
  ];
  
  // ===============================================
  // 4. 분류 데이터 생성
  // ===============================================
  const sampleCategoryGroups = [
    {
      id: `CG-${timestamp}-1`,
      name: '오픈사이즈',
      description: '제품의 설치 오픈 사이즈 (W0, H0)',
      order: 1
    },
    {
      id: `CG-${timestamp}-2`,
      name: '제작사이즈',
      description: '실제 제작 사이즈 (W1, H1)',
      order: 2
    },
    {
      id: `CG-${timestamp}-3`,
      name: '면적',
      description: '제품 면적 계산 (㎡)',
      order: 3
    },
    {
      id: `CG-${timestamp}-4`,
      name: '중량',
      description: '제품 중량 계산 (kg)',
      order: 4
    },
    {
      id: `CG-${timestamp}-5`,
      name: '가이드레일',
      description: '가이드레일 자동 선택 및 수량 계산',
      order: 5
    },
    {
      id: `CG-${timestamp}-6`,
      name: '케이스',
      description: '케이스(셔터박스) 자동 선택',
      order: 6
    },
    {
      id: `CG-${timestamp}-7`,
      name: '모터',
      description: '개폐전동기 자동 선택',
      order: 7
    },
    {
      id: `CG-${timestamp}-8`,
      name: '제어기',
      description: '연동제어기 자동 선택',
      order: 8
    },
    {
      id: `CG-${timestamp}-9`,
      name: '마구리',
      description: '마구리 날개 수량 계산',
      order: 9
    },
    {
      id: `CG-${timestamp}-10`,
      name: '검사',
      description: '제품 검사비',
      order: 10
    },
    {
      id: `CG-${timestamp}-11`,
      name: '단가수식',
      description: '품목별 단가 계산 수식',
      order: 11
    }
  ];
  
  return {
    itemMasters: sampleItemMasters,
    pricings: samplePricings,
    formulaRules: sampleFormulaRules,
    categoryGroups: sampleCategoryGroups
  };
}
