/**
 * @description
 * 자산 관리 탭의 도메인 인터페이스 모음. 기관(Organization), 장비·연락처,
 * 자산 업로드 이력, 선박보험(유류오염보장계약) 데이터의 API 응답·정규화
 * 모델을 정의한다.
 *
 * @author dnlee (dnlee@gcsc.co.kr)
 */

/** 기관 관리 — 기관 목록 API 응답 아이템 */
export interface OrgListItem {
  orgSn: number;
  orgTp: string;
  jrsdNm: string;
  areaNm: string;
  orgNm: string;
  addr: string;
  tel: string;
  lat: number;
  lng: number;
  pinSize: 'hq' | 'lg' | 'md';
  vesselCnt: number;
  skimmerCnt: number;
  pumpCnt: number;
  vehicleCnt: number;
  sprayerCnt: number;
  totalAssets: number;
}

/** 기관 관리 — 장비 항목 (카테고리/아이콘/수량) */
export interface EquipItem {
  category: string;
  icon: string;
  count: number;
}

/** 기관 관리 — 담당자 연락처 */
export interface ContactItem {
  role: string;
  name: string;
  phone: string;
}

/** 기관 관리 — 기관 상세 API 응답 (목록 아이템 + 장비·연락처) */
export interface OrgDetail extends OrgListItem {
  equipment: EquipItem[];
  contacts: ContactItem[];
}

/** 기관 관리 — 프런트 호환 AssetOrg 변환 모델 (camelCase 정규화) */
export interface AssetOrgCompat {
  id: number;
  type: string;
  jurisdiction: string;
  area: string;
  name: string;
  address: string;
  phone: string;
  lat: number;
  lng: number;
  pinSize: 'hq' | 'lg' | 'md';
  vessel: number;
  skimmer: number;
  pump: number;
  vehicle: number;
  sprayer: number;
  totalAssets: number;
  equipment: EquipItem[];
  contacts: ContactItem[];
}

/** 자산 업로드 — 업로드 이력 API 응답 */
export interface UploadLogItem {
  logSn: number;
  fileNm: string;
  uploaderNm: string;
  uploadCnt: number;
  regDtm: string;
}

/** 선박보험 — 유류오염보장계약 선박 정보 API 응답 */
export interface ShipInsuranceItem {
  insSn: number;
  shipNo: string;
  shipNm: string;
  callSign: string;
  imoNo: string;
  shipTp: string;
  shipTpDetail: string;
  ownerNm: string;
  grossTon: string;
  insurerNm: string;
  liabilityYn: string;
  oilPollutionYn: string;
  fuelOilYn: string;
  wreckRemovalYn: string;
  validStart: string;
  validEnd: string;
  issueOrg: string;
}

/** 선박보험 — 선박보험 조회 응답 래퍼 (행/총건수) */
export interface InsuranceResponse {
  rows: ShipInsuranceItem[];
  total: number;
}
