package incheon.product.geoview3d.traffic.service;

import java.util.List;
import java.util.Map;

/**
 * CCTV 정보 서비스 인터페이스.
 * ITS CCTV 정보 조회 및 영상 URL 리다이렉트 해석 기능을 제공한다.
 */
public interface CctvService {

    /**
     * bbox 범위 내 CCTV 목록 조회.
     * 캐싱된 데이터가 5분 이상 경과 시 비동기로 갱신한다.
     *
     * @param gid  특정 CCTV GID (null이면 전체)
     * @param minX 최소 경도
     * @param minY 최소 위도
     * @param maxX 최대 경도
     * @param maxY 최대 위도
     * @return CCTV 목록
     */
    List<Map<String, Object>> getCctvList(Long gid, double minX, double minY, double maxX, double maxY);

    /**
     * CCTV 영상 URL의 리다이렉트를 해석하여 최종 URL을 반환한다.
     *
     * @param url 원본 CCTV 영상 URL
     * @return 리다이렉트 해석된 최종 URL
     */
    String getCctvRedirectUrl(String url);

    /**
     * ITS API에서 CCTV 정보를 비동기로 수집하여 DB에 저장한다.
     */
    void updateCctvInfoAsync();
}
