import { fetchJson, postJson } from './httpClient.ts' export interface HaeguBoundary { haegu_no: number area_name: string | null geom_json: string center_lon: number center_lat: number } /** CompactVesselTrack.java 기준 */ export interface VesselTrackResult { vesselId: string nationalCode: string shipKindCode?: string shipName?: string shipType?: string geometry: number[][] timestamps: string[] // 백엔드가 문자열 배열로 전송 speeds: number[] totalDistance?: number avgSpeed?: number maxSpeed?: number pointCount?: number } /** RecentVesselPositionDto.java 기준 */ export interface RecentPosition { mmsi: string imo?: number lon: number lat: number sog: number cog: number shipNm?: string shipTy?: string shipKindCode?: string nationalCode?: string lastUpdate: string shipImagePath?: string | null shipImageCount?: number | null } export const gisApi = { getHaeguBoundaries(): Promise { return fetchJson('/api/v1/haegu/boundaries') }, getHaeguTracks(haeguNo: number, hours = 24): Promise { return fetchJson(`/api/v2/tracks/haegu/${haeguNo}?hours=${hours}`) }, getVesselTracks(mmsiList: string[], startTime: string, endTime: string): Promise { return postJson('/api/v2/tracks/vessels', { vessels: mmsiList, startTime, endTime }) }, getRecentPositions(minutes = 10): Promise { return fetchJson(`/api/v1/vessels/recent-positions?minutes=${minutes}`) }, }