import os
from pathlib import Path
from dotenv import load_dotenv

# .env 로드 (systemd/단독 실행 대비)
BASE_DIR = Path(__file__).resolve().parents[2]
load_dotenv(BASE_DIR / ".env")

from app.crawlers.motie_org import get_last_page, fetch_emp_page, fetch_departments
from app.services.motie_org_service import (
    clear_org, bulk_insert_org, clear_vip, bulk_insert_vip, select_vip_by_department
)
from app.services.notify_service import broadcast_telegram
from app.services.supabase_service import get_active_chat_ids

VIP_POSITIONS = ["감사관","과장","국장","대변인","실장","장관","통상차관보","팀장","1차관","2차관"]

def run():
    ua = os.getenv("USER_AGENT", "govbot/1.0")

    # 1) motie_org 삭제
    clear_org()

    # 2~6) 마지막 페이지 계산 → 1..lastPage 루프 수집 → ORG 삽입
    last_page = get_last_page(ua)
    total_rows = 0
    for p in range(1, last_page + 1):
        rows = fetch_emp_page(ua, p)
        if rows:
            total_rows += bulk_insert_org(rows)

    # 11) motie_vip 전체 삭제
    clear_vip()

    # 12~15) 본부 페이지에서 부서 리스트 수집
    departments = fetch_departments(ua)

    # 16) 각 부서별 VIP 포지션만 골라 motie_vip에 삽입
    vip_total = 0
    for dept in departments:
        cand = select_vip_by_department(dept, VIP_POSITIONS)
        if cand:
            vip_total += bulk_insert_vip(cand)

    # 알림(옵션)
    cids = get_active_chat_ids()
    if cids:
        msg = f"[MOTIE 직원검색] ORG {total_rows}건 갱신, VIP {vip_total}건 선별 완료"
        broadcast_telegram(msg, cids)

if __name__ == "__main__":
    run()
