/**
 * 공통 상수 정의
 */

// API 엔드포인트
export const API_ENDPOINTS = {
    ABNORMAL_TRACKS: {
        RECENT: '/api/v1/abnormal-tracks/recent',
        DETECT: '/api/v1/abnormal-tracks/detect',
        MOVE_TO_ABNORMAL: '/api/v1/abnormal-tracks/move-to-abnormal'
    },
    TILES: {
        WORLD: '/api/tiles/world/{z}/{x}/{y}.webp'
    }
};

// 비정상 유형
export const ABNORMAL_TYPES = {
    EXTREME_SPEED: 'extreme_speed',
    EXTREME_DISTANCE: 'extreme_distance',
    EXTREME_TRANSITION: 'extreme_transition',
    EXTREME_AVG_SPEED_5MIN: 'extreme_avg_speed_5min',
    IMPOSSIBLE_TRANSITION: 'impossible_transition',
    USER_DETECTED: 'user_detected'
};

// 비정상 유형 라벨
export const ABNORMAL_TYPE_LABELS = {
    [ABNORMAL_TYPES.EXTREME_SPEED]: '극단적 비정상 속도',
    [ABNORMAL_TYPES.EXTREME_DISTANCE]: '5분간 극단적 이동',
    [ABNORMAL_TYPES.EXTREME_TRANSITION]: '극단적 bucket 전환',
    [ABNORMAL_TYPES.EXTREME_AVG_SPEED_5MIN]: '극단적 평균속도 (5분)',
    [ABNORMAL_TYPES.IMPOSSIBLE_TRANSITION]: '물리적 불가능 전환',
    [ABNORMAL_TYPES.USER_DETECTED]: '사용자 검출'
};

// 비정상 유형 설명
export const ABNORMAL_TYPE_DESCRIPTIONS = {
    [ABNORMAL_TYPES.EXTREME_SPEED]: '평균속도가 선박 500knots, 항공기 800knots 초과',
    [ABNORMAL_TYPES.EXTREME_DISTANCE]: '5분간 이동거리가 100nm 초과',
    [ABNORMAL_TYPES.EXTREME_TRANSITION]: '버킷 전환 시 암시된 속도가 비정상적으로 높음',
    [ABNORMAL_TYPES.EXTREME_AVG_SPEED_5MIN]: '5분 평균속도가 1000knots 초과 (네트워크 오류)',
    [ABNORMAL_TYPES.IMPOSSIBLE_TRANSITION]: '시간대별 집계 시 물리적으로 불가능한 전환 (500knots 초과)',
    [ABNORMAL_TYPES.USER_DETECTED]: '사용자가 수동으로 검출한 비정상 궤적'
};

// 비정상 유형별 색상 (RGB)
export const ABNORMAL_TYPE_COLORS = {
    [ABNORMAL_TYPES.EXTREME_SPEED]: [231, 76, 60],
    [ABNORMAL_TYPES.EXTREME_DISTANCE]: [243, 156, 18],
    [ABNORMAL_TYPES.EXTREME_TRANSITION]: [155, 89, 182],
    [ABNORMAL_TYPES.EXTREME_AVG_SPEED_5MIN]: [52, 152, 219],
    [ABNORMAL_TYPES.IMPOSSIBLE_TRANSITION]: [192, 57, 43],
    [ABNORMAL_TYPES.USER_DETECTED]: [149, 165, 166]
};

// 지도 설정
export const MAP_CONFIG = {
    DEFAULT_CENTER: [128, 35.5],
    DEFAULT_ZOOM: 6,
    TILE_SIZE: 256,
    MIN_ZOOM: 0,
    MAX_ZOOM: 22
};

// 정렬 옵션
export const SORT_OPTIONS = {
    COUNT: 'count',
    DISTANCE: 'distance',
    SPEED: 'speed',
    RECENT: 'recent'
};

// 테이블 타입
export const TABLE_TYPES = {
    HOURLY: 'hourly',
    DAILY: 'daily'
};

// 자동 새로고침 간격 (밀리초)
export const REFRESH_INTERVAL = 300000; // 5분

// 애니메이션 설정
export const ANIMATION = {
    TRANSITION_DURATION: 300,
    HIGHLIGHT_DURATION: 1000
};

// 레이어 설정
export const LAYER_CONFIG = {
    PATH: {
        WIDTH_MIN: 2,
        WIDTH_MAX: 20,
        DEFAULT_WIDTH: 3,
        SELECTED_WIDTH: 15,
        ACTIVE_WIDTH: 4,
        INACTIVE_OPACITY: 60,
        ACTIVE_OPACITY: 120,
        SELECTED_OPACITY: 255
    },
    POINT: {
        RADIUS: 8,
        RADIUS_MIN: 4,
        RADIUS_MAX: 12,
        STROKE_WIDTH: 2
    }
};

// 색상 테마
export const COLORS = {
    PRIMARY: '#007bff',
    SUCCESS: '#28a745',
    WARNING: '#ffc107',
    DANGER: '#dc3545',
    SECONDARY: '#6c757d',
    SELECTED: [255, 215, 0], // 금색
    DEFAULT_TRACK: [128, 128, 128]
};