// 위젯 타입 정의
export type WidgetType = 
  | 'sales-overview'          // 매출 현황
  | 'sales-target'            // 매출 목표 달성률
  | 'top-customers'           // TOP 5 고객
  | 'profitability'           // 수익성 지표
  | 'production-status'       // 생산 현황
  | 'quality-status'          // 품질 현황
  | 'inventory-status'        // 재고 현황
  | 'hr-status'               // 인사 현황
  | 'schedule-calendar'       // 일정/캘린더
  | 'shipping-status'         // 입출고 현황
  | 'purchase-status'         // 매입 현황
  | 'sales-trend'             // 매출 추이
  | 'quick-actions'           // 빠른 작업
  | 'notifications'           // 알림
  | 'approval-status'         // 결재 현황
  | 'vehicle-status'          // 차량 현황
  | 'process-overview'        // 모든 프로세스 현황
  | 'daily-summary'           // 당일 핵심 지표
  | 'receivables'             // 미수금 관리
  | 'cash-flow'               // 현금 흐름
  | 'sales-achievement'       // 일/월/연 매출 달성
  | 'sales-trend-chart'       // 매출 추이 차트
  | 'receivables-trend';      // 미수금 추이

export interface Widget {
  id: string;
  type: WidgetType;
  title: string;
  description: string;
  size: 'small' | 'medium' | 'large' | 'full';  // 그리드 크기 (레거시)
  columns: 1 | 2 | 3 | 4;  // ROW 분할: 1~4 (1=1/4, 2=1/2, 3=3/4, 4=전체)
  order: number;  // 정렬 순서
  enabled: boolean;  // 활성화 여부
}

export interface WidgetConfig {
  widgets: Widget[];
}

// 위젯 메타데이터
export const WIDGET_METADATA: Record<WidgetType, {
  title: string;
  description: string;
  defaultSize: 'small' | 'medium' | 'large' | 'full';
  category: string;
  icon: string;
}> = {
  'sales-overview': {
    title: '매출 현황',
    description: '일별/월별/연간 매출 현황을 한눈에 확인',
    defaultSize: 'large',
    category: '매출/재무',
    icon: 'DollarSign'
  },
  'sales-target': {
    title: '매출 목표 달성률',
    description: '목표 대비 매출 달성률 및 추이',
    defaultSize: 'medium',
    category: '매출/재무',
    icon: 'Target'
  },
  'top-customers': {
    title: 'TOP 5 고객',
    description: '주요 고객별 매출 현황',
    defaultSize: 'medium',
    category: '매출/재무',
    icon: 'Users'
  },
  'profitability': {
    title: '수익성 지표',
    description: '매출총이익률/영업이익률',
    defaultSize: 'small',
    category: '매출/재무',
    icon: 'TrendingUp'
  },
  'production-status': {
    title: '생산 현황',
    description: '실시간 생산 진행 상태',
    defaultSize: 'medium',
    category: '생산',
    icon: 'Factory'
  },
  'quality-status': {
    title: '품질 현황',
    description: '불량률 및 품질 지표',
    defaultSize: 'medium',
    category: '품질',
    icon: 'CheckCircle'
  },
  'inventory-status': {
    title: '재고 현황',
    description: '자재 및 제품 재고 현황',
    defaultSize: 'medium',
    category: '자재/재고',
    icon: 'Package'
  },
  'hr-status': {
    title: '인사 현황',
    description: '출근/휴가 등 인사 정보',
    defaultSize: 'small',
    category: '인사',
    icon: 'UserCheck'
  },
  'schedule-calendar': {
    title: '일정/캘린더',
    description: '오늘의 일정 및 중요 이벤트',
    defaultSize: 'large',
    category: '일정',
    icon: 'Calendar'
  },
  'shipping-status': {
    title: '입출고 현황',
    description: '자재 입고 및 제품 출고 현황',
    defaultSize: 'medium',
    category: '자재/재고',
    icon: 'Truck'
  },
  'purchase-status': {
    title: '매입 현황',
    description: '월별 매입 및 주요 거래처',
    defaultSize: 'medium',
    category: '매출/재무',
    icon: 'ShoppingBag'
  },
  'sales-trend': {
    title: '매출 추이',
    description: '월별/주별 매출 트렌드',
    defaultSize: 'large',
    category: '매출/재무',
    icon: 'BarChart3'
  },
  'quick-actions': {
    title: '빠른 작업',
    description: '자주 사용하는 기능 바로가기',
    defaultSize: 'small',
    category: '기타',
    icon: 'Zap'
  },
  'notifications': {
    title: '알림',
    description: '중요 알림 및 공지사항',
    defaultSize: 'small',
    category: '기타',
    icon: 'Bell'
  },
  'approval-status': {
    title: '결재 현황',
    description: '대기중인 결재 문서',
    defaultSize: 'small',
    category: '결재',
    icon: 'FileCheck'
  },
  'vehicle-status': {
    title: '차량 현황',
    description: '차량 운행 및 관리 현황',
    defaultSize: 'small',
    category: '기타',
    icon: 'Truck'
  },
  'process-overview': {
    title: '모든 프로세스 현황',
    description: '견적-수주-생산-검사-출고 전체 프로세스',
    defaultSize: 'full',
    category: '생산',
    icon: 'Activity'
  },
  'daily-summary': {
    title: '당일 핵심 지표',
    description: '당일 출하매출, 이익률, 미수금, 손익',
    defaultSize: 'large',
    category: '매출/재무',
    icon: 'Zap'
  },
  'receivables': {
    title: '미수금 관리',
    description: '거래처별 미수금 TOP 5',
    defaultSize: 'medium',
    category: '매출/재무',
    icon: 'CreditCard'
  },
  'cash-flow': {
    title: '현금 흐름',
    description: '현금 잔고 변동 및 주요 거래',
    defaultSize: 'medium',
    category: '매출/재무',
    icon: 'Banknote'
  },
  'sales-achievement': {
    title: '일/월/연 매출 달성',
    description: '일별/월별/연간 매출 목표 달성률',
    defaultSize: 'large',
    category: '매출/재무',
    icon: 'Target'
  },
  'sales-trend-chart': {
    title: '매출 추이 차트',
    description: '월별 매출/매입 트렌드 차트',
    defaultSize: 'large',
    category: '매출/재무',
    icon: 'BarChart3'
  },
  'receivables-trend': {
    title: '미수금 추이',
    description: '월별 미수금 변동 추이',
    defaultSize: 'medium',
    category: '매출/재무',
    icon: 'Clock'
  }
};

// 기본 위젯 설정 (CEO 대시보드)
// 중복 제거: sales-overview 제거 (sales-achievement와 중복)
export const DEFAULT_CEO_WIDGETS: Widget[] = [
  {
    id: 'w1',
    type: 'daily-summary',
    title: WIDGET_METADATA['daily-summary'].title,
    description: WIDGET_METADATA['daily-summary'].description,
    size: 'large',
    columns: 4,  // 전체 너비
    order: 1,
    enabled: true
  },
  {
    id: 'w2',
    type: 'process-overview',
    title: WIDGET_METADATA['process-overview'].title,
    description: WIDGET_METADATA['process-overview'].description,
    size: 'full',
    columns: 4,  // 전체 너비
    order: 2,
    enabled: true
  },
  {
    id: 'w3',
    type: 'sales-achievement',
    title: WIDGET_METADATA['sales-achievement'].title,
    description: WIDGET_METADATA['sales-achievement'].description,
    size: 'large',
    columns: 4,  // 전체 너비
    order: 3,
    enabled: true
  },
  {
    id: 'w4',
    type: 'sales-trend-chart',
    title: WIDGET_METADATA['sales-trend-chart'].title,
    description: WIDGET_METADATA['sales-trend-chart'].description,
    size: 'large',
    columns: 2,  // 절반 너비
    order: 4,
    enabled: true
  },
  {
    id: 'w5',
    type: 'receivables-trend',
    title: WIDGET_METADATA['receivables-trend'].title,
    description: WIDGET_METADATA['receivables-trend'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 5,
    enabled: true
  },
  {
    id: 'w7',
    type: 'top-customers',
    title: WIDGET_METADATA['top-customers'].title,
    description: WIDGET_METADATA['top-customers'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 7,
    enabled: true
  },
  {
    id: 'w8',
    type: 'production-status',
    title: WIDGET_METADATA['production-status'].title,
    description: WIDGET_METADATA['production-status'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 8,
    enabled: true
  },
  {
    id: 'w9',
    type: 'quality-status',
    title: WIDGET_METADATA['quality-status'].title,
    description: WIDGET_METADATA['quality-status'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 9,
    enabled: true
  },
  {
    id: 'w10',
    type: 'receivables',
    title: WIDGET_METADATA['receivables'].title,
    description: WIDGET_METADATA['receivables'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 10,
    enabled: true
  },
  {
    id: 'w11',
    type: 'cash-flow',
    title: WIDGET_METADATA['cash-flow'].title,
    description: WIDGET_METADATA['cash-flow'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 11,
    enabled: true
  },
  {
    id: 'w12',
    type: 'purchase-status',
    title: WIDGET_METADATA['purchase-status'].title,
    description: WIDGET_METADATA['purchase-status'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 12,
    enabled: true
  },
  {
    id: 'w13',
    type: 'inventory-status',
    title: WIDGET_METADATA['inventory-status'].title,
    description: WIDGET_METADATA['inventory-status'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 13,
    enabled: true
  },
  {
    id: 'w15',
    type: 'hr-status',
    title: WIDGET_METADATA['hr-status'].title,
    description: WIDGET_METADATA['hr-status'].description,
    size: 'small',
    columns: 2,  // 절반 너비
    order: 15,
    enabled: true
  },
  {
    id: 'w16',
    type: 'approval-status',
    title: WIDGET_METADATA['approval-status'].title,
    description: WIDGET_METADATA['approval-status'].description,
    size: 'small',
    columns: 2,  // 절반 너비
    order: 16,
    enabled: true
  },
  {
    id: 'w17',
    type: 'schedule-calendar',
    title: WIDGET_METADATA['schedule-calendar'].title,
    description: WIDGET_METADATA['schedule-calendar'].description,
    size: 'large',
    columns: 4,  // 전체 너비
    order: 17,
    enabled: true
  },
  // 비활성화된 위젯들 (위젯 매니저에서 추가 가능)
  {
    id: 'w6',
    type: 'sales-overview',
    title: WIDGET_METADATA['sales-overview'].title,
    description: WIDGET_METADATA['sales-overview'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 6,
    enabled: false
  },
  {
    id: 'w14',
    type: 'shipping-status',
    title: WIDGET_METADATA['shipping-status'].title,
    description: WIDGET_METADATA['shipping-status'].description,
    size: 'medium',
    columns: 2,  // 절반 너비
    order: 14,
    enabled: false
  },
  {
    id: 'w18',
    type: 'sales-trend',
    title: WIDGET_METADATA['sales-trend'].title,
    description: WIDGET_METADATA['sales-trend'].description,
    size: 'large',
    columns: 4,  // 전체 너비
    order: 18,
    enabled: false
  },
  {
    id: 'w19',
    type: 'vehicle-status',
    title: WIDGET_METADATA['vehicle-status'].title,
    description: WIDGET_METADATA['vehicle-status'].description,
    size: 'small',
    columns: 2,  // 절반 너비
    order: 19,
    enabled: false
  },
  {
    id: 'w20',
    type: 'quick-actions',
    title: WIDGET_METADATA['quick-actions'].title,
    description: WIDGET_METADATA['quick-actions'].description,
    size: 'small',
    columns: 2,  // 절반 너비
    order: 20,
    enabled: false
  },
  {
    id: 'w21',
    type: 'notifications',
    title: WIDGET_METADATA['notifications'].title,
    description: WIDGET_METADATA['notifications'].description,
    size: 'small',
    columns: 2,  // 절반 너비
    order: 21,
    enabled: false
  }
];
