/**
 * 화면별 액션 요소 정의
 * 각 화면에서 클릭/상호작용 가능한 요소들과 그 동작을 정의
 */

// 액션 타입 정의
export const ACTION_TYPES = {
  NAVIGATE: 'navigate',      // 다른 메뉴로 이동
  MODAL: 'modal',           // 모달창 표시
  STATUS_CHANGE: 'status',  // 상태 변경
  API_CALL: 'api',          // API 호출
  DOWNLOAD: 'download',     // 다운로드
  PRINT: 'print',           // 인쇄
  POPUP: 'popup',           // 팝업 표시
  CONFIRM: 'confirm',       // 확인 다이얼로그
  FORM_SUBMIT: 'submit',    // 폼 제출
  FILTER: 'filter',         // 필터링
  SEARCH: 'search',         // 검색
  SELECT: 'select',         // 선택
  EXPAND: 'expand',         // 확장/접기
  EDIT_INLINE: 'inline',    // 인라인 편집
  BULK_ACTION: 'bulk',      // 일괄 작업
  TOGGLE: 'toggle',         // 토글
};

// 뱃지 색상 매핑 (액션 타입별)
export const ACTION_COLOR_MAP = {
  navigate: 'blue',
  modal: 'purple',
  status: 'orange',
  api: 'green',
  download: 'gray',
  print: 'gray',
  popup: 'purple',
  confirm: 'red',
  submit: 'green',
  filter: 'blue',
  search: 'blue',
  select: 'gray',
  expand: 'gray',
  inline: 'orange',
  bulk: 'red',
  toggle: 'orange',
};

/**
 * 화면별 액션 요소 정의
 * 각 화면 ID별로 UI 요소와 해당 액션을 정의
 */
export const screenActionDefinitions = {
  // ========== 판매 관리 ==========
  'quote-list': {
    screenName: '견적 목록',
    actions: [
      {
        id: 'btn-new-quote',
        element: '신규 견적 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'quote-create',
        description: '신규 견적 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-search',
        element: '검색 버튼',
        type: ACTION_TYPES.SEARCH,
        description: '검색 조건에 따라 견적 목록 조회',
        position: { area: 'search-area' }
      },
      {
        id: 'link-quote-number',
        element: '견적번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'quote-detail',
        description: '견적 상세 화면으로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'link-customer',
        element: '거래처명 링크',
        type: ACTION_TYPES.MODAL,
        description: '거래처 정보 팝업 표시',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-edit',
        element: '수정 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'quote-edit',
        description: '견적 수정 화면으로 이동',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-copy',
        element: '복사 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '견적 복사 확인 후 새 견적 생성',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-delete',
        element: '삭제 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '견적 삭제 확인 다이얼로그',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-convert-order',
        element: '수주전환 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '견적을 수주로 전환 (확인 후 수주 생성)',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-print',
        element: '인쇄 버튼',
        type: ACTION_TYPES.PRINT,
        description: '견적서 인쇄',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-excel',
        element: '엑셀 다운로드',
        type: ACTION_TYPES.DOWNLOAD,
        description: '목록을 엑셀 파일로 다운로드',
        position: { area: 'header-right' }
      },
      {
        id: 'status-badge',
        element: '상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '상태에 따라 색상 변경 (최초작성/수정중/최종확정/수주전환)',
        position: { area: 'table-cell' }
      },
      {
        id: 'pagination',
        element: '페이지네이션',
        type: ACTION_TYPES.NAVIGATE,
        description: '페이지 이동',
        position: { area: 'footer' }
      }
    ]
  },

  'quote-create': {
    screenName: '견적 등록',
    actions: [
      {
        id: 'btn-customer-search',
        element: '거래처 검색 버튼',
        type: ACTION_TYPES.MODAL,
        description: '거래처 검색 모달 팝업',
        position: { area: 'form-field' }
      },
      {
        id: 'btn-site-search',
        element: '현장 검색 버튼',
        type: ACTION_TYPES.MODAL,
        description: '현장 검색 모달 팝업',
        position: { area: 'form-field' }
      },
      {
        id: 'btn-add-item',
        element: '품목 추가 버튼',
        type: ACTION_TYPES.MODAL,
        description: '품목 선택 모달 팝업',
        position: { area: 'item-grid' }
      },
      {
        id: 'btn-delete-item',
        element: '품목 삭제 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '선택된 품목 삭제 확인',
        position: { area: 'item-grid' }
      },
      {
        id: 'input-quantity',
        element: '수량 입력',
        type: ACTION_TYPES.EDIT_INLINE,
        description: '수량 변경 시 금액 자동 계산',
        position: { area: 'item-grid' }
      },
      {
        id: 'input-price',
        element: '단가 입력',
        type: ACTION_TYPES.EDIT_INLINE,
        description: '단가 변경 시 금액 자동 계산',
        position: { area: 'item-grid' }
      },
      {
        id: 'btn-save',
        element: '저장 버튼',
        type: ACTION_TYPES.FORM_SUBMIT,
        description: '견적 저장 (검증 후 저장)',
        position: { area: 'footer' }
      },
      {
        id: 'btn-save-confirm',
        element: '확정 저장 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '견적 최종 확정 (수정 불가 상태로 변경)',
        position: { area: 'footer' }
      },
      {
        id: 'btn-cancel',
        element: '취소 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'quote-list',
        description: '견적 목록으로 이동 (변경사항 확인)',
        position: { area: 'footer' }
      },
      {
        id: 'btn-preview',
        element: '미리보기 버튼',
        type: ACTION_TYPES.MODAL,
        description: '견적서 미리보기 모달',
        position: { area: 'footer' }
      }
    ]
  },

  'quote-detail': {
    screenName: '견적 상세',
    actions: [
      {
        id: 'btn-edit',
        element: '수정 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'quote-edit',
        description: '견적 수정 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-convert-order',
        element: '수주전환 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '견적을 수주로 전환',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-copy',
        element: '복사 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '견적 복사하여 새 견적 생성',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-print',
        element: '인쇄 버튼',
        type: ACTION_TYPES.PRINT,
        description: '견적서 인쇄',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-download-pdf',
        element: 'PDF 다운로드',
        type: ACTION_TYPES.DOWNLOAD,
        description: '견적서 PDF 다운로드',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-send-email',
        element: '이메일 발송',
        type: ACTION_TYPES.MODAL,
        description: '이메일 발송 모달 (수신자 입력)',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-back',
        element: '목록 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'quote-list',
        description: '견적 목록으로 이동',
        position: { area: 'header-left' }
      },
      {
        id: 'link-customer',
        element: '거래처명 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'customer-detail',
        description: '거래처 상세 화면으로 이동',
        position: { area: 'info-section' }
      },
      {
        id: 'link-site',
        element: '현장명 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'site-detail',
        description: '현장 상세 화면으로 이동',
        position: { area: 'info-section' }
      },
      {
        id: 'tab-history',
        element: '변경이력 탭',
        type: ACTION_TYPES.TOGGLE,
        description: '변경이력 영역 표시/숨김',
        position: { area: 'tab-area' }
      }
    ]
  },

  // ========== 수주 관리 ==========
  'order-list': {
    screenName: '수주 목록',
    actions: [
      {
        id: 'btn-new-order',
        element: '신규 수주 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-create',
        description: '신규 수주 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-search',
        element: '검색 버튼',
        type: ACTION_TYPES.SEARCH,
        description: '검색 조건에 따라 수주 목록 조회',
        position: { area: 'search-area' }
      },
      {
        id: 'link-order-number',
        element: '수주번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-detail',
        description: '수주 상세 화면으로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'link-quote-number',
        element: '견적번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'quote-detail',
        description: '연결된 견적 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'status-badge',
        element: '수주상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '상태별 색상 (수주확정/생산중/생산완료/출하완료/취소)',
        position: { area: 'table-cell' }
      },
      {
        id: 'payment-badge',
        element: '입금상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '입금 상태별 색상 (미입금/입금완료)',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-work-order',
        element: '작업지시 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '작업지시 생성 확인',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-shipment',
        element: '출하지시 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'shipment-create',
        description: '출하지시 등록 화면으로 이동',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-cancel',
        element: '취소 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '수주 취소 확인 다이얼로그',
        position: { area: 'table-action' }
      },
      {
        id: 'filter-status',
        element: '상태 필터',
        type: ACTION_TYPES.FILTER,
        description: '수주 상태별 필터링',
        position: { area: 'search-area' }
      },
      {
        id: 'filter-date',
        element: '기간 필터',
        type: ACTION_TYPES.FILTER,
        description: '수주일/납기일 기간 필터링',
        position: { area: 'search-area' }
      },
      {
        id: 'checkbox-select',
        element: '체크박스 선택',
        type: ACTION_TYPES.SELECT,
        description: '복수 선택 후 일괄 작업',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-bulk-work-order',
        element: '일괄 작업지시',
        type: ACTION_TYPES.BULK_ACTION,
        description: '선택된 수주 일괄 작업지시 생성',
        position: { area: 'header-right' }
      }
    ]
  },

  'order-create': {
    screenName: '수주 등록',
    actions: [
      {
        id: 'btn-load-quote',
        element: '견적 불러오기',
        type: ACTION_TYPES.MODAL,
        description: '견적 선택 모달 (견적 데이터 로드)',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-customer-search',
        element: '거래처 검색',
        type: ACTION_TYPES.MODAL,
        description: '거래처 검색 모달',
        position: { area: 'form-field' }
      },
      {
        id: 'customer-credit-badge',
        element: '신용등급 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '거래처 신용등급 표시 (A/B/C)',
        position: { area: 'form-field' }
      },
      {
        id: 'btn-add-item',
        element: '품목 추가',
        type: ACTION_TYPES.MODAL,
        description: '품목 검색 및 추가 모달',
        position: { area: 'item-grid' }
      },
      {
        id: 'input-delivery-date',
        element: '납기일 선택',
        type: ACTION_TYPES.MODAL,
        description: '달력 모달에서 납기일 선택',
        position: { area: 'form-field' }
      },
      {
        id: 'btn-save',
        element: '저장 버튼',
        type: ACTION_TYPES.FORM_SUBMIT,
        description: '수주 저장',
        position: { area: 'footer' }
      },
      {
        id: 'btn-confirm',
        element: '확정 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '수주 확정 (C등급은 경리 승인 필요)',
        position: { area: 'footer' }
      },
      {
        id: 'btn-cancel',
        element: '취소 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-list',
        description: '수주 목록으로 이동',
        position: { area: 'footer' }
      }
    ]
  },

  'order-detail': {
    screenName: '수주 상세',
    actions: [
      {
        id: 'btn-edit',
        element: '수정 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-edit',
        description: '수주 수정 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-work-order',
        element: '작업지시 생성',
        type: ACTION_TYPES.CONFIRM,
        description: '작업지시 생성 확인',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-split',
        element: '분할 버튼',
        type: ACTION_TYPES.MODAL,
        description: '수주 분할 모달 (납품 단위 분할)',
        position: { area: 'header-right' }
      },
      {
        id: 'link-work-order',
        element: '작업지시 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'work-order-detail',
        description: '작업지시 상세로 이동',
        position: { area: 'related-section' }
      },
      {
        id: 'link-shipment',
        element: '출하 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'shipment-detail',
        description: '출하 상세로 이동',
        position: { area: 'related-section' }
      },
      {
        id: 'link-invoice',
        element: '거래명세서 링크',
        type: ACTION_TYPES.MODAL,
        description: '거래명세서 미리보기 모달',
        position: { area: 'related-section' }
      },
      {
        id: 'btn-invoice',
        element: '거래명세서 발행',
        type: ACTION_TYPES.MODAL,
        description: '거래명세서 발행 모달',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-tax-invoice',
        element: '세금계산서 발행',
        type: ACTION_TYPES.MODAL,
        description: '세금계산서 발행 모달',
        position: { area: 'header-right' }
      },
      {
        id: 'progress-bar',
        element: '진행상태 바',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '수주 진행 상태 시각화 (수주→생산→출하→완료)',
        position: { area: 'header-area' }
      }
    ]
  },

  // ========== 생산 관리 ==========
  'work-order-list': {
    screenName: '작업지시 목록',
    actions: [
      {
        id: 'btn-new',
        element: '신규 작업지시',
        type: ACTION_TYPES.NAVIGATE,
        target: 'work-order-create',
        description: '신규 작업지시 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-work-order-no',
        element: '작업지시번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'work-order-detail',
        description: '작업지시 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'link-order-no',
        element: '수주번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-detail',
        description: '연결된 수주 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'status-badge',
        element: '작업상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '작업대기/작업중/작업완료/검사대기/검사완료',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-start',
        element: '작업시작 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '작업 시작 확인 (상태: 작업대기→작업중)',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-complete',
        element: '작업완료 버튼',
        type: ACTION_TYPES.MODAL,
        description: '작업완료 모달 (실적 입력)',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-print-work-sheet',
        element: '작업지시서 출력',
        type: ACTION_TYPES.PRINT,
        description: '작업지시서 인쇄',
        position: { area: 'table-action' }
      },
      {
        id: 'filter-process',
        element: '공정 필터',
        type: ACTION_TYPES.FILTER,
        description: '공정별 필터링 (스크린/슬랫/절곡)',
        position: { area: 'search-area' }
      },
      {
        id: 'filter-line',
        element: '라인 필터',
        type: ACTION_TYPES.FILTER,
        description: '생산라인별 필터링',
        position: { area: 'search-area' }
      },
      {
        id: 'progress-indicator',
        element: '진행률 표시',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '작업 진행률 퍼센트 및 바 표시',
        position: { area: 'table-cell' }
      }
    ]
  },

  'work-order-create': {
    screenName: '작업지시 등록',
    actions: [
      {
        id: 'btn-load-order',
        element: '수주 불러오기',
        type: ACTION_TYPES.MODAL,
        description: '수주 선택 모달 (수주 데이터 로드)',
        position: { area: 'header-right' }
      },
      {
        id: 'select-process',
        element: '공정 선택',
        type: ACTION_TYPES.SELECT,
        description: '공정 선택 드롭다운',
        position: { area: 'form-field' }
      },
      {
        id: 'select-line',
        element: '생산라인 선택',
        type: ACTION_TYPES.SELECT,
        description: '생산라인 선택 드롭다운',
        position: { area: 'form-field' }
      },
      {
        id: 'input-plan-date',
        element: '계획일 선택',
        type: ACTION_TYPES.MODAL,
        description: '생산 계획일 달력 선택',
        position: { area: 'form-field' }
      },
      {
        id: 'btn-bom-check',
        element: 'BOM 확인',
        type: ACTION_TYPES.MODAL,
        description: 'BOM 구성 확인 모달',
        position: { area: 'item-section' }
      },
      {
        id: 'btn-stock-check',
        element: '재고 확인',
        type: ACTION_TYPES.MODAL,
        description: '자재 재고 현황 모달',
        position: { area: 'item-section' }
      },
      {
        id: 'btn-save',
        element: '저장 버튼',
        type: ACTION_TYPES.FORM_SUBMIT,
        description: '작업지시 저장',
        position: { area: 'footer' }
      },
      {
        id: 'btn-save-start',
        element: '저장 후 시작',
        type: ACTION_TYPES.CONFIRM,
        description: '저장 후 즉시 작업 시작',
        position: { area: 'footer' }
      }
    ]
  },

  'work-order-detail': {
    screenName: '작업지시 상세',
    actions: [
      {
        id: 'btn-start',
        element: '작업시작 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '작업 시작 (상태 변경)',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-pause',
        element: '작업중지 버튼',
        type: ACTION_TYPES.MODAL,
        description: '작업 중지 모달 (사유 입력)',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-complete',
        element: '작업완료 버튼',
        type: ACTION_TYPES.MODAL,
        description: '작업완료 모달 (실적/불량 입력)',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-inspection-request',
        element: '검사요청 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '품질검사 요청',
        position: { area: 'header-right' }
      },
      {
        id: 'link-order',
        element: '수주번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-detail',
        description: '연결된 수주 상세로 이동',
        position: { area: 'info-section' }
      },
      {
        id: 'timeline',
        element: '작업 타임라인',
        type: ACTION_TYPES.EXPAND,
        description: '작업 진행 타임라인 확장/축소',
        position: { area: 'timeline-section' }
      },
      {
        id: 'defect-list',
        element: '불량 내역',
        type: ACTION_TYPES.MODAL,
        description: '불량 상세 내역 모달',
        position: { area: 'result-section' }
      },
      {
        id: 'material-usage',
        element: '자재 사용 내역',
        type: ACTION_TYPES.EXPAND,
        description: '자재 사용 내역 확장',
        position: { area: 'material-section' }
      }
    ]
  },

  'work-result-list': {
    screenName: '작업실적 목록',
    actions: [
      {
        id: 'btn-new',
        element: '실적 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'work-result-create',
        description: '작업실적 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-result-no',
        element: '실적번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'work-result-detail',
        description: '작업실적 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'link-work-order',
        element: '작업지시 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'work-order-detail',
        description: '작업지시 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'defect-rate',
        element: '불량률 표시',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '불량률에 따른 색상 표시 (정상/주의/위험)',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-defect-detail',
        element: '불량 상세',
        type: ACTION_TYPES.MODAL,
        description: '불량 상세 내역 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'chart-daily',
        element: '일별 실적 차트',
        type: ACTION_TYPES.TOGGLE,
        description: '일별 실적 차트 표시/숨김',
        position: { area: 'chart-area' }
      }
    ]
  },

  // ========== 품질 관리 ==========
  'inspection-list': {
    screenName: '검사 목록',
    actions: [
      {
        id: 'btn-new',
        element: '검사 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'inspection-create',
        description: '검사 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-inspection-no',
        element: '검사번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'inspection-detail',
        description: '검사 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'status-badge',
        element: '검사상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '검사신청/검사예정/검사중/합격/불합격',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-start-inspection',
        element: '검사시작',
        type: ACTION_TYPES.CONFIRM,
        description: '검사 시작 확인',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-complete',
        element: '검사완료',
        type: ACTION_TYPES.MODAL,
        description: '검사완료 모달 (판정 결과 입력)',
        position: { area: 'table-action' }
      },
      {
        id: 'filter-type',
        element: '검사유형 필터',
        type: ACTION_TYPES.FILTER,
        description: '입고검사/중간검사/제품검사 필터',
        position: { area: 'search-area' }
      },
      {
        id: 'filter-result',
        element: '판정결과 필터',
        type: ACTION_TYPES.FILTER,
        description: '합격/불합격/보류 필터',
        position: { area: 'search-area' }
      }
    ]
  },

  'defect-list': {
    screenName: '불량 목록',
    actions: [
      {
        id: 'btn-new',
        element: '불량 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'defect-create',
        description: '불량 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-defect-no',
        element: '불량번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'defect-detail',
        description: '불량 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'defect-type-badge',
        element: '불량유형 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '불량 유형별 색상 표시',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-process',
        element: '처리 버튼',
        type: ACTION_TYPES.MODAL,
        description: '불량 처리 모달 (조치 내용 입력)',
        position: { area: 'table-action' }
      },
      {
        id: 'link-work-order',
        element: '작업지시 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'work-order-detail',
        description: '관련 작업지시로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'chart-defect-trend',
        element: '불량 추이 차트',
        type: ACTION_TYPES.TOGGLE,
        description: '불량 추이 차트 표시',
        position: { area: 'chart-area' }
      }
    ]
  },

  // ========== 재고/물류 관리 ==========
  'stock-list': {
    screenName: '재고 목록',
    actions: [
      {
        id: 'link-item',
        element: '품목명 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'item-detail',
        description: '품목 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'stock-level-badge',
        element: '재고수준 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '정상/부족/과잉 상태 색상 표시',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-adjust',
        element: '재고조정',
        type: ACTION_TYPES.MODAL,
        description: '재고조정 모달 (조정 사유 입력)',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-move',
        element: '위치이동',
        type: ACTION_TYPES.MODAL,
        description: '재고 위치이동 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-history',
        element: '이력조회',
        type: ACTION_TYPES.MODAL,
        description: '재고 입출고 이력 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'filter-warehouse',
        element: '창고 필터',
        type: ACTION_TYPES.FILTER,
        description: '창고별 재고 필터링',
        position: { area: 'search-area' }
      },
      {
        id: 'filter-category',
        element: '분류 필터',
        type: ACTION_TYPES.FILTER,
        description: '품목 분류별 필터링',
        position: { area: 'search-area' }
      },
      {
        id: 'btn-excel-export',
        element: '엑셀 내보내기',
        type: ACTION_TYPES.DOWNLOAD,
        description: '재고 현황 엑셀 다운로드',
        position: { area: 'header-right' }
      }
    ]
  },

  'inbound-list': {
    screenName: '입고 목록',
    actions: [
      {
        id: 'btn-new',
        element: '입고 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'inbound-create',
        description: '입고 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-inbound-no',
        element: '입고번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'inbound-detail',
        description: '입고 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'link-po',
        element: '발주번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'purchase-order-detail',
        description: '발주 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'status-badge',
        element: '입고상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '입고예정/입고중/입고완료/검사중',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-confirm',
        element: '입고확정',
        type: ACTION_TYPES.CONFIRM,
        description: '입고 확정 처리',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-inspection',
        element: '입고검사',
        type: ACTION_TYPES.NAVIGATE,
        target: 'inspection-create',
        description: '입고검사 등록으로 이동',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-print-label',
        element: '라벨출력',
        type: ACTION_TYPES.PRINT,
        description: 'LOT 라벨 인쇄',
        position: { area: 'table-action' }
      }
    ]
  },

  'outbound-list': {
    screenName: '출고 목록',
    actions: [
      {
        id: 'btn-new',
        element: '출고 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'outbound-create',
        description: '출고 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-outbound-no',
        element: '출고번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'outbound-detail',
        description: '출고 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'status-badge',
        element: '출고상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '출고지시/피킹중/출고완료',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-picking',
        element: '피킹시작',
        type: ACTION_TYPES.CONFIRM,
        description: '피킹 작업 시작',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-complete',
        element: '출고완료',
        type: ACTION_TYPES.CONFIRM,
        description: '출고 완료 처리',
        position: { area: 'table-action' }
      }
    ]
  },

  'shipment-list': {
    screenName: '출하 목록',
    actions: [
      {
        id: 'btn-new',
        element: '출하 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'shipment-create',
        description: '출하 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-shipment-no',
        element: '출하번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'shipment-detail',
        description: '출하 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'link-order',
        element: '수주번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-detail',
        description: '연결된 수주 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'status-badge',
        element: '출하상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '출고지시/출하준비/상차완료/배송중/배송완료',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-loading',
        element: '상차 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '상차 완료 처리',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-delivery-start',
        element: '배송시작',
        type: ACTION_TYPES.CONFIRM,
        description: '배송 시작 처리',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-delivery-complete',
        element: '배송완료',
        type: ACTION_TYPES.MODAL,
        description: '배송완료 모달 (서명/사진 첨부)',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-print-delivery-note',
        element: '납품서 출력',
        type: ACTION_TYPES.PRINT,
        description: '납품서 인쇄',
        position: { area: 'table-action' }
      },
      {
        id: 'filter-delivery-date',
        element: '배송일 필터',
        type: ACTION_TYPES.FILTER,
        description: '배송 예정일 필터링',
        position: { area: 'search-area' }
      }
    ]
  },

  // ========== 기준정보 ==========
  'customer-master-list': {
    screenName: '거래처 목록',
    actions: [
      {
        id: 'btn-new',
        element: '거래처 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'customer-master-create',
        description: '거래처 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-customer',
        element: '거래처명 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'customer-master-detail',
        description: '거래처 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'credit-badge',
        element: '신용등급 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: 'A등급(우량)/B등급(관리)/C등급(위험) 색상',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-edit',
        element: '수정 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'customer-master-edit',
        description: '거래처 수정 화면으로 이동',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-transaction-history',
        element: '거래이력',
        type: ACTION_TYPES.MODAL,
        description: '거래이력 조회 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'filter-type',
        element: '거래처유형 필터',
        type: ACTION_TYPES.FILTER,
        description: '매출처/매입처/동시거래 필터',
        position: { area: 'search-area' }
      },
      {
        id: 'filter-credit',
        element: '신용등급 필터',
        type: ACTION_TYPES.FILTER,
        description: 'A/B/C등급 필터',
        position: { area: 'search-area' }
      }
    ]
  },

  'item-list': {
    screenName: '품목 목록',
    actions: [
      {
        id: 'btn-new',
        element: '품목 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'item-create',
        description: '품목 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-item',
        element: '품목명 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'item-detail',
        description: '품목 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-edit',
        element: '수정 버튼',
        type: ACTION_TYPES.NAVIGATE,
        target: 'item-edit',
        description: '품목 수정 화면으로 이동',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-copy',
        element: '복사 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '품목 복사 생성',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-bom',
        element: 'BOM 조회',
        type: ACTION_TYPES.MODAL,
        description: 'BOM 구성 조회 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-stock',
        element: '재고 조회',
        type: ACTION_TYPES.MODAL,
        description: '재고 현황 조회 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'filter-category',
        element: '분류 필터',
        type: ACTION_TYPES.FILTER,
        description: '품목 분류별 필터',
        position: { area: 'search-area' }
      },
      {
        id: 'filter-type',
        element: '품목유형 필터',
        type: ACTION_TYPES.FILTER,
        description: '완제품/반제품/원자재 필터',
        position: { area: 'search-area' }
      }
    ]
  },

  'site-master-list': {
    screenName: '현장 목록',
    actions: [
      {
        id: 'btn-new',
        element: '현장 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'site-master-create',
        description: '현장 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-site',
        element: '현장명 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'site-master-detail',
        description: '현장 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'link-customer',
        element: '거래처 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'customer-master-detail',
        description: '연결된 거래처 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'status-badge',
        element: '진행상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '진행중/완료/보류 상태 색상',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-map',
        element: '지도보기',
        type: ACTION_TYPES.MODAL,
        description: '지도에서 현장 위치 확인 모달',
        position: { area: 'table-action' }
      }
    ]
  },

  // ========== 회계/경리 ==========
  'sales-list': {
    screenName: '매출 목록',
    actions: [
      {
        id: 'link-order',
        element: '수주번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-detail',
        description: '수주 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'invoice-status',
        element: '계산서 상태',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '미발행(빨강)/발행완료(초록) 색상',
        position: { area: 'table-cell' }
      },
      {
        id: 'payment-status',
        element: '입금 상태',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '미입금(빨강)/입금완료(초록) 색상',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-invoice',
        element: '거래명세서 발행',
        type: ACTION_TYPES.MODAL,
        description: '거래명세서 발행 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-tax-invoice',
        element: '세금계산서 발행',
        type: ACTION_TYPES.MODAL,
        description: '세금계산서 발행 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-confirm-payment',
        element: '입금확인',
        type: ACTION_TYPES.MODAL,
        description: '입금확인 처리 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-discount',
        element: '할인적용',
        type: ACTION_TYPES.MODAL,
        description: '할인 금액 입력 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'filter-invoice-status',
        element: '계산서 상태 필터',
        type: ACTION_TYPES.FILTER,
        description: '미발행/발행완료 필터',
        position: { area: 'search-area' }
      },
      {
        id: 'checkbox-bulk',
        element: '일괄선택',
        type: ACTION_TYPES.SELECT,
        description: '복수 선택 후 일괄 발행',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-bulk-invoice',
        element: '일괄 세금계산서',
        type: ACTION_TYPES.BULK_ACTION,
        description: '선택 항목 일괄 세금계산서 발행',
        position: { area: 'header-right' }
      }
    ]
  },

  'collection-list': {
    screenName: '수금 목록',
    actions: [
      {
        id: 'btn-new',
        element: '수금 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'collection-create',
        description: '수금 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-customer',
        element: '거래처 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'customer-master-detail',
        description: '거래처 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-match',
        element: '매출매칭',
        type: ACTION_TYPES.MODAL,
        description: '수금액과 매출 매칭 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'overdue-badge',
        element: '연체 표시',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '정상/연체 상태 색상',
        position: { area: 'table-cell' }
      },
      {
        id: 'filter-method',
        element: '수금방법 필터',
        type: ACTION_TYPES.FILTER,
        description: '현금/계좌이체/어음 필터',
        position: { area: 'search-area' }
      }
    ]
  },

  'purchase-list': {
    screenName: '매입 목록',
    actions: [
      {
        id: 'btn-new',
        element: '매입 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'purchase-create',
        description: '매입 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-supplier',
        element: '거래처 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'customer-master-detail',
        description: '거래처 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'invoice-received',
        element: '계산서 수령',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '미수령/수령완료 상태',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-payment',
        element: '지급처리',
        type: ACTION_TYPES.MODAL,
        description: '지급 처리 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-schedule',
        element: '지급예정등록',
        type: ACTION_TYPES.MODAL,
        description: '지급예정일 등록 모달',
        position: { area: 'table-action' }
      }
    ]
  },

  'expense-list': {
    screenName: '지출 목록',
    actions: [
      {
        id: 'btn-new',
        element: '지출 등록',
        type: ACTION_TYPES.NAVIGATE,
        target: 'expense-create',
        description: '지출결의서 등록 화면으로 이동',
        position: { area: 'header-right' }
      },
      {
        id: 'link-expense',
        element: '지출번호 링크',
        type: ACTION_TYPES.NAVIGATE,
        target: 'expense-detail',
        description: '지출 상세로 이동',
        position: { area: 'table-cell' }
      },
      {
        id: 'approval-status',
        element: '결재상태 뱃지',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '결재대기/결재중/결재완료/반려 색상',
        position: { area: 'table-cell' }
      },
      {
        id: 'btn-approve',
        element: '결재 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '결재 승인/반려 처리',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-execute',
        element: '집행 버튼',
        type: ACTION_TYPES.CONFIRM,
        description: '지출 집행 처리 (경리)',
        position: { area: 'table-action' }
      },
      {
        id: 'link-attachment',
        element: '첨부파일',
        type: ACTION_TYPES.DOWNLOAD,
        description: '영수증/증빙서류 다운로드',
        position: { area: 'table-cell' }
      }
    ]
  },

  'cashbook-list': {
    screenName: '금전출납부',
    actions: [
      {
        id: 'btn-income',
        element: '수입 등록',
        type: ACTION_TYPES.MODAL,
        description: '수입 등록 모달',
        position: { area: 'header-right' }
      },
      {
        id: 'btn-expense',
        element: '지출 등록',
        type: ACTION_TYPES.MODAL,
        description: '지출 등록 모달',
        position: { area: 'header-right' }
      },
      {
        id: 'link-detail',
        element: '내역 링크',
        type: ACTION_TYPES.MODAL,
        description: '거래 상세 내역 모달',
        position: { area: 'table-cell' }
      },
      {
        id: 'balance-display',
        element: '잔액 표시',
        type: ACTION_TYPES.STATUS_CHANGE,
        description: '양수(검정)/음수(빨강) 색상',
        position: { area: 'table-cell' }
      },
      {
        id: 'filter-account',
        element: '계좌 필터',
        type: ACTION_TYPES.FILTER,
        description: '계좌별 필터링',
        position: { area: 'search-area' }
      },
      {
        id: 'filter-type',
        element: '유형 필터',
        type: ACTION_TYPES.FILTER,
        description: '수입/지출 유형 필터',
        position: { area: 'search-area' }
      },
      {
        id: 'btn-reconcile',
        element: '대사 처리',
        type: ACTION_TYPES.MODAL,
        description: '은행 거래 대사 모달',
        position: { area: 'table-action' }
      },
      {
        id: 'btn-export',
        element: '내보내기',
        type: ACTION_TYPES.DOWNLOAD,
        description: '금전출납부 엑셀 다운로드',
        position: { area: 'header-right' }
      }
    ]
  },

  // ========== 대시보드 ==========
  'dashboard': {
    screenName: '대시보드',
    actions: [
      {
        id: 'card-sales',
        element: '매출 현황 카드',
        type: ACTION_TYPES.NAVIGATE,
        target: 'sales-list',
        description: '매출 목록으로 이동',
        position: { area: 'card-area' }
      },
      {
        id: 'card-orders',
        element: '수주 현황 카드',
        type: ACTION_TYPES.NAVIGATE,
        target: 'order-list',
        description: '수주 목록으로 이동',
        position: { area: 'card-area' }
      },
      {
        id: 'card-production',
        element: '생산 현황 카드',
        type: ACTION_TYPES.NAVIGATE,
        target: 'work-order-list',
        description: '작업지시 목록으로 이동',
        position: { area: 'card-area' }
      },
      {
        id: 'card-shipment',
        element: '출하 현황 카드',
        type: ACTION_TYPES.NAVIGATE,
        target: 'shipment-list',
        description: '출하 목록으로 이동',
        position: { area: 'card-area' }
      },
      {
        id: 'chart-monthly',
        element: '월별 실적 차트',
        type: ACTION_TYPES.TOGGLE,
        description: '차트 확대/축소',
        position: { area: 'chart-area' }
      },
      {
        id: 'alert-urgent',
        element: '긴급 알림',
        type: ACTION_TYPES.NAVIGATE,
        description: '관련 화면으로 이동',
        position: { area: 'alert-area' }
      },
      {
        id: 'filter-period',
        element: '기간 선택',
        type: ACTION_TYPES.FILTER,
        description: '조회 기간 변경 (일/주/월)',
        position: { area: 'header-area' }
      },
      {
        id: 'btn-refresh',
        element: '새로고침',
        type: ACTION_TYPES.API_CALL,
        description: '대시보드 데이터 새로고침',
        position: { area: 'header-area' }
      }
    ]
  }
};

/**
 * 화면 ID로 액션 정의 가져오기
 */
export const getScreenActions = (screenId) => {
  return screenActionDefinitions[screenId] || null;
};

/**
 * 모든 화면 ID 목록 가져오기
 */
export const getAllScreenIds = () => {
  return Object.keys(screenActionDefinitions);
};

/**
 * 액션 타입별 뱃지 색상 가져오기
 */
export const getBadgeColorByActionType = (actionType) => {
  return ACTION_COLOR_MAP[actionType] || 'gray';
};

/**
 * 화면의 액션들을 기능정의서 뱃지 형식으로 변환
 */
export const convertActionsToBadges = (screenId) => {
  const screenData = screenActionDefinitions[screenId];
  if (!screenData) return [];

  return screenData.actions.map((action, index) => ({
    id: `auto-${screenId}-${action.id}-${Date.now()}-${index}`,
    number: index + 1,
    label: action.element,
    content: action.description,
    actionType: action.type,
    targetScreen: action.target || null,
    position: action.position,
    color: getBadgeColorByActionType(action.type),
    screenId: screenId,
    isAutoGenerated: true,
    // 위치는 자동 생성 시 랜덤 또는 영역 기반으로 설정
    x: 0.1 + (index % 5) * 0.15,
    y: 0.2 + Math.floor(index / 5) * 0.15,
    absoluteX: 100 + (index % 5) * 150,
    absoluteY: 150 + Math.floor(index / 5) * 100
  }));
};

export default screenActionDefinitions;
