/**
 * 선박 신호원 및 종류 상수 정의
 * 참조: mda-react-front/src/types/constants.ts
 * 참조: mda-stomp-bridge/docs/guide/frontend-guide.html
 */

// =====================
// 신호원 코드 (Signal Source Code)
// =====================
export const SIGNAL_SOURCE_CODE_AIS = '000001';
export const SIGNAL_SOURCE_CODE_ENAV = '000002';
export const SIGNAL_SOURCE_CODE_VPASS = '000003';
export const SIGNAL_SOURCE_CODE_VTS_AIS = '000004';
export const SIGNAL_SOURCE_CODE_RADAR = '000005';
export const SIGNAL_SOURCE_CODE_D_MF_HF = '000016';

// =====================
// 신호원 우선순위 (동적 대표 선정용, 숫자가 작을수록 높은 우선순위)
// 참조: mda-react-front/docs/dynamic-priority.md §1
// =====================
export const SOURCE_PRIORITY_RANK = {
  '000005': 0, // VTS-Radar
  '000004': 1, // VTS-AIS
  '000001': 2, // AIS
  '000003': 3, // V-Pass
  '000002': 4, // E-Nav
  '000016': 5, // D-MF/HF
};

// =====================
// 신호원 코드 → ship 객체의 is_active 프로퍼티 키 매핑
// 참조: mda-react-front/docs/dynamic-priority.md §3
// =====================
export const SOURCE_TO_ACTIVE_KEY = {
  '000001': 'ais',
  '000003': 'vpass',
  '000002': 'enav',
  '000004': 'vtsAis',
  '000016': 'dMfHf',
  '000005': 'vtsRadar',
};

// =====================
// 선박 종류 코드 (Ship Kind Code)
// =====================
export const SIGNAL_KIND_CODE_FISHING = '000020';    // 어선
export const SIGNAL_KIND_CODE_KCGV = '000021';       // 경비함정
export const SIGNAL_KIND_CODE_PASSENGER = '000022';  // 여객선
export const SIGNAL_KIND_CODE_CARGO = '000023';      // 화물선
export const SIGNAL_KIND_CODE_TANKER = '000024';     // 유조선
export const SIGNAL_KIND_CODE_GOV = '000025';        // 관공선
export const SIGNAL_KIND_CODE_NORMAL = '000027';     // 일반
export const SIGNAL_KIND_CODE_BUOY = '000028';       // 부이

// =====================
// STOMP 메시지 배열 인덱스
// 참조: mda-react-front/src/feature/commonFeature.ts - deckSplitCommonTarget()
// =====================
export const SHIP_MSG_INDEX = {
  TARGET_ID: 0,              // 통합 TARGET_ID (AIS_VPASS_ENAV_VTSAIS_DMFHF 형식)
  RECV_DATE_TIME: 1,         // 수신 시간
  SIGNAL_SOURCE_CODE: 2,     // 신호원 코드
  COG: 3,                    // 침로 (degrees)
  SOG: 4,                    // 속력 (knots)
  LONGITUDE: 5,              // 경도
  LATITUDE: 6,               // 위도
  SHIP_NAME: 7,              // 선박명
  SHIP_TYPE: 8,              // 선박 타입
  DIM_A: 9,
  DIM_B: 10,
  DIM_C: 11,
  DIM_D: 12,
  DEPARTMENT: 13,
  ALTITUDE: 14,
  VTS_CODE: 15,
  LOST: 16,                  // 1=lost, 0=정상
  HAZARDOUS_CATEGORY: 17,    // 위험물 카테고리
  PERMISSION: 18,            // 허가 여부
  AIS: 19,                   // AIS 통합 플래그
  VPASS: 20,                 // VPASS 통합 플래그
  ENAV: 21,                  // ENAV 통합 플래그
  VTS_AIS: 22,               // VTS_AIS 통합 플래그
  D_MF_HF: 23,               // D_MF_HF 통합 플래그
  VTS_RADAR: 24,             // RADAR 통합 플래그
  NEAR_VTS_CODE: 25,
  INTEGRATE: 26,             // 통합 여부
  SIGNAL_KIND_CODE: 27,      // 선종 코드
  DRAUGHT: 28,               // 흘수
  IMO: 29,                   // IMO 번호
  IS_NON_PERMISSION: 30,
  IS_ABROAD_GOV: 31,
  IS_MMSI_CHANGED: 32,
  IS_EEZ_CONTACTED: 33,
  IS_NORTH_KOREA: 34,
  NATIONAL_CODE: 35,         // 국적 코드
  IS_PRIORITY: 36,           // 1=priority (통합선박에서 대표 신호원)
  ORIGINAL_TARGET_ID: 37,    // 개별 장비 고유 TARGET_ID
};

// =====================
// 선박 종류별 한글 라벨
// =====================
export const SHIP_KIND_LABELS = {
  [SIGNAL_KIND_CODE_FISHING]: '어선',
  [SIGNAL_KIND_CODE_KCGV]: '경비함정',
  [SIGNAL_KIND_CODE_PASSENGER]: '여객선',
  [SIGNAL_KIND_CODE_CARGO]: '화물선',
  [SIGNAL_KIND_CODE_TANKER]: '유조선',
  [SIGNAL_KIND_CODE_GOV]: '관공선',
  [SIGNAL_KIND_CODE_NORMAL]: '일반',
  [SIGNAL_KIND_CODE_BUOY]: '부이',
};

// =====================
// 신호원별 한글 라벨
// =====================
export const SIGNAL_SOURCE_LABELS = {
  [SIGNAL_SOURCE_CODE_AIS]: 'AIS',
  [SIGNAL_SOURCE_CODE_ENAV]: 'e-Nav',
  [SIGNAL_SOURCE_CODE_VPASS]: 'V-PASS',
  [SIGNAL_SOURCE_CODE_VTS_AIS]: 'VTS AIS',
  [SIGNAL_SOURCE_CODE_RADAR]: 'RADAR',
  [SIGNAL_SOURCE_CODE_D_MF_HF]: 'D MF/HF',
};

// =====================
// AVETDR 플래그 설정
// A=AIS, V=VPASS, E=ENAV, T=VTS_AIS, D=D_MF_HF, R=RADAR
// 참조: mda-react-front/src/util/realTimeLayerUtil.ts (라인 733-776)
// =====================
export const SIGNAL_FLAG_CONFIGS = [
  {
    key: 'A',
    name: 'AIS',
    activeColor: '#C2A7DC',
    inactiveColor: '#CFCFCF',
    signalSourceCode: SIGNAL_SOURCE_CODE_AIS,
    dataKey: 'ais',
  },
  {
    key: 'V',
    name: 'V-Pass',
    activeColor: '#8FAEFC',
    inactiveColor: '#CFCFCF',
    signalSourceCode: SIGNAL_SOURCE_CODE_VPASS,
    dataKey: 'vpass',
  },
  {
    key: 'E',
    name: 'E-Nav',
    activeColor: '#74B2F0',
    inactiveColor: '#CFCFCF',
    signalSourceCode: SIGNAL_SOURCE_CODE_ENAV,
    dataKey: 'enav',
  },
  {
    key: 'T',
    name: 'VTS-AIS',
    activeColor: '#4190DF',
    inactiveColor: '#CFCFCF',
    signalSourceCode: SIGNAL_SOURCE_CODE_VTS_AIS,
    dataKey: 'vtsAis',
  },
  {
    key: 'D',
    name: 'D-MF/HF',
    activeColor: '#459EF6',
    inactiveColor: '#CFCFCF',
    signalSourceCode: SIGNAL_SOURCE_CODE_D_MF_HF,
    dataKey: 'dMfHf',
  },
  {
    key: 'R',
    name: 'VTS-RT',
    activeColor: '#4577F6',
    inactiveColor: '#CFCFCF',
    signalSourceCode: SIGNAL_SOURCE_CODE_RADAR,
    dataKey: 'vtsRadar',
  },
];

// 레거시 호환
export const AVETDR_COLORS = {
  A: { active: '#C2A7DC', inactive: '#444' },
  V: { active: '#8FAEFC', inactive: '#444' },
  E: { active: '#74B2F0', inactive: '#444' },
  T: { active: '#4190DF', inactive: '#444' },
  D: { active: '#459EF6', inactive: '#444' },
  R: { active: '#4577F6', inactive: '#444' },
};

// =====================
// 선박 종류별 색상 (범례용)
// =====================
export const SHIP_KIND_COLORS = {
  [SIGNAL_KIND_CODE_FISHING]: '#00C853',    // 녹색 - 어선
  [SIGNAL_KIND_CODE_KCGV]: '#FF5722',       // 주황 - 경비함정
  [SIGNAL_KIND_CODE_PASSENGER]: '#2196F3',  // 파랑 - 여객선
  [SIGNAL_KIND_CODE_CARGO]: '#9C27B0',      // 보라 - 화물선
  [SIGNAL_KIND_CODE_TANKER]: '#F44336',     // 빨강 - 유조선
  [SIGNAL_KIND_CODE_GOV]: '#FF9800',        // 오렌지 - 관공선
  [SIGNAL_KIND_CODE_NORMAL]: '#607D8B',     // 회색 - 일반
  [SIGNAL_KIND_CODE_BUOY]: '#795548',       // 갈색 - 부이
};

// =====================
// 속력 임계값 (정지/이동 판단)
// =====================
export const SPEED_THRESHOLD = 1; // knots (메인 프로젝트 기준)

// =====================
// 아이콘 아틀라스 매핑 (atlas.png 스프라이트 시트)
// 참조: mda-react-front/src/types/constants.ts
// =====================
export const ICON_ATLAS_MAPPING = {
  // 이동 중인 선박 아이콘 (화살표 형태)
  fishingImg: { x: 1, y: 518, width: 16, height: 27 },
  kcgvImg: { x: 45, y: 115, width: 17, height: 27 },
  passImg: { x: 24, y: 486, width: 17, height: 27 },
  cargoImg: { x: 44, y: 144, width: 17, height: 27 },
  hazardImg: { x: 44, y: 173, width: 17, height: 27 },  // 유조선
  govImg: { x: 43, y: 486, width: 17, height: 27 },
  etcImg: { x: 24, y: 515, width: 17, height: 27 },
  bouyImg: { x: 1, y: 485, width: 21, height: 31 },

  // 정지 선박 아이콘 (원형)
  fishingStopImg: { x: 51, y: 51, width: 8, height: 8 },
  kcgvStopImg: { x: 51, y: 41, width: 8, height: 8 },
  passStopImg: { x: 51, y: 21, width: 8, height: 8 },
  cargoStopImg: { x: 51, y: 1, width: 8, height: 8 },
  hazardStopImg: { x: 51, y: 11, width: 8, height: 8 },
  govStopImg: { x: 51, y: 31, width: 8, height: 8 },
  etcStopImg: { x: 51, y: 71, width: 8, height: 8 },

  // 위험물 선박 아이콘
  fishingHazardImg: { x: 33, y: 415, width: 30, height: 69 },
  kcgvHazardImg: { x: 1, y: 414, width: 30, height: 69 },
  passHazardImg: { x: 1, y: 343, width: 30, height: 69 },
  cargoHazardImg: { x: 33, y: 273, width: 30, height: 69 },
  tankerHazardImg: { x: 1, y: 272, width: 30, height: 69 },
  govHazardImg: { x: 33, y: 202, width: 30, height: 69 },
  etcHazardImg: { x: 33, y: 344, width: 30, height: 69 },

  // 소실 신호 아이콘
  lostShipImg: { x: 43, y: 515, width: 16, height: 28 },

  // 기타 아이콘
  fixedAssetImg: { x: 1, y: 59, width: 48, height: 54 },
  airCraftImg: { x: 1, y: 1, width: 48, height: 56 },
  kcgvAssetImg: { x: 1, y: 115, width: 42, height: 26 },
  rotationAssetImg: { x: 1, y: 143, width: 41, height: 26 },
  helicopterImg: { x: 1, y: 171, width: 41, height: 26 },
};

// =====================
// 선종별 이동 아이콘 매핑
// =====================
export const ICON_MAPPING_KIND_MOVING = {
  [SIGNAL_KIND_CODE_FISHING]: 'fishingImg',
  [SIGNAL_KIND_CODE_KCGV]: 'kcgvImg',
  [SIGNAL_KIND_CODE_PASSENGER]: 'passImg',
  [SIGNAL_KIND_CODE_CARGO]: 'cargoImg',
  [SIGNAL_KIND_CODE_TANKER]: 'hazardImg',
  [SIGNAL_KIND_CODE_GOV]: 'govImg',
  [SIGNAL_KIND_CODE_NORMAL]: 'etcImg',
  [SIGNAL_KIND_CODE_BUOY]: 'bouyImg',
};

// =====================
// 선종별 정지 아이콘 매핑
// =====================
export const ICON_MAPPING_KIND_STOPPING = {
  [SIGNAL_KIND_CODE_FISHING]: 'fishingStopImg',
  [SIGNAL_KIND_CODE_KCGV]: 'kcgvStopImg',
  [SIGNAL_KIND_CODE_PASSENGER]: 'passStopImg',
  [SIGNAL_KIND_CODE_CARGO]: 'cargoStopImg',
  [SIGNAL_KIND_CODE_TANKER]: 'hazardStopImg',
  [SIGNAL_KIND_CODE_GOV]: 'govStopImg',
  [SIGNAL_KIND_CODE_NORMAL]: 'etcStopImg',
  [SIGNAL_KIND_CODE_BUOY]: 'bouyImg',
};

// =====================
// 국적 코드 (National Code)
// =====================
export const NATIONAL_CODE_KR = 'KR';   // 한국
export const NATIONAL_CODE_CN = 'CN';   // 중국
export const NATIONAL_CODE_JP = 'JP';   // 일본
export const NATIONAL_CODE_KP = 'KP';   // 북한
export const NATIONAL_CODE_OTHER = 'OTHER'; // 기타

// =====================
// STOMP 토픽
// =====================
export const STOMP_TOPICS = {
  SHIP: '/topic/ship',
  SHIP_THROTTLED: '/topic/ship-throttled-', // + {N}s
  COUNT: '/topic/count',
  SHIP_DELETE: '/topic/ship-delete',
};

// =====================
// 기본 선박 종류 목록 (필터/범례용)
// =====================
export const SHIP_KIND_LIST = [
  { code: SIGNAL_KIND_CODE_FISHING, label: '어선' },
  { code: SIGNAL_KIND_CODE_KCGV, label: '경비함정' },
  { code: SIGNAL_KIND_CODE_PASSENGER, label: '여객선' },
  { code: SIGNAL_KIND_CODE_CARGO, label: '화물선' },
  { code: SIGNAL_KIND_CODE_TANKER, label: '유조선' },
  { code: SIGNAL_KIND_CODE_GOV, label: '관공선' },
  { code: SIGNAL_KIND_CODE_NORMAL, label: '일반' },
  { code: SIGNAL_KIND_CODE_BUOY, label: '부이' },
];

// =====================
// 신호원 목록 (필터용)
// =====================
export const SIGNAL_SOURCE_LIST = [
  { code: SIGNAL_SOURCE_CODE_AIS, label: 'AIS' },
  { code: SIGNAL_SOURCE_CODE_VPASS, label: 'V-PASS' },
  { code: SIGNAL_SOURCE_CODE_ENAV, label: 'e-Nav' },
  { code: SIGNAL_SOURCE_CODE_VTS_AIS, label: 'VTS AIS' },
  { code: SIGNAL_SOURCE_CODE_D_MF_HF, label: 'D MF/HF' },
  { code: SIGNAL_SOURCE_CODE_RADAR, label: 'RADAR' },
];

// =====================
// 항적/리플레이 조회기간 설정
// (향후 로그인 세션별 계정 권한에 따라 커스텀 가능)
// =====================
export const TRACK_QUERY_MAX_DAYS = 7;        // 최대 조회기간 (일)
export const TRACK_QUERY_DEFAULT_DAYS = 3;    // 기본 조회기간 (일)
