import streamlit as st
import gc

def navigation_guard(current_page: str):
    """
    Detecta cambio de sección y limpia caches/estado pesado.
    Ejecutar UNA vez por rerun, antes de renderizar la página.
    """
    if "last_page" not in st.session_state:
        st.session_state.last_page = current_page
        return

    if st.session_state.last_page != current_page:
        # 🔥 cambio real de sección
        try:
            st.cache_data.clear()
        except Exception:
            pass

        # Limpia solo keys pesadas conocidas (no todo)
        for k in list(st.session_state.keys()):
            if (
                k.startswith("df_")
                or k.startswith("fig_")
                or k.startswith("rec_")
                or k.endswith("_cache")
            ):
                st.session_state.pop(k, None)

        gc.collect()

        st.session_state.last_page = current_page
