from services.supabase_service import get_supabase
from datetime import datetime

# 🔧 인사이동 여부 기록
def record_if_changed(person: dict):
    """
    인물 정보(person)가 변경되었는지 확인하고 변경된 경우 인사이동 기록 테이블에 저장
    person 예시: {"name": "홍길동", "department": "산업정책실", "position": "국장", "article_id": "4475254"}
    """
    sb = get_supabase()

    try:
        name = person["name"]
        department = person["department"]
        position = person["position"]
        article_id = person["article_id"]

        # 1. 최근 소속 정보 확인
        result = sb.table("personnel_latest") \
            .select("*") \
            .eq("name", name) \
            .order("updated_at", desc=True) \
            .limit(1) \
            .execute()

        if result.data:
            last = result.data[0]
            if last["department"] == department and last["position"] == position:
                print(f"[✅] {name} 인사이동 없음 (동일 부서/직위)")
                return

        # 2. 이동 기록 저장
        print(f"[📌] {name} 인사이동 기록됨: {department} ({position})")

        # 이동 기록 테이블에 추가
        sb.table("personnel_history").insert({
            "name": name,
            "department": department,
            "position": position,
            "article_id": article_id,
            "moved_at": datetime.utcnow().isoformat()
        }).execute()

        # 최신 테이블 업데이트 (upsert)
        sb.table("personnel_latest").upsert({
            "name": name,
            "department": department,
            "position": position,
            "updated_at": datetime.utcnow().isoformat()
        }, on_conflict=["name"]).execute()

    except Exception as e:
        print(f"[❌] 인사이동 기록 실패: {e}")
