# -*- coding: utf-8 -*-
"""
실행 파일 — 여기서 '무엇을 받을지' 조건만 바꿔서 실행하세요.
    python main.py
"""

import sys
from pathlib import Path

# Windows 콘솔 한글 출력 깨짐 방지
try:
    sys.stdout.reconfigure(encoding="utf-8")
except Exception:
    pass

import realestate as re

OUT_DIR = Path(__file__).with_name("결과")

# ===========================================================================
# 1) 조회 조건 설정  ← 이 부분만 바꾸면 됩니다
# ===========================================================================

# 받을 실거래가 종류 (공시가격 비교 대상 = 매매)
SERVICES = [
    "아파트_매매",
    "연립다세대_매매",
]

# 시군구 법정동코드(앞 5자리). 예시는 서울 강남구 / 서초구 / 송파구.
#   전체 코드표: https://www.code.go.kr  또는 realestate 문서 참고
LAWD_CDS = [
    "11680",  # 서울 강남구
    "11650",  # 서울 서초구
    "11710",  # 서울 송파구
]

# 계약월 범위 'YYYYMM'
DEAL_YMDS = re.month_range("201901", "202412")   # 2019~2024년 (시계열)

# ---- 개별공시지가(토지) 경로: 이번 분석에선 미사용 (공동주택가격은 gongsi.py에서 처리) ----
ADDRESSES = []
PNUS = []
LANDPRICE_YEAR = 2024


# ===========================================================================
# 2) 실행
# ===========================================================================

def main() -> None:
    print("■ 실거래가 수집 시작")
    print(f"  종류 {len(SERVICES)}개 x 지역 {len(LAWD_CDS)}개 x 월 {len(DEAL_YMDS)}개")
    trades = re.fetch_trades(SERVICES, LAWD_CDS, DEAL_YMDS)

    if not trades.empty:
        re.save(trades, OUT_DIR / "실거래가_전체.xlsx")
        # 종류별로도 나눠 저장
        for name, g in trades.groupby("자료구분"):
            re.save(g, OUT_DIR / f"실거래가_{name}.csv")
    else:
        print("  실거래가 데이터가 없습니다.")

    # 주소 -> PNU 변환 (VWorld 키가 있을 때만)
    pnu_list = list(PNUS)
    if ADDRESSES:
        if re.has_vworld_key():
            print("\n■ 주소 → PNU 변환")
            pnu_df = re.addresses_to_pnu(ADDRESSES)
            re.save(pnu_df, OUT_DIR / "주소_PNU_매핑.csv")
            pnu_list += [p for p in pnu_df["pnu"].tolist() if p]
        else:
            print("\n■ 주소 → PNU 변환: VWORLD_KEY 가 없어 건너뜀 "
                  "(공시지가는 VWorld 키를 넣거나 PNUS 에 직접 PNU 를 넣으면 됩니다)")

    if pnu_list:
        print("\n■ 개별공시지가 수집 시작")
        land = re.fetch_land_prices(pnu_list, LANDPRICE_YEAR)
        re.save(land, OUT_DIR / "개별공시지가.xlsx")
    else:
        print("\n■ 개별공시지가: 주소·PNU 가 모두 비어 건너뜀 (main.py 의 ADDRESSES/PNUS 채우기)")

    print("\n완료.")


if __name__ == "__main__":
    main()
