package incheon.ags.dss.regen.service;

import java.util.List;
import incheon.ags.dss.regen.vo.UrbFcltyAnlsMstVO;
import incheon.ags.dss.regen.vo.UrbFcltyAnlsDtlVO;

public interface UrbFcltyAnlsService {

    /** 시설물 분석 실행 (등록 + 프로시저 호출) */
    int runFacilityAnalysis(UrbFcltyAnlsMstVO vo) throws Exception;

    /** 분석 이력 목록 조회 */
    List<UrbFcltyAnlsMstVO> selectAnalysisList(UrbFcltyAnlsMstVO searchVO) throws Exception;
    int selectAnalysisListCnt(UrbFcltyAnlsMstVO searchVO) throws Exception;

    /** 분석 결과 상세 조회 (지도/목록용) */
    List<UrbFcltyAnlsDtlVO> selectAnalysisResultList(UrbFcltyAnlsDtlVO searchVO) throws Exception;
    
    /** 분석 이력 삭제 */
    void deleteAnalysis(Integer fcltAnlsNo) throws Exception;
    
    // 추가 메서드
    int createTargetClassification(UrbFcltyAnlsMstVO vo) throws Exception;

	int selectAnalysisResultListCnt(UrbFcltyAnlsDtlVO searchVO) throws Exception;

	void deleteResultItem(Integer rsltNo) throws Exception;

    /**
     * 접근도 분석 마스터 목록을 조회한다.
     * @param searchVO - 조회할 정보가 담긴 UrbFcltyAnlsMstVO
     * @return 접근도 분석 마스터 목록
     * @exception Exception
     */
    List<UrbFcltyAnlsMstVO> selectAceiAnlsMstList(UrbFcltyAnlsMstVO searchVO) throws Exception;

    UrbFcltyAnlsMstVO selectUrbFcltyAnlsMstDetail(int fcltAnlsNo);

    List<UrbFcltyAnlsDtlVO> selectTargetFacilities(UrbFcltyAnlsMstVO vo) throws Exception;

	/**
	 * [추가] 분석 완료 시 상태 플래그(RUNNING)를 해제하고 원래 사용자 ID로 복구
	 * AnalysisServiceImpl의 비동기 작업이 끝날 때 호출됨
	 */
	void completeAnalysisStatus(int fcltAnlsNo, String resultCode) throws Exception;
}
