// 공정기준 Config - 방화셔터 제조용
const processMasterConfig = {
  id: 'process',
  title: '공정기준 목록',
  description: '공정 템플릿과 필드를 관리합니다',
  icon: 'GitBranch',
  tabs: [
    { id: 'hierarchy', label: '계층구조', icon: 'GitBranch' },
    { id: 'section', label: '섹션', icon: 'Layers' },
    { id: 'field', label: '항목', icon: 'ClipboardList' },
    { id: 'attribute', label: '속성', icon: 'Settings' },
  ],
  entityTypes: [
    { id: 1, code: 'PROD', name: '생산', description: '생산 공정', sortOrder: 1, isActive: true },
    { id: 2, code: 'QC', name: '검사', description: '품질검사 공정', sortOrder: 2, isActive: true },
    { id: 3, code: 'PACK', name: '포장', description: '포장/출하 공정', sortOrder: 3, isActive: true },
  ],
  categories: [
    { id: 1, code: 'SCREEN', name: '스크린', parentId: null, level: 1, path: '/1', sortOrder: 1 },
    { id: 2, code: 'SLAT', name: '슬랫', parentId: null, level: 1, path: '/2', sortOrder: 2 },
    { id: 3, code: 'FOLD', name: '절곡', parentId: null, level: 1, path: '/3', sortOrder: 3 },
    { id: 4, code: 'STOCK', name: '재고', parentId: null, level: 1, path: '/4', sortOrder: 4 },
    { id: 5, code: 'PACK', name: '포장', parentId: null, level: 1, path: '/5', sortOrder: 5 },
  ],

  // ============ 공정별 세부 작업 단계 정의 ============
  processWorkflows: {
    // 스크린 공정: 자재투입 → 절단매수확인 → 절단 → 절단Check → 미싱 → 앤드락작업 → 중간검사 → 포장
    SCREEN: {
      code: 'SCREEN',
      name: '스크린',
      description: '스크린 원단 가공 공정',
      steps: [
        {
          stepNo: 1,
          stepCode: 'SCR-MAT',
          stepName: '자재투입',
          description: '스크린 원단 자재 투입 및 준비',
          estimatedTime: 10,
          requiredEquipment: ['자재대기대'],
          inputMaterials: ['스크린 원단 (LOT)'],
          outputMaterials: ['투입 준비된 원단'],
          checkPoints: ['자재LOT 확인', '원단 상태 확인', '투입 수량 확인'],
        },
        {
          stepNo: 2,
          stepCode: 'SCR-CNT',
          stepName: '절단매수확인',
          description: '절단할 매수 및 규격 확인',
          estimatedTime: 5,
          requiredEquipment: [],
          inputMaterials: ['투입 준비된 원단'],
          outputMaterials: ['절단 대기 원단'],
          checkPoints: ['절단 매수 확인', '규격(W×H) 확인', '작업지시서 대조'],
        },
        {
          stepNo: 3,
          stepCode: 'SCR-CUT',
          stepName: '원단 절단',
          description: '스크린 원단을 규격에 맞게 절단',
          estimatedTime: 30,
          requiredEquipment: ['절단기'],
          inputMaterials: ['절단 대기 원단'],
          outputMaterials: ['절단된 스크린'],
          checkPoints: ['절단 치수 확인', '원단 결함 검사'],
        },
        {
          stepNo: 4,
          stepCode: 'SCR-CHK',
          stepName: '절단 Check',
          description: '절단 완료 후 품질 확인',
          estimatedTime: 10,
          requiredEquipment: ['측정기', '검사대'],
          inputMaterials: ['절단된 스크린'],
          outputMaterials: ['검사 완료 절단 스크린'],
          checkPoints: ['절단 치수 정확도', '절단면 상태', '매수 확인'],
          isQCStep: true,
        },
        {
          stepNo: 5,
          stepCode: 'SCR-SEW',
          stepName: '미싱',
          description: '절단된 원단 봉제 작업',
          estimatedTime: 45,
          requiredEquipment: ['공업용 미싱기'],
          inputMaterials: ['검사 완료 절단 스크린'],
          outputMaterials: ['봉제된 스크린'],
          checkPoints: ['봉제선 상태', '실 장력 확인'],
        },
        {
          stepNo: 6,
          stepCode: 'SCR-END',
          stepName: '앤드락 작업',
          description: '스크린 끝단 마감 및 앤드락 부착',
          estimatedTime: 20,
          requiredEquipment: ['앤드락 부착기'],
          inputMaterials: ['봉제된 스크린', '앤드락'],
          outputMaterials: ['앤드락 완료 스크린'],
          checkPoints: ['앤드락 부착 상태', '끝단 마감 상태'],
        },
        {
          stepNo: 7,
          stepCode: 'SCR-QC',
          stepName: '중간검사',
          description: '스크린 품질 검사',
          estimatedTime: 15,
          requiredEquipment: [],
          inputMaterials: ['앤드락 완료 스크린'],
          outputMaterials: ['검사 완료 스크린'],
          checkPoints: ['외관 검사', '치수 검사', '기능 검사'],
          isQCStep: true,
        },
        {
          stepNo: 8,
          stepCode: 'SCR-PACK',
          stepName: '포장',
          description: '스크린 포장 및 라벨 부착',
          estimatedTime: 10,
          requiredEquipment: ['포장기'],
          inputMaterials: ['검사 완료 스크린', '포장재', '라벨'],
          outputMaterials: ['포장 완료 스크린'],
          checkPoints: ['포장 상태', '라벨 정보 확인'],
          note: '포장 후 식별용 라벨 또는 메모 필요 (현재는 매직으로 직접 쓰고 있음. 층별/부호/분할정보 등)',
        },
      ],
    },

    // 슬랫 공정: 코일절단 → 미미작업(미세/미마감) → 중간검사 → 포장
    SLAT: {
      code: 'SLAT',
      name: '슬랫',
      description: '슬랫 코일 가공 공정',
      steps: [
        {
          stepNo: 1,
          stepCode: 'SLT-CUT',
          stepName: '코일 절단',
          description: '슬랫 코일을 규격에 맞게 절단',
          estimatedTime: 25,
          requiredEquipment: ['코일 절단기', '언코일러'],
          inputMaterials: ['슬랫 코일'],
          outputMaterials: ['절단된 슬랫'],
          checkPoints: ['절단 길이 확인', '버(Burr) 상태'],
          calculationMethod: '높이 기반 절단 매수 자동 산출',
        },
        {
          stepNo: 2,
          stepCode: 'SLT-FIN',
          stepName: '미미작업',
          description: '미세 가공 및 미마감 작업',
          estimatedTime: 20,
          requiredEquipment: ['버 제거기', '마감 도구'],
          inputMaterials: ['절단된 슬랫'],
          outputMaterials: ['마감 완료 슬랫'],
          checkPoints: ['모서리 상태', '표면 마감'],
          subSteps: ['미세 가공', '미마감'],
        },
        {
          stepNo: 3,
          stepCode: 'SLT-QC1',
          stepName: '중간검사',
          description: '미미작업 완료 후 품질 검사',
          estimatedTime: 10,
          requiredEquipment: [],
          inputMaterials: ['마감 완료 슬랫'],
          outputMaterials: ['검사 완료 슬랫'],
          checkPoints: ['치수 검사', '표면 상태', '마감 상태'],
          isQCStep: true,
        },
        {
          stepNo: 4,
          stepCode: 'SLT-PACK',
          stepName: '포장',
          description: '슬랫 포장 및 라벨 부착',
          estimatedTime: 10,
          requiredEquipment: ['포장기'],
          inputMaterials: ['검사 완료 슬랫', '포장재', '라벨'],
          outputMaterials: ['포장 완료 슬랫'],
          checkPoints: ['포장 상태', '라벨 정보 확인'],
          note: '포장 후 식별용 라벨 또는 메모 필요 (현재는 매직으로 직접 쓰고 있음. 층별/부호/분할정보 등)',
        },
      ],
    },

    // 절곡 공정: 절곡판/절곡코일절단 → V컷팅 → 절곡 → 중간검사 → 포장
    FOLD: {
      code: 'FOLD',
      name: '절곡',
      description: '절곡판/코일 가공 공정',
      steps: [
        {
          stepNo: 1,
          stepCode: 'FLD-CUT',
          stepName: '절곡판/절곡코일 절단',
          description: '절곡용 판재 또는 코일 절단',
          estimatedTime: 30,
          requiredEquipment: ['절단기', '쉬어링기'],
          inputMaterials: ['절곡판', '절곡코일'],
          outputMaterials: ['절단된 판재'],
          checkPoints: ['절단 치수', '직각도'],
          calculationMethod: 'kg → 장 환산 (자재LOT 선택 후 투입 수량 지정)',
        },
        {
          stepNo: 2,
          stepCode: 'FLD-VCUT',
          stepName: 'V컷팅',
          description: '절곡 전 V홈 가공 (절곡선 형성)',
          estimatedTime: 25,
          requiredEquipment: ['V컷팅기', 'CNC V그루빙'],
          inputMaterials: ['절단된 판재'],
          outputMaterials: ['V컷팅 완료 판재'],
          checkPoints: ['V홈 깊이 확인', 'V홈 위치 정확도', '절곡선 직선도'],
          note: '절곡 각도와 외관 품질 향상을 위한 V홈 가공',
        },
        {
          stepNo: 3,
          stepCode: 'FLD-BEND',
          stepName: '절곡',
          description: '판재 절곡 가공',
          estimatedTime: 40,
          requiredEquipment: ['절곡기', '프레스 브레이크'],
          inputMaterials: ['V컷팅 완료 판재'],
          outputMaterials: ['절곡 완료 부품'],
          checkPoints: ['절곡 각도', '치수 정확도', '표면 상태'],
        },
        {
          stepNo: 4,
          stepCode: 'FLD-QC',
          stepName: '중간검사',
          description: '절곡 품질 검사',
          estimatedTime: 15,
          requiredEquipment: ['각도기', '버니어캘리퍼스'],
          inputMaterials: ['절곡 완료 부품'],
          outputMaterials: ['검사 완료 부품'],
          checkPoints: ['절곡 각도 측정', '치수 측정', '외관 검사'],
          isQCStep: true,
        },
        {
          stepNo: 5,
          stepCode: 'FLD-PACK',
          stepName: '포장',
          description: '절곡 부품 포장 및 라벨 부착',
          estimatedTime: 10,
          requiredEquipment: ['포장기'],
          inputMaterials: ['검사 완료 부품', '포장재', '라벨'],
          outputMaterials: ['포장 완료 부품'],
          checkPoints: ['포장 상태', '라벨 정보 확인'],
          note: '포장 후 식별용 라벨 또는 메모 필요 (현재는 매직으로 직접 쓰고 있음. 층별/부호/분할정보 등)',
        },
      ],
    },

    // 재고 생산 공정 (포밍): 포밍 → 검사 → 포장
    // 절곡 부품용 반제품을 미리 생산하여 재고로 보관
    STOCK: {
      code: 'STOCK',
      name: '재고 생산 (포밍)',
      description: '절곡 부품용 포밍 공정 - 철판을 성형하여 반제품 생산 후 재고 보관',
      steps: [
        {
          stepNo: 1,
          stepCode: 'STK-FORM',
          stepName: '포밍',
          description: '철판을 포밍기로 성형하여 절곡 부품(반제품) 생산',
          estimatedTime: 40,
          requiredEquipment: ['포밍기', '프레스'],
          inputMaterials: ['철판(아연도금강판)', '절곡코일'],
          outputMaterials: ['포밍 완료 부품'],
          checkPoints: ['성형 형상 확인', '치수 측정', '표면 상태'],
          calculationMethod: '투입 장수 또는 중량 기준 생산',
        },
        {
          stepNo: 2,
          stepCode: 'STK-QC',
          stepName: '검사',
          description: '포밍 완료 부품 품질 검사',
          estimatedTime: 15,
          requiredEquipment: ['버니어캘리퍼스', '각도기'],
          inputMaterials: ['포밍 완료 부품'],
          outputMaterials: ['검사 완료 부품'],
          checkPoints: ['치수 검사', '형상 검사', '외관 검사', '표면 결함'],
          isQCStep: true,
        },
        {
          stepNo: 3,
          stepCode: 'STK-PACK',
          stepName: '포장',
          description: '검사 완료 부품 포장 및 재고 입고',
          estimatedTime: 10,
          requiredEquipment: ['포장기'],
          inputMaterials: ['검사 완료 부품', '포장재', '라벨'],
          outputMaterials: ['포장 완료 부품 (재고 입고)'],
          checkPoints: ['포장 상태', '라벨 정보 확인', '재고 입고 처리'],
          note: '포장 후 재고 창고로 입고 - 부품코드/LOT번호/수량 라벨 부착',
        },
      ],
    },
  },

  // ============ 공정 흐름 관계 정의 (모든 공정 → 포장으로 합류) ============
  workflowRelations: {
    // 포장 공정은 모든 공정의 최종 합류점
    mergePoint: 'PACK',
    flows: [
      { from: 'SCREEN', to: 'PACK', description: '스크린 → 포장' },
      { from: 'SLAT', to: 'PACK', description: '슬랫 → 포장' },
      { from: 'FOLD', to: 'PACK', description: '절곡 → 포장' },
      { from: 'STOCK', to: 'PACK', description: '재고 → 포장' },
    ],
  },

  // 공정별 자재 투입 방식
  materialInputMethods: {
    SCREEN: {
      unit: 'W×H',
      description: '수주W × 자재LOT H 조합',
      calculationNote: '스크린 원단 폭과 높이 조합으로 절단',
    },
    SLAT: {
      unit: '자동산출',
      description: '높이 기반 절단매수 자동 계산',
      calculationNote: '셔터 높이 ÷ 슬랫 피치 = 필요 슬랫 수',
    },
    FOLD: {
      unit: 'kg→장',
      description: '자재LOT 선택 후 투입 수량(장) 지정',
      calculationNote: '총 중량(kg) ÷ 장당 중량 = 투입 장수',
    },
    STOCK: {
      unit: 'kg→EA',
      description: '철판 투입 후 포밍하여 부품 생산',
      calculationNote: '투입 중량(kg) 또는 장수 → 포밍 부품 수량(EA)',
    },
  },

  masterFields: [
    { id: 1, fieldKey: 'processCode', fieldName: '공정코드', inputType: 'text', isRequired: true, validations: { maxLength: 20 }, description: '공정 식별 코드' },
    { id: 2, fieldKey: 'processName', fieldName: '공정명', inputType: 'text', isRequired: true, validations: { maxLength: 100 }, description: '공정 이름' },
    { id: 3, fieldKey: 'processType', fieldName: '공정구분', inputType: 'select', isRequired: true, options: { items: ['생산', '검사', '포장'] }, description: '공정 구분' },
    {
      id: 4,
      fieldKey: 'department',
      fieldName: '담당부서',
      inputType: 'select',
      isRequired: true,
      dataSource: {
        type: 'reference',
        target: 'departments',
        valueField: 'code',
        labelField: 'name',
        filter: { isActive: true }
      },
      description: '담당 부서'
    },
    { id: 5, fieldKey: 'equipment', fieldName: '설비정보', inputType: 'text', isRequired: false, description: '사용 설비 정보' },
    { id: 6, fieldKey: 'personnel', fieldName: '필요인원', inputType: 'number', isRequired: false, validations: { min: 1 }, description: '공정 필요 인원' },
    {
      id: 7,
      fieldKey: 'workSheetType',
      fieldName: '작업일지 양식',
      inputType: 'select',
      isRequired: false,
      dataSource: {
        type: 'reference',
        target: 'documentTemplates',
        valueField: 'code',
        labelField: 'name',
        filter: { category: 'WORKSHEET', isActive: true }
      },
      description: '작업일지 양식'
    },
    {
      id: 8,
      fieldKey: 'workflowCode',
      fieldName: '공정흐름코드',
      inputType: 'select',
      isRequired: true,
      options: { items: ['SCREEN', 'SLAT', 'FOLD', 'STOCK'] },
      description: '세부 작업단계 참조용 공정 코드'
    },
    { id: 9, fieldKey: 'description', fieldName: '설명', inputType: 'textarea', isRequired: false, description: '공정 설명' },
    { id: 10, fieldKey: 'isActive', fieldName: '사용여부', inputType: 'checkbox', isRequired: false, description: '사용 여부' },
  ],
  masterSections: [
    { id: 1, sectionKey: 'basicInfo', sectionName: '기본정보', sectionType: 'general', applicableTypes: ['PROD', 'QC', 'PACK'], description: '공정 기본 정보', fields: [1, 2, 3, 4] },
    { id: 2, sectionKey: 'resourceInfo', sectionName: '자원정보', sectionType: 'general', applicableTypes: ['PROD', 'PACK'], description: '설비/인력 정보', fields: [5, 6] },
    { id: 3, sectionKey: 'workInfo', sectionName: '작업정보', sectionType: 'general', applicableTypes: ['PROD', 'QC', 'PACK'], description: '작업 관련 정보', fields: [7, 8, 9] },
  ],
  pageTemplates: [
    {
      id: 1, pageCode: 'process_registration', pageName: '공정 등록', pagePath: '/기준정보/공정_등록', itemTypes: ['PROD'],
      sections: [
        { sectionId: 1, sectionKey: 'basicInfo', sectionName: '기본정보', sortOrder: 1, fields: [
          { fieldId: 1, fieldKey: 'processCode', fieldName: '공정코드', inputType: 'text', isRequired: true },
          { fieldId: 2, fieldKey: 'processName', fieldName: '공정명', inputType: 'text', isRequired: true },
          { fieldId: 3, fieldKey: 'processType', fieldName: '공정구분', inputType: 'select', isRequired: true },
          { fieldId: 4, fieldKey: 'department', fieldName: '담당부서', inputType: 'select', isRequired: true, dataSource: { type: 'reference', target: 'departments' } },
        ]},
        { sectionId: 2, sectionKey: 'resourceInfo', sectionName: '자원정보', sortOrder: 2, fields: [
          { fieldId: 5, fieldKey: 'equipment', fieldName: '설비정보', inputType: 'text', isRequired: false },
          { fieldId: 6, fieldKey: 'personnel', fieldName: '필요인원', inputType: 'number', isRequired: false },
        ]},
        { sectionId: 3, sectionKey: 'workInfo', sectionName: '작업정보', sortOrder: 3, fields: [
          { fieldId: 7, fieldKey: 'workSheetType', fieldName: '작업일지 양식', inputType: 'select', isRequired: false, dataSource: { type: 'reference', target: 'documentTemplates' } },
          { fieldId: 8, fieldKey: 'workflowCode', fieldName: '공정흐름코드', inputType: 'select', isRequired: true },
          { fieldId: 9, fieldKey: 'description', fieldName: '설명', inputType: 'textarea', isRequired: false },
        ]},
      ],
      conditions: []
    }
  ],

  // ============ 등록된 공정 샘플 데이터 ============
  sampleProcesses: [
    {
      id: 1,
      processCode: 'SCR-001',
      processName: '스크린 생산',
      processType: '생산',
      workflowCode: 'SCREEN',
      department: '생산1팀',
      equipment: '절단기, 미싱기, 앤드락부착기',
      personnel: 3,
      description: '스크린 원단 가공 및 조립 공정',
      isActive: true,
      createdAt: '2024-01-15',
    },
    {
      id: 2,
      processCode: 'SLT-001',
      processName: '슬랫 생산',
      processType: '생산',
      workflowCode: 'SLAT',
      department: '생산2팀',
      equipment: '코일절단기, 미미작업대',
      personnel: 2,
      description: '슬랫 코일 절단 및 가공 공정',
      isActive: true,
      createdAt: '2024-01-15',
    },
    {
      id: 3,
      processCode: 'FLD-001',
      processName: '절곡 생산',
      processType: '생산',
      workflowCode: 'FOLD',
      department: '생산3팀',
      equipment: '절곡기, 절단기',
      personnel: 2,
      description: '철판 절곡 및 가공 공정',
      isActive: true,
      createdAt: '2024-01-15',
    },
    {
      id: 4,
      processCode: 'STK-001',
      processName: '재고 생산',
      processType: '생산',
      workflowCode: 'STOCK',
      department: '생산1팀',
      equipment: '조립대, 포장기',
      personnel: 2,
      description: '재고 부품 출고 및 조립 공정',
      isActive: true,
      createdAt: '2024-02-01',
    },
    {
      id: 5,
      processCode: 'QC-001',
      processName: '중간검사',
      processType: '검사',
      workflowCode: 'SCREEN',
      department: '품질팀',
      equipment: '검사대, 측정기',
      personnel: 1,
      description: '공정 중간 품질검사',
      isActive: true,
      createdAt: '2024-01-15',
    },
    {
      id: 6,
      processCode: 'PKG-001',
      processName: '최종포장',
      processType: '포장',
      workflowCode: 'SCREEN',
      department: '물류팀',
      equipment: '포장기, 라벨프린터',
      personnel: 2,
      description: '완제품 포장 및 출하준비',
      isActive: true,
      createdAt: '2024-01-15',
    },
  ],
};

export default processMasterConfig;
