File size: 4,396 Bytes
3b70165
8b38f52
4046f13
2f050b1
9b95a67
3b70165
e1235cc
3b70165
 
ff864f2
6bfe703
8e75705
f89a64b
3b70165
8b38f52
7dfad7a
9028e7c
 
 
 
8b38f52
 
749c2a2
 
8b38f52
ff864f2
 
 
 
 
 
 
a92e517
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6f090cd
8b38f52
813a290
3b70165
9173494
 
 
aa91d57
1e863b9
 
 
3b70165
88aea46
a0fa3dd
1e863b9
a0fa3dd
1e863b9
a0fa3dd
c4c5749
a0fa3dd
88aea46
1e863b9
 
a0fa3dd
8b38f52
ff864f2
9173494
ff864f2
f89a64b
ff864f2
8b38f52
ff864f2
8b38f52
ff864f2
8b38f52
4cf9d21
8b38f52
f89a64b
 
813a290
8b38f52
6f090cd
813a290
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# app.py
import streamlit as st
from modules.database import initialize_cosmos_sql_connection, initialize_mongodb_connection, create_user, create_admin_user, create_student_user
from modules.auth import authenticate_user, register_user
from modules.admin_ui import admin_page
from modules.ui import (
    main,
    login_register_page, 
    display_morphosyntax_analysis_interface, 
    display_semantic_analysis_interface,
    display_discourse_analysis_interface, 
    display_student_progress,
    display_chatbot_interface
)
from modules.spacy_utils import load_spacy_models
import logging

# Configuraci贸n del logger
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

st.set_page_config(page_title="AIdeaText", layout="wide", page_icon="random")
st.cache_data.clear()
st.cache_resource.clear()

# Cargar los modelos de spaCy una vez al inicio de la aplicaci贸n
@st.cache_resource
def load_models():
    return load_spacy_models()

nlp_models = load_models()

###################################################################################################################
def main():
    # Inicializaci贸n del estado de la sesi贸n
    if 'initialized' not in st.session_state:
        st.session_state.clear()
        st.session_state.initialized = True
        st.session_state.logged_in = False
        st.session_state.page = 'login'
        st.session_state.username = None
        st.session_state.role = None

    # Verificar la conexi贸n a MongoDB
    if not initialize_mongodb_connection():
        st.warning("La conexi贸n a la base de datos MongoDB no est谩 disponible. Algunas funciones pueden no estar operativas.")

    print(f"P谩gina actual: {st.session_state.page}")
    print(f"Rol del usuario: {st.session_state.role}")

    # L贸gica de navegaci贸n
    if st.session_state.page == 'login':
        login_register_page()
    elif st.session_state.page == 'admin':
        print("Intentando mostrar p谩gina de admin")
        admin_page()
    elif st.session_state.page == 'user':
        logged_in_interface()
    else:
        print(f"P谩gina no reconocida: {st.session_state.page}")

    print(f"Estado final de la sesi贸n: {st.session_state}")

###################################################################################################################
def logged_in_interface():
    languages = {'Espa帽ol': 'es', 'English': 'en', 'Fran莽ais': 'fr'}
    
    # Crear un contenedor para la barra superior
    with st.container():
        # Usar m谩s columnas para un mejor control del espacio
        col1, col2, col3, col4, col5 = st.columns([1, 1, 0.8, 1, 1])
        with col1:
            st.markdown(f"<h3 style='margin-bottom: 0;'>Bienvenido, {st.session_state.username}</h3>", unsafe_allow_html=True)
        with col3:
            st.markdown("<p style='font-size: 1.2rem; margin-bottom: 0; padding-top: 15px;'>Selecciona el idioma del texto que analizar谩s</p>", unsafe_allow_html=True)
        with col4:
            st.markdown("<div style='padding-top: 15px;'>", unsafe_allow_html=True)
            selected_lang = st.selectbox("", list(languages.keys()), key="language_selector", label_visibility="collapsed")
            st.markdown("</div>", unsafe_allow_html=True)
            lang_code = languages[selected_lang]
            
        with col5:
            st.markdown("<div style='padding-top: 15px;'>", unsafe_allow_html=True)
            if st.button("Cerrar Sesi贸n", key="logout_button"):
                st.session_state.logged_in = False
                st.experimental_rerun()
            st.markdown("</div>", unsafe_allow_html=True)

    # A帽adir una l铆nea divisoria
    st.markdown("---")

    tab1, tab2, tab3, tab4, tab5 = st.tabs(["An谩lisis morfosint谩ctico", "An谩lisis sem谩ntico", "An谩lisis del discurso", "Chat con Llama2", "Mi Progreso"])

    with tab1:
        display_morphosyntax_analysis_interface(nlp_models, lang_code)
    with tab2:
        display_semantic_analysis_interface(nlp_models, lang_code)
    with tab3:
        display_discourse_analysis_interface(nlp_models, lang_code)
    with tab4:
        display_chatbot_interface(lang_code)
    with tab5:
        display_student_progress(st.session_state.username, lang_code)

###################################################################################################################
if __name__ == "__main__":
    main()