// ============================================================
// 화면별 UI 기능정의 문서
// 각 화면의 UI 요소별 기능을 상세히 정의
// ============================================================

// 기능정의 데이터 구조
// {
//   screenId: '화면 ID',
//   screenName: '화면명',
//   screenType: 'list' | 'form' | 'detail',
//   description: '화면 설명',
//   sections: [
//     {
//       id: '섹션 ID',
//       title: '섹션 제목',
//       elements: [
//         {
//           id: '요소 ID',
//           type: 'button' | 'input' | 'select' | 'table' | 'card' | 'checkbox' | 'tab',
//           label: '요소 라벨',
//           description: '기능 설명',
//           action: '동작 설명',
//           validation: '유효성 검사 규칙',
//           dataSource: '데이터 소스',
//           relatedScreens: ['연관 화면 ID'],
//         }
//       ]
//     }
//   ]
// }

// ============================================================
// 거래처 관련 화면
// ============================================================
export const customerScreens = {
  // 거래처 목록
  'customer-list': {
    screenId: 'customer-list',
    screenName: '거래처 목록',
    screenType: 'list',
    menuPath: '판매관리 > 거래처관리',
    description: '등록된 모든 거래처를 조회하고 관리하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          {
            id: 'page-title',
            type: 'text',
            label: '거래처 목록',
            description: '현재 페이지의 제목을 표시',
            style: 'text-xl font-bold, 아이콘: Users (text-blue-500)',
          },
          {
            id: 'btn-add',
            type: 'button',
            label: '+ 거래처 등록',
            description: '신규 거래처 등록 화면으로 이동',
            action: 'customer-form 화면으로 네비게이션',
            style: 'primary (검정 배경, 흰색 텍스트)',
          },
        ],
      },
      {
        id: 'report-cards',
        title: '리포트 카드 영역',
        elements: [
          {
            id: 'card-total',
            type: 'card',
            label: '전체 거래처',
            description: '등록된 전체 거래처 수 표시',
            dataSource: 'customers.length',
            style: 'bg-white rounded-xl p-4 border',
          },
          {
            id: 'card-active',
            type: 'card',
            label: '거래중',
            description: '현재 거래 진행중인 거래처 수',
            dataSource: 'customers.filter(c => c.status === "거래중")',
            style: 'text-green-600',
          },
          {
            id: 'card-hold',
            type: 'card',
            label: '거래보류',
            description: '거래가 일시 보류된 거래처 수',
            dataSource: 'customers.filter(c => c.status === "보류")',
            style: 'text-yellow-600',
          },
          {
            id: 'card-stop',
            type: 'card',
            label: '거래중지',
            description: '거래가 중지된 거래처 수',
            dataSource: 'customers.filter(c => c.status === "중지")',
            style: 'text-red-600',
          },
        ],
      },
      {
        id: 'search',
        title: '검색 영역',
        elements: [
          {
            id: 'search-input',
            type: 'input',
            label: '검색',
            description: '거래처명, 거래처코드, 담당자명으로 검색',
            placeholder: '거래처명, 코드, 담당자 검색...',
            action: '입력값으로 실시간 필터링',
          },
        ],
      },
      {
        id: 'table',
        title: '목록 테이블',
        elements: [
          {
            id: 'col-checkbox',
            type: 'checkbox',
            label: '선택',
            description: '행 선택/해제, 전체 선택 기능',
            action: '선택 시 해당 행에 수정/삭제 버튼 표시',
          },
          {
            id: 'col-code',
            type: 'column',
            label: '거래처코드',
            description: '거래처 고유 식별 코드 (C-###)',
            dataSource: 'customer.code',
            sortable: true,
          },
          {
            id: 'col-name',
            type: 'column',
            label: '거래처명',
            description: '거래처 회사명',
            dataSource: 'customer.name',
            action: '클릭 시 상세 화면으로 이동',
            sortable: true,
          },
          {
            id: 'col-type',
            type: 'column',
            label: '거래처유형',
            description: '고객/공급처/기타 구분',
            dataSource: 'customer.type',
          },
          {
            id: 'col-manager',
            type: 'column',
            label: '담당자',
            description: '거래처 주 담당자명',
            dataSource: 'customer.manager',
          },
          {
            id: 'col-tel',
            type: 'column',
            label: '연락처',
            description: '거래처 대표 연락처',
            dataSource: 'customer.tel',
          },
          {
            id: 'col-status',
            type: 'column',
            label: '상태',
            description: '거래 상태 (거래중/보류/중지)',
            dataSource: 'customer.status',
            style: 'StatusBadge 컴포넌트 사용',
          },
          {
            id: 'col-actions',
            type: 'column',
            label: '작업',
            description: '체크박스 선택 시에만 표시',
            elements: [
              {
                id: 'btn-edit',
                type: 'button',
                label: '수정',
                description: '해당 거래처 수정 화면으로 이동',
                condition: 'hasSelection && isSelected(item.id)',
              },
              {
                id: 'btn-delete',
                type: 'button',
                label: '삭제',
                description: '해당 거래처 삭제 (확인 모달 표시)',
                condition: 'hasSelection && isSelected(item.id)',
                validation: '연관 현장/견적/수주가 없을 때만 삭제 가능',
              },
            ],
          },
        ],
      },
    ],
  },

  // 거래처 등록
  'customer-form': {
    screenId: 'customer-form',
    screenName: '거래처 등록',
    screenType: 'form',
    menuPath: '판매관리 > 거래처관리 > 등록',
    description: '신규 거래처 정보를 입력하여 등록하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          {
            id: 'page-title',
            type: 'text',
            label: '거래처 등록',
            description: '현재 페이지의 제목',
            style: 'text-xl font-bold',
          },
          {
            id: 'btn-cancel',
            type: 'button',
            label: '취소',
            description: '입력 취소 후 목록으로 복귀',
            action: 'customer-list 화면으로 네비게이션',
            style: 'outline (흰색 배경, 검정 테두리)',
          },
          {
            id: 'btn-save',
            type: 'button',
            label: '저장',
            description: '입력 정보 저장',
            action: '유효성 검사 후 저장, 성공 시 목록으로 이동',
            style: 'primary (검정 배경)',
            validation: '필수 필드 검증',
          },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        layout: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',
        elements: [
          {
            id: 'input-code',
            type: 'input',
            label: '거래처코드',
            description: '거래처 고유 식별 코드',
            dataSource: '자동생성 (C-### 형식)',
            validation: '중복 불가, 자동생성',
            required: true,
            readOnly: true,
          },
          {
            id: 'input-name',
            type: 'input',
            label: '거래처명',
            description: '거래처 회사명',
            placeholder: '거래처명을 입력하세요',
            validation: '필수, 2~50자',
            required: true,
          },
          {
            id: 'select-type',
            type: 'select',
            label: '거래처유형',
            description: '거래처 유형 분류',
            options: ['고객', '공급처', '기타'],
            required: true,
          },
          {
            id: 'input-bizno',
            type: 'input',
            label: '사업자번호',
            description: '사업자등록번호',
            placeholder: '000-00-00000',
            validation: '사업자번호 형식 검증',
          },
          {
            id: 'input-ceo',
            type: 'input',
            label: '대표자',
            description: '회사 대표자명',
          },
          {
            id: 'input-tel',
            type: 'input',
            label: '대표전화',
            description: '회사 대표 전화번호',
            validation: '전화번호 형식',
          },
          {
            id: 'input-fax',
            type: 'input',
            label: '팩스',
            description: '팩스 번호',
          },
          {
            id: 'input-email',
            type: 'input',
            label: '이메일',
            description: '회사 대표 이메일',
            validation: '이메일 형식',
          },
          {
            id: 'input-address',
            type: 'input',
            label: '주소',
            description: '회사 주소',
            style: 'col-span-full',
          },
        ],
      },
      {
        id: 'manager-info',
        title: '담당자 정보',
        layout: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',
        elements: [
          {
            id: 'input-manager',
            type: 'input',
            label: '담당자명',
            description: '주 담당자 이름',
            required: true,
          },
          {
            id: 'input-manager-tel',
            type: 'input',
            label: '담당자 연락처',
            description: '담당자 휴대폰 또는 직통번호',
          },
          {
            id: 'input-manager-email',
            type: 'input',
            label: '담당자 이메일',
            description: '담당자 업무 이메일',
          },
        ],
      },
      {
        id: 'etc-info',
        title: '기타 정보',
        elements: [
          {
            id: 'select-status',
            type: 'select',
            label: '거래상태',
            description: '현재 거래 상태',
            options: ['거래중', '보류', '중지'],
            defaultValue: '거래중',
          },
          {
            id: 'select-credit',
            type: 'select',
            label: '신용등급',
            description: '거래처 신용 등급',
            options: ['A', 'B', 'C', 'D'],
          },
          {
            id: 'textarea-note',
            type: 'textarea',
            label: '비고',
            description: '추가 메모 사항',
            style: 'col-span-full',
          },
        ],
      },
    ],
  },

  // 거래처 상세
  'customer-detail': {
    screenId: 'customer-detail',
    screenName: '거래처 상세',
    screenType: 'detail',
    menuPath: '판매관리 > 거래처관리 > 상세',
    description: '거래처의 상세 정보와 연관 데이터를 조회하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          {
            id: 'page-title',
            type: 'text',
            label: '거래처 상세',
            description: '페이지 제목과 거래처코드, 상태 뱃지 표시',
          },
          {
            id: 'btn-list',
            type: 'button',
            label: '목록',
            description: '거래처 목록으로 돌아가기',
            action: 'customer-list 화면으로 네비게이션',
            position: 'right',
          },
          {
            id: 'btn-edit',
            type: 'button',
            label: '수정',
            description: '거래처 수정 화면으로 이동',
            action: 'customer-edit 화면으로 네비게이션',
            position: 'right',
            style: 'primary',
          },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        layout: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',
        displayType: 'label-value',
        elements: [
          { id: 'code', label: '거래처코드', dataSource: 'customer.code' },
          { id: 'name', label: '거래처명', dataSource: 'customer.name' },
          { id: 'type', label: '거래처유형', dataSource: 'customer.type' },
          { id: 'bizno', label: '사업자번호', dataSource: 'customer.bizNo' },
          { id: 'ceo', label: '대표자', dataSource: 'customer.ceo' },
          { id: 'status', label: '거래상태', dataSource: 'customer.status', style: 'StatusBadge' },
        ],
      },
      {
        id: 'related-sites',
        title: '연관 현장 목록',
        elements: [
          {
            id: 'site-table',
            type: 'table',
            description: '해당 거래처에 등록된 현장 목록',
            columns: ['현장코드', '현장명', '주소', '상태'],
            action: '행 클릭 시 현장 상세로 이동',
          },
        ],
      },
      {
        id: 'related-quotes',
        title: '최근 견적 내역',
        elements: [
          {
            id: 'quote-table',
            type: 'table',
            description: '해당 거래처의 최근 견적 목록 (최대 10건)',
            columns: ['견적번호', '현장명', '견적일', '금액', '상태'],
            action: '행 클릭 시 견적 상세로 이동',
          },
        ],
      },
    ],
  },
};

// ============================================================
// 현장 관련 화면
// ============================================================
export const siteScreens = {
  // 현장 목록
  'site-list': {
    screenId: 'site-list',
    screenName: '현장 목록',
    screenType: 'list',
    menuPath: '판매관리 > 현장관리',
    description: '등록된 모든 현장을 조회하고 관리하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          {
            id: 'page-title',
            type: 'text',
            label: '현장 목록',
            style: 'text-xl font-bold, 아이콘: Building (text-blue-500)',
          },
          {
            id: 'btn-add',
            type: 'button',
            label: '+ 현장 등록',
            action: 'site-form 화면으로 네비게이션',
            style: 'primary',
          },
        ],
      },
      {
        id: 'report-cards',
        title: '리포트 카드 영역',
        elements: [
          { id: 'card-total', type: 'card', label: '전체 현장', dataSource: 'sites.length' },
          { id: 'card-active', type: 'card', label: '진행중', dataSource: 'status === "진행중"', style: 'text-blue-600' },
          { id: 'card-contract', type: 'card', label: '계약', dataSource: 'status === "계약"', style: 'text-green-600' },
          { id: 'card-complete', type: 'card', label: '완료', dataSource: 'status === "완료"', style: 'text-gray-600' },
        ],
      },
      {
        id: 'search',
        title: '검색 영역',
        elements: [
          {
            id: 'search-input',
            type: 'input',
            label: '검색',
            placeholder: '현장명, 현장코드, 거래처명 검색...',
          },
        ],
      },
      {
        id: 'table',
        title: '목록 테이블',
        elements: [
          { id: 'col-checkbox', type: 'checkbox', label: '선택' },
          { id: 'col-code', type: 'column', label: '현장코드', dataSource: 'site.code (S-###)' },
          { id: 'col-name', type: 'column', label: '현장명', action: '클릭 시 상세로 이동' },
          { id: 'col-customer', type: 'column', label: '거래처', dataSource: 'site.customerName' },
          { id: 'col-address', type: 'column', label: '주소', dataSource: 'site.address' },
          { id: 'col-manager', type: 'column', label: '현장담당자', dataSource: 'site.manager' },
          { id: 'col-period', type: 'column', label: '공사기간', dataSource: 'startDate ~ endDate' },
          { id: 'col-status', type: 'column', label: '상태', style: 'StatusBadge' },
          { id: 'col-actions', type: 'column', label: '작업', condition: 'hasSelection && isSelected(item.id)' },
        ],
      },
    ],
  },

  // 현장 등록
  'site-form': {
    screenId: 'site-form',
    screenName: '현장 등록',
    screenType: 'form',
    menuPath: '판매관리 > 현장관리 > 등록',
    description: '신규 현장 정보를 입력하여 등록하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '현장 등록' },
          { id: 'btn-cancel', type: 'button', label: '취소', style: 'outline' },
          { id: 'btn-save', type: 'button', label: '저장', style: 'primary' },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        layout: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',
        elements: [
          { id: 'input-code', type: 'input', label: '현장코드', description: '자동생성 (S-### 형식)', readOnly: true },
          { id: 'input-name', type: 'input', label: '현장명', required: true },
          { id: 'select-customer', type: 'select', label: '거래처', description: '거래처 목록에서 선택', required: true },
          { id: 'input-address', type: 'input', label: '주소', style: 'col-span-2' },
          { id: 'input-manager', type: 'input', label: '현장담당자' },
          { id: 'input-tel', type: 'input', label: '담당자연락처' },
        ],
      },
      {
        id: 'period-info',
        title: '공사 정보',
        elements: [
          { id: 'date-start', type: 'date', label: '착공일', required: true },
          { id: 'date-end', type: 'date', label: '준공예정일', required: true },
          { id: 'input-amount', type: 'number', label: '예상금액', format: '원 (₩)' },
          { id: 'select-status', type: 'select', label: '상태', options: ['계약', '진행중', '완료', '보류'] },
        ],
      },
    ],
  },
};

// ============================================================
// 품목 관련 화면
// ============================================================
export const itemScreens = {
  // 품목 목록
  'item-list': {
    screenId: 'item-list',
    screenName: '품목 목록',
    screenType: 'list',
    menuPath: '생산관리 > 품목관리',
    description: '등록된 모든 품목을 조회하고 관리하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '품목 목록', style: 'text-xl font-bold, 아이콘: Package' },
          { id: 'btn-add', type: 'button', label: '+ 품목 등록', style: 'primary' },
        ],
      },
      {
        id: 'report-cards',
        title: '리포트 카드 영역',
        elements: [
          { id: 'card-total', type: 'card', label: '전체 품목' },
          { id: 'card-product', type: 'card', label: '제품', description: '완제품 (SH, SS, ST 등)' },
          { id: 'card-part', type: 'card', label: '부품', description: '조립/절곡/구매 부품' },
          { id: 'card-material', type: 'card', label: '자재', description: '부자재/원자재/소모품' },
        ],
      },
      {
        id: 'filter',
        title: '필터 영역',
        elements: [
          { id: 'filter-type', type: 'select', label: '품목유형', options: ['전체', '제품', '부품', '부자재', '원자재', '소모품'] },
          { id: 'search-input', type: 'input', label: '검색', placeholder: '품목코드, 품목명 검색...' },
        ],
      },
      {
        id: 'table',
        title: '목록 테이블',
        elements: [
          { id: 'col-checkbox', type: 'checkbox', label: '선택' },
          { id: 'col-code', type: 'column', label: '품목코드', description: '공통코드관리 규칙 적용 (SH3040, CB2430 등)' },
          { id: 'col-name', type: 'column', label: '품목명', action: '클릭 시 상세로 이동' },
          { id: 'col-type', type: 'column', label: '품목유형', dataSource: '제품/부품/부자재/원자재/소모품' },
          { id: 'col-spec', type: 'column', label: '규격' },
          { id: 'col-unit', type: 'column', label: '단위' },
          { id: 'col-stock', type: 'column', label: '현재고' },
          { id: 'col-status', type: 'column', label: '상태', style: 'StatusBadge' },
          { id: 'col-actions', type: 'column', label: '작업' },
        ],
      },
    ],
  },

  // 품목 등록
  'item-form': {
    screenId: 'item-form',
    screenName: '품목 등록',
    screenType: 'form',
    menuPath: '생산관리 > 품목관리 > 등록',
    description: '신규 품목을 등록하는 화면. 품목유형에 따라 입력 필드가 동적으로 변경됨',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '품목 등록' },
          { id: 'btn-cancel', type: 'button', label: '취소', style: 'outline' },
          { id: 'btn-save', type: 'button', label: '저장', style: 'primary' },
        ],
      },
      {
        id: 'type-select',
        title: '품목유형 선택',
        elements: [
          {
            id: 'select-item-type',
            type: 'select',
            label: '품목유형',
            description: '선택에 따라 아래 입력 필드가 변경됨',
            options: ['제품', '부품', '부자재', '원자재', '소모품'],
            required: true,
            action: '선택 시 해당 유형의 입력 섹션 표시',
          },
          {
            id: 'select-part-subtype',
            type: 'select',
            label: '부품 하위유형',
            description: '부품 선택 시에만 표시',
            options: ['조립 부품', '절곡 부품', '구매 부품'],
            condition: 'itemType === "부품"',
          },
        ],
      },
      {
        id: 'product-info',
        title: '제품 정보 (제품 유형)',
        condition: 'itemType === "제품"',
        description: '품목코드: {제품유형약어}{폭}{높이} 형식 (예: SH3040)',
        elements: [
          { id: 'select-product-type', type: 'select', label: '제품유형', options: ['방화셔터', '방연셔터', '스틸셔터', '방화문', '자동문'], required: true },
          { id: 'input-width', type: 'number', label: '폭 (W)', unit: 'mm', required: true },
          { id: 'input-height', type: 'number', label: '높이 (H)', unit: 'mm', required: true },
          { id: 'display-code', type: 'display', label: '품목코드 (자동생성)', description: '예: SH3040 (방화셔터 W3000×H4000)' },
        ],
      },
      {
        id: 'bending-part-info',
        title: '절곡부품 정보',
        condition: 'itemType === "부품" && partSubType === "절곡 부품"',
        description: '품목코드: {부품유형약어}{폭}{높이} 형식 (예: CB2430, GR3040)',
        elements: [
          { id: 'select-bending-type', type: 'select', label: '절곡부품유형', options: ['커버박스', '가이드레일', '바텀바', '행거브라켓', '중간가이드'], required: true },
          { id: 'input-width', type: 'number', label: '폭', unit: 'mm' },
          { id: 'input-height', type: 'number', label: '높이', unit: 'mm' },
          { id: 'display-code', type: 'display', label: '품목코드 (자동생성)', description: '예: CB2430, GR3040' },
        ],
      },
      {
        id: 'assembly-part-info',
        title: '조립부품 정보',
        condition: 'itemType === "부품" && partSubType === "조립 부품"',
        description: '품목코드: {조립부품약어}{폭}{높이} 형식 (예: RC3040)',
        elements: [
          { id: 'select-assembly-type', type: 'select', label: '조립부품유형', options: ['셔터박스', '슬랫조립체', '가이드조립체', '개폐기조립체', '제어반조립체'], required: true },
          { id: 'input-width', type: 'number', label: '폭', unit: 'mm' },
          { id: 'input-height', type: 'number', label: '높이', unit: 'mm' },
        ],
      },
      {
        id: 'purchased-part-info',
        title: '구매부품 정보',
        condition: 'itemType === "부품" && partSubType === "구매 부품"',
        description: '품목코드: {품목코드}-{전원}-{용량} 형식 (예: E-220V-300KG)',
        elements: [
          { id: 'select-purchased-type', type: 'select', label: '구매부품유형', options: ['전동개폐기', '수동개폐기', '제어반', '연기감지기', '열감지기'], required: true },
          { id: 'select-power', type: 'select', label: '전원', options: ['220V', '380V', 'DC24V'] },
          { id: 'select-capacity', type: 'select', label: '용량', options: ['300KG', '500KG', '1000KG'] },
        ],
      },
      {
        id: 'sub-material-info',
        title: '부자재 정보',
        condition: 'itemType === "부자재"',
        description: '품목코드: {품목코드}-{규격} 형식 (예: SCR-0.3T)',
        elements: [
          { id: 'select-sub-material', type: 'select', label: '부자재명', options: ['스크린원단', '슬랫', '가이드레일', '샤프트', '스프링', '체인'], required: true },
          { id: 'select-spec', type: 'select', label: '규격', description: '부자재명에 따라 옵션 변경' },
        ],
      },
      {
        id: 'raw-material-info',
        title: '원자재 정보',
        condition: 'itemType === "원자재"',
        description: '품목코드: {품목코드}-{규격} 형식 (예: STEEL-1.2T)',
        elements: [
          { id: 'select-raw-material', type: 'select', label: '원자재명', options: ['철판', '아연도금강판', '스테인리스', '알루미늄판', '각파이프'], required: true },
          { id: 'select-spec', type: 'select', label: '규격', description: '원자재명에 따라 옵션 변경' },
        ],
      },
    ],
  },
};

// ============================================================
// 견적 관련 화면
// ============================================================
export const quoteScreens = {
  // 견적 목록
  'quote-list': {
    screenId: 'quote-list',
    screenName: '견적 목록',
    screenType: 'list',
    menuPath: '판매관리 > 견적관리',
    description: '등록된 모든 견적을 조회하고 관리하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '견적 목록', style: 'text-xl font-bold, 아이콘: FileText' },
          { id: 'btn-add', type: 'button', label: '+ 견적 등록', style: 'primary', action: 'quote-form 화면으로 네비게이션' },
        ],
      },
      {
        id: 'report-cards',
        title: '리포트 카드 영역',
        elements: [
          { id: 'card-total', type: 'card', label: '전체 견적' },
          { id: 'card-draft', type: 'card', label: '최초작성', style: 'text-gray-600' },
          { id: 'card-confirmed', type: 'card', label: '견적확정', style: 'text-blue-600' },
          { id: 'card-ordered', type: 'card', label: '수주전환', style: 'text-green-600' },
        ],
      },
      {
        id: 'search',
        title: '검색 영역',
        elements: [
          { id: 'search-input', type: 'input', placeholder: '견적번호, 거래처명, 현장명 검색...' },
        ],
      },
      {
        id: 'table',
        title: '목록 테이블',
        description: '최신 등록순 정렬 (ID 내림차순)',
        elements: [
          { id: 'col-checkbox', type: 'checkbox', label: '선택' },
          { id: 'col-quoteNo', type: 'column', label: '견적번호', description: '채번관리 규칙: KD-PR-YYMMDD-##', action: '클릭 시 상세로 이동' },
          { id: 'col-quoteDate', type: 'column', label: '견적일' },
          { id: 'col-customer', type: 'column', label: '거래처' },
          { id: 'col-site', type: 'column', label: '현장명' },
          { id: 'col-productType', type: 'column', label: '제품유형' },
          { id: 'col-size', type: 'column', label: '규격 (W×H)' },
          { id: 'col-qty', type: 'column', label: '수량' },
          { id: 'col-amount', type: 'column', label: '견적금액', format: '₩#,###' },
          { id: 'col-status', type: 'column', label: '상태', style: 'StatusBadge' },
          { id: 'col-actions', type: 'column', label: '작업' },
        ],
      },
    ],
  },

  // 견적 등록
  'quote-form': {
    screenId: 'quote-form',
    screenName: '견적 등록',
    screenType: 'form',
    menuPath: '판매관리 > 견적관리 > 등록',
    description: '신규 견적을 작성하는 화면. 규격 입력 시 자동으로 산출내역이 계산됨',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '견적 등록' },
          { id: 'btn-cancel', type: 'button', label: '취소', style: 'outline' },
          { id: 'btn-save', type: 'button', label: '저장', style: 'primary' },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        layout: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',
        elements: [
          { id: 'display-quoteNo', type: 'display', label: '견적번호', description: '저장 시 자동생성 (KD-PR-YYMMDD-##)' },
          { id: 'date-quoteDate', type: 'date', label: '견적일', defaultValue: 'today', required: true },
          { id: 'date-validDate', type: 'date', label: '유효기간', defaultValue: 'today + 30일' },
          { id: 'select-customer', type: 'select', label: '거래처', required: true, action: '선택 시 현장 목록 필터링' },
          { id: 'select-site', type: 'select', label: '현장', required: true, dependsOn: 'customer' },
          { id: 'select-productType', type: 'select', label: '제품유형', options: ['스크린', '철재'], required: true },
        ],
      },
      {
        id: 'spec-info',
        title: '규격 정보',
        description: '규격 입력 시 산출내역이 자동 계산됨',
        elements: [
          { id: 'input-width', type: 'number', label: '폭 (W0)', unit: 'mm', required: true, action: '변경 시 산출내역 재계산' },
          { id: 'input-height', type: 'number', label: '높이 (H0)', unit: 'mm', required: true, action: '변경 시 산출내역 재계산' },
          { id: 'input-qty', type: 'number', label: '수량', defaultValue: 1, required: true },
          { id: 'select-voltage', type: 'select', label: '전압', options: ['220V', '380V'] },
          { id: 'select-wireType', type: 'select', label: '유/무선', options: ['유선', '무선'] },
          { id: 'select-ctType', type: 'select', label: 'CT유형', options: ['매립', '노출'] },
          { id: 'select-gtType', type: 'select', label: 'GT유형', options: ['벽면형', '코너형'] },
        ],
      },
      {
        id: 'calculation-result',
        title: '산출 결과',
        description: '규격 기준서에 따라 자동 계산된 값',
        elements: [
          { id: 'display-area', type: 'display', label: '면적', unit: '㎡' },
          { id: 'display-weight', type: 'display', label: '중량', unit: 'kg' },
          { id: 'display-motor', type: 'display', label: '모터용량' },
          { id: 'display-shaft', type: 'display', label: '샤프트' },
        ],
      },
      {
        id: 'price-info',
        title: '견적 금액',
        elements: [
          { id: 'display-unitPrice', type: 'display', label: '단가', format: '₩#,###' },
          { id: 'display-totalAmount', type: 'display', label: '합계금액', format: '₩#,###', style: 'text-xl font-bold text-blue-600' },
        ],
      },
      {
        id: 'items-table',
        title: '견적 품목',
        elements: [
          {
            id: 'quote-items-table',
            type: 'table',
            description: '자동 산출된 견적 품목 목록',
            columns: ['품목코드', '품목명', '수량', '단위', '단가', '금액'],
            editable: false,
          },
        ],
      },
    ],
  },

  // 견적 상세
  'quote-detail': {
    screenId: 'quote-detail',
    screenName: '견적 상세',
    screenType: 'detail',
    menuPath: '판매관리 > 견적관리 > 상세',
    description: '견적의 상세 정보와 문서 출력 기능을 제공하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '견적 상세', description: '견적번호, 상태 뱃지 표시' },
          { id: 'btn-quote-doc', type: 'button', label: '견적서', position: 'left', action: '견적서 문서 미리보기/출력' },
          { id: 'btn-calc-doc', type: 'button', label: '산출내역서', position: 'left', action: '산출내역서 문서 미리보기/출력' },
          { id: 'btn-po-doc', type: 'button', label: '발주서', position: 'left', action: '발주서 문서 미리보기/출력' },
          { id: 'btn-list', type: 'button', label: '목록', position: 'right' },
          { id: 'btn-edit', type: 'button', label: '수정', position: 'right', condition: 'status !== "수주전환"' },
          { id: 'btn-confirm', type: 'button', label: '최종확정', position: 'right', style: 'primary', condition: 'status === "최초작성"' },
          { id: 'btn-to-order', type: 'button', label: '수주전환', position: 'right', style: 'primary', condition: 'status === "견적확정"' },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        layout: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',
        displayType: 'label-value',
        elements: [
          { id: 'quoteNo', label: '견적번호', dataSource: 'quote.quoteNo' },
          { id: 'quoteDate', label: '견적일', dataSource: 'quote.quoteDate' },
          { id: 'validDate', label: '유효기간', dataSource: 'quote.validDate' },
          { id: 'customer', label: '거래처', dataSource: 'quote.customerName' },
          { id: 'site', label: '현장', dataSource: 'quote.siteName' },
          { id: 'status', label: '상태', dataSource: 'quote.status', style: 'StatusBadge' },
        ],
      },
      {
        id: 'spec-info',
        title: '규격 정보',
        elements: [
          { id: 'productType', label: '제품유형' },
          { id: 'size', label: '규격', dataSource: 'W{width} × H{height}' },
          { id: 'qty', label: '수량' },
          { id: 'area', label: '면적', unit: '㎡' },
          { id: 'weight', label: '중량', unit: 'kg' },
        ],
      },
      {
        id: 'price-info',
        title: '금액 정보',
        elements: [
          { id: 'unitPrice', label: '단가', format: '₩#,###' },
          { id: 'totalAmount', label: '합계금액', format: '₩#,###', style: 'text-xl font-bold' },
        ],
      },
      {
        id: 'items-table',
        title: '견적 품목',
        elements: [
          {
            id: 'quote-items',
            type: 'table',
            columns: ['품목코드', '품목명', '수량', '단위', '단가', '금액'],
          },
        ],
      },
    ],
  },
};

// ============================================================
// 수주 관련 화면
// ============================================================
export const orderScreens = {
  // 수주 목록
  'order-list': {
    screenId: 'order-list',
    screenName: '수주 목록',
    screenType: 'list',
    menuPath: '판매관리 > 수주관리',
    description: '등록된 모든 수주를 조회하고 관리하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '수주 목록', style: 'text-xl font-bold, 아이콘: Package' },
          { id: 'btn-add', type: 'button', label: '+ 수주 등록', style: 'primary', description: '견적 없이 직접 수주 등록' },
        ],
      },
      {
        id: 'report-cards',
        title: '리포트 카드 영역',
        elements: [
          { id: 'card-total', type: 'card', label: '전체 수주' },
          { id: 'card-received', type: 'card', label: '수주접수', style: 'text-gray-600' },
          { id: 'card-inProgress', type: 'card', label: '생산중', style: 'text-blue-600' },
          { id: 'card-shipped', type: 'card', label: '출하완료', style: 'text-green-600' },
        ],
      },
      {
        id: 'search',
        title: '검색 영역',
        elements: [
          { id: 'search-input', type: 'input', placeholder: '수주번호, 견적번호, 거래처명, 현장명 검색...' },
        ],
      },
      {
        id: 'table',
        title: '목록 테이블',
        elements: [
          { id: 'col-checkbox', type: 'checkbox', label: '선택' },
          { id: 'col-orderNo', type: 'column', label: '수주번호', description: '채번관리: KD-TS/SL/BD-YYMMDD-##', action: '클릭 시 상세로 이동' },
          { id: 'col-quoteNo', type: 'column', label: '견적번호', description: '연관 견적 (없으면 직접수주)' },
          { id: 'col-orderDate', type: 'column', label: '수주일' },
          { id: 'col-customer', type: 'column', label: '거래처' },
          { id: 'col-site', type: 'column', label: '현장명' },
          { id: 'col-productType', type: 'column', label: '제품유형' },
          { id: 'col-deliveryDate', type: 'column', label: '납기일' },
          { id: 'col-amount', type: 'column', label: '수주금액', format: '₩#,###' },
          { id: 'col-status', type: 'column', label: '상태', style: 'StatusBadge' },
          { id: 'col-actions', type: 'column', label: '작업' },
        ],
      },
    ],
  },

  // 수주 등록
  'order-form': {
    screenId: 'order-form',
    screenName: '수주 등록',
    screenType: 'form',
    menuPath: '판매관리 > 수주관리 > 등록',
    description: '신규 수주를 등록하는 화면 (견적전환 또는 직접등록)',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '수주 등록' },
          { id: 'btn-cancel', type: 'button', label: '취소', style: 'outline' },
          { id: 'btn-save', type: 'button', label: '저장', style: 'primary' },
        ],
      },
      {
        id: 'quote-link',
        title: '견적 연결',
        elements: [
          { id: 'select-quote', type: 'select', label: '견적선택', description: '확정된 견적 목록에서 선택 (선택 시 정보 자동 입력)' },
          { id: 'btn-direct', type: 'button', label: '직접 입력', description: '견적 없이 직접 수주 정보 입력' },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        elements: [
          { id: 'display-orderNo', type: 'display', label: '수주번호', description: '저장 시 자동생성 (KD-TS/SL/BD-YYMMDD-##)' },
          { id: 'date-orderDate', type: 'date', label: '수주일', required: true },
          { id: 'date-deliveryDate', type: 'date', label: '납기일', required: true },
          { id: 'select-customer', type: 'select', label: '거래처', required: true },
          { id: 'select-site', type: 'select', label: '현장', required: true },
        ],
      },
      {
        id: 'product-info',
        title: '제품 정보',
        elements: [
          { id: 'select-productType', type: 'select', label: '제품유형', options: ['스크린', '슬랫', '절곡'], required: true },
          { id: 'input-width', type: 'number', label: '폭 (W)', unit: 'mm' },
          { id: 'input-height', type: 'number', label: '높이 (H)', unit: 'mm' },
          { id: 'input-qty', type: 'number', label: '수량' },
        ],
      },
      {
        id: 'amount-info',
        title: '금액 정보',
        elements: [
          { id: 'input-amount', type: 'number', label: '수주금액', format: '₩#,###' },
        ],
      },
    ],
  },

  // 수주 상세
  'order-detail': {
    screenId: 'order-detail',
    screenName: '수주 상세',
    screenType: 'detail',
    menuPath: '판매관리 > 수주관리 > 상세',
    description: '수주의 상세 정보와 생산/출하 현황을 조회하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '수주 상세' },
          { id: 'btn-order-doc', type: 'button', label: '수주확인서', position: 'left', action: '수주확인서 문서 출력' },
          { id: 'btn-wo-doc', type: 'button', label: '작업지시서', position: 'left', action: '작업지시서 문서 출력' },
          { id: 'btn-list', type: 'button', label: '목록', position: 'right' },
          { id: 'btn-edit', type: 'button', label: '수정', position: 'right' },
          { id: 'btn-create-wo', type: 'button', label: '작업지시 생성', position: 'right', style: 'primary', condition: 'status === "수주접수"' },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        elements: [
          { id: 'orderNo', label: '수주번호' },
          { id: 'quoteNo', label: '견적번호' },
          { id: 'orderDate', label: '수주일' },
          { id: 'deliveryDate', label: '납기일' },
          { id: 'customer', label: '거래처' },
          { id: 'site', label: '현장' },
          { id: 'status', label: '상태' },
        ],
      },
      {
        id: 'production-status',
        title: '생산 현황',
        elements: [
          {
            id: 'wo-table',
            type: 'table',
            description: '해당 수주의 작업지시 목록',
            columns: ['작업지시번호', '공정', '시작일', '완료예정일', '진행률', '상태'],
          },
        ],
      },
      {
        id: 'shipment-info',
        title: '출하 정보',
        elements: [
          { id: 'shipmentDate', label: '출하일' },
          { id: 'shipmentNo', label: '출하번호' },
          { id: 'shipmentStatus', label: '출하상태' },
        ],
      },
    ],
  },
};

// ============================================================
// 작업지시 관련 화면
// ============================================================
export const workOrderScreens = {
  // 작업지시 목록
  'workorder-list': {
    screenId: 'workorder-list',
    screenName: '작업지시 목록',
    screenType: 'list',
    menuPath: '생산관리 > 작업지시 관리',
    description: '등록된 모든 작업지시를 조회하고 관리하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '작업지시 목록', style: 'text-xl font-bold, 아이콘: ClipboardList' },
          { id: 'btn-add', type: 'button', label: '+ 작업지시 등록', style: 'primary' },
        ],
      },
      {
        id: 'report-cards',
        title: '리포트 카드 영역',
        elements: [
          { id: 'card-total', type: 'card', label: '전체 작업지시' },
          { id: 'card-waiting', type: 'card', label: '대기', style: 'text-gray-600' },
          { id: 'card-inProgress', type: 'card', label: '진행중', style: 'text-blue-600' },
          { id: 'card-complete', type: 'card', label: '완료', style: 'text-green-600' },
        ],
      },
      {
        id: 'table',
        title: '목록 테이블',
        elements: [
          { id: 'col-checkbox', type: 'checkbox', label: '선택' },
          { id: 'col-woNo', type: 'column', label: '작업지시번호', description: '채번관리: KD-PL-YYMMDD-##' },
          { id: 'col-orderNo', type: 'column', label: '수주번호' },
          { id: 'col-process', type: 'column', label: '공정' },
          { id: 'col-productName', type: 'column', label: '품목명' },
          { id: 'col-qty', type: 'column', label: '지시수량' },
          { id: 'col-startDate', type: 'column', label: '시작일' },
          { id: 'col-dueDate', type: 'column', label: '완료예정일' },
          { id: 'col-progress', type: 'column', label: '진행률', style: 'ProgressBar' },
          { id: 'col-status', type: 'column', label: '상태', style: 'StatusBadge' },
          { id: 'col-actions', type: 'column', label: '작업' },
        ],
      },
    ],
  },
};

// ============================================================
// 출하 관련 화면
// ============================================================
export const shipmentScreens = {
  // 출하 목록
  'shipment-list': {
    screenId: 'shipment-list',
    screenName: '출하 목록',
    screenType: 'list',
    menuPath: '판매관리 > 출하관리',
    description: '등록된 모든 출하를 조회하고 관리하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '출하 목록', style: 'text-xl font-bold, 아이콘: Truck' },
          { id: 'btn-add', type: 'button', label: '+ 출하 등록', style: 'primary' },
        ],
      },
      {
        id: 'report-cards',
        title: '리포트 카드 영역',
        elements: [
          { id: 'card-total', type: 'card', label: '전체 출하' },
          { id: 'card-waiting', type: 'card', label: '출하대기', style: 'text-gray-600' },
          { id: 'card-shipped', type: 'card', label: '출하완료', style: 'text-blue-600' },
          { id: 'card-delivered', type: 'card', label: '납품완료', style: 'text-green-600' },
        ],
      },
      {
        id: 'table',
        title: '목록 테이블',
        elements: [
          { id: 'col-checkbox', type: 'checkbox', label: '선택' },
          { id: 'col-shipmentNo', type: 'column', label: '출하번호', description: '채번관리: SH-YYMMDD-##' },
          { id: 'col-orderNo', type: 'column', label: '수주번호' },
          { id: 'col-customer', type: 'column', label: '거래처' },
          { id: 'col-site', type: 'column', label: '현장' },
          { id: 'col-shipmentDate', type: 'column', label: '출하일' },
          { id: 'col-deliveryDate', type: 'column', label: '납품예정일' },
          { id: 'col-productName', type: 'column', label: '품목' },
          { id: 'col-qty', type: 'column', label: '수량' },
          { id: 'col-status', type: 'column', label: '상태', style: 'StatusBadge' },
          { id: 'col-actions', type: 'column', label: '작업' },
        ],
      },
    ],
  },

  // 출하 등록
  'shipment-form': {
    screenId: 'shipment-form',
    screenName: '출하 등록',
    screenType: 'form',
    menuPath: '판매관리 > 출하관리 > 등록',
    description: '신규 출하를 등록하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '출하 등록' },
          { id: 'btn-cancel', type: 'button', label: '취소', style: 'outline' },
          { id: 'btn-save', type: 'button', label: '저장', style: 'primary' },
        ],
      },
      {
        id: 'order-select',
        title: '수주 선택',
        elements: [
          { id: 'select-order', type: 'select', label: '수주선택', description: '출하 가능한 수주 목록에서 선택', required: true },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        elements: [
          { id: 'display-shipmentNo', type: 'display', label: '출하번호', description: '저장 시 자동생성' },
          { id: 'date-shipmentDate', type: 'date', label: '출하일', required: true },
          { id: 'date-deliveryDate', type: 'date', label: '납품예정일', required: true },
          { id: 'display-customer', type: 'display', label: '거래처', dataSource: 'order.customerName' },
          { id: 'display-site', type: 'display', label: '현장', dataSource: 'order.siteName' },
        ],
      },
      {
        id: 'shipment-info',
        title: '출하 정보',
        elements: [
          { id: 'input-vehicle', type: 'input', label: '차량번호' },
          { id: 'input-driver', type: 'input', label: '운전자' },
          { id: 'input-driverTel', type: 'input', label: '운전자 연락처' },
          { id: 'textarea-note', type: 'textarea', label: '비고' },
        ],
      },
    ],
  },

  // 출하 상세
  'shipment-detail': {
    screenId: 'shipment-detail',
    screenName: '출하 상세',
    screenType: 'detail',
    menuPath: '판매관리 > 출하관리 > 상세',
    description: '출하의 상세 정보와 문서 출력 기능을 제공하는 화면',
    sections: [
      {
        id: 'header',
        title: '헤더 영역',
        elements: [
          { id: 'page-title', type: 'text', label: '출하 상세' },
          { id: 'btn-shipping-doc', type: 'button', label: '출고증', position: 'left', action: '출고증 문서 출력' },
          { id: 'btn-statement-doc', type: 'button', label: '거래명세서', position: 'left', action: '거래명세서 문서 출력' },
          { id: 'btn-list', type: 'button', label: '목록', position: 'right' },
          { id: 'btn-edit', type: 'button', label: '수정', position: 'right' },
          { id: 'btn-complete', type: 'button', label: '납품완료', position: 'right', style: 'primary', condition: 'status === "출하완료"' },
        ],
      },
      {
        id: 'basic-info',
        title: '기본 정보',
        elements: [
          { id: 'shipmentNo', label: '출하번호' },
          { id: 'orderNo', label: '수주번호' },
          { id: 'shipmentDate', label: '출하일' },
          { id: 'deliveryDate', label: '납품예정일' },
          { id: 'customer', label: '거래처' },
          { id: 'site', label: '현장' },
          { id: 'status', label: '상태' },
        ],
      },
      {
        id: 'product-info',
        title: '출하 품목',
        elements: [
          {
            id: 'shipment-items',
            type: 'table',
            columns: ['품목코드', '품목명', '규격', '수량', '단위'],
          },
        ],
      },
      {
        id: 'delivery-info',
        title: '배송 정보',
        elements: [
          { id: 'vehicle', label: '차량번호' },
          { id: 'driver', label: '운전자' },
          { id: 'driverTel', label: '운전자 연락처' },
        ],
      },
    ],
  },
};

// ============================================================
// 전체 화면 기능정의 통합
// ============================================================
export const allScreenFeatures = {
  ...customerScreens,
  ...siteScreens,
  ...itemScreens,
  ...quoteScreens,
  ...orderScreens,
  ...workOrderScreens,
  ...shipmentScreens,
};

// 화면 ID로 기능정의 조회
export const getScreenFeatures = (screenId) => {
  return allScreenFeatures[screenId] || null;
};

// 메뉴 경로로 화면 ID 매핑
export const screenIdMapping = {
  // 거래처
  'customer': 'customer-list',
  'customer-list': 'customer-list',
  'customer-form': 'customer-form',
  'customer-detail': 'customer-detail',
  // 현장
  'site': 'site-list',
  'site-list': 'site-list',
  'site-form': 'site-form',
  'site-detail': 'site-detail',
  // 품목
  'item': 'item-list',
  'item-list': 'item-list',
  'item-form': 'item-form',
  'item-detail': 'item-detail',
  // 견적
  'quote': 'quote-list',
  'quote-list': 'quote-list',
  'quote-form': 'quote-form',
  'quote-detail': 'quote-detail',
  // 수주
  'order': 'order-list',
  'order-list': 'order-list',
  'order-form': 'order-form',
  'order-detail': 'order-detail',
  // 작업지시
  'work-order': 'workorder-list',
  'workorder-list': 'workorder-list',
  'workorder-form': 'workorder-form',
  'workorder-detail': 'workorder-detail',
  // 출하
  'shipment': 'shipment-list',
  'shipment-list': 'shipment-list',
  'shipment-form': 'shipment-form',
  'shipment-detail': 'shipment-detail',
};

// 현재 화면에 맞는 기능정의 가져오기
export const getFeaturesByCurrentScreen = (activeMenu, viewMode) => {
  let screenId = activeMenu;

  if (viewMode === 'form') {
    screenId = `${activeMenu}-form`;
  } else if (viewMode === 'detail') {
    screenId = `${activeMenu}-detail`;
  } else if (viewMode === 'list' || !viewMode) {
    screenId = `${activeMenu}-list`;
  }

  // 매핑 테이블에서 찾기
  const mappedId = screenIdMapping[screenId] || screenIdMapping[activeMenu];

  return getScreenFeatures(mappedId);
};

export default allScreenFeatures;
