File size: 7,166 Bytes
52163c9 3b70165 8b38f52 52163c9 885db09 8ce1b9a 885db09 8ce1b9a 885db09 8ce1b9a 885db09 8ce1b9a 3b70165 8687490 3b70165 ff864f2 6bfe703 8e75705 f2cc93d 3b70165 8ce1b9a 7dfad7a 9028e7c 8b38f52 52163c9 8b38f52 749c2a2 8b38f52 ff864f2 52163c9 ff864f2 52163c9 ff864f2 a92e517 5163200 a92e517 b9d76a4 136e604 b9d76a4 136e604 a92e517 136e604 a92e517 6f090cd 8b38f52 813a290 7240873 8b993d6 aca79ca 8b993d6 aca79ca 8b993d6 aca79ca 8b993d6 7240873 61f3494 7240873 b51ae1d 9173494 aa91d57 1e863b9 7240873 1e863b9 7240873 88aea46 a0fa3dd 7240873 a0fa3dd 1e863b9 7240873 a0fa3dd c4c5749 a0fa3dd 7240873 1e863b9 36b3b6b a0fa3dd 8b38f52 ff864f2 9173494 ff864f2 7240873 ff864f2 8b38f52 7240873 8b38f52 7240873 8b38f52 7240873 8b38f52 7240873 f89a64b 7240873 f2cc93d 7240873 8b38f52 6f090cd 813a290 52163c9 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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
print("Iniciando app.py")
# app.py
import streamlit as st
print("Importaciones completadas")
from modules.database.database import (
initialize_database_connections,
initialize_cosmos_sql_connection,
initialize_mongodb_connection,
create_user,
create_admin_user,
create_student_user
)
from modules.auth.auth import authenticate_user, register_user
from modules.admin.admin_ui import admin_page
from modules.ui.ui import (
login_register_page,
login_form,
display_morphosyntax_analysis_interface,
display_semantic_analysis_interface,
display_discourse_analysis_interface,
display_student_progress,
display_chatbot_interface,
display_feedback_form
)
from modules.utils.spacy_utils import load_spacy_models
import logging
# Configuración del logger
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
print("Configurando página")
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
print("Cargando modelos")
@st.cache_resource
def load_models():
return load_spacy_models()
nlp_models = load_models()
print("Modelos cargados")
###################################################################################################################
def main():
print("Entrando en 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
# Inicialización de las conexiones a la base de datos
if 'db_initialized' not in st.session_state:
st.session_state.db_initialized = initialize_database_connections()
# Mostrar advertencias si las conexiones fallaron
if not st.session_state.db_initialized.get("mongodb", False):
st.warning("La conexión a la base de datos MongoDB no está disponible. Algunas funciones pueden no estar operativas.")
if not st.session_state.db_initialized.get("cosmos_sql", False):
st.warning("La conexión a Cosmos DB SQL API 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'}
translations = {
'es': {
'welcome': "Bienvenido",
'select_language': "Selecciona el idioma del texto que analizarás",
'logout': "Cerrar Sesión",
'tabs': ["Análisis morfosintáctico", "Análisis semántico", "Análisis del discurso", "Chat con Claude.AI", "Mi Progreso", "Formulario de Retroalimentación"]
},
'en': {
'welcome': "Welcome",
'select_language': "Select the language of the text you will analyze",
'logout': "Log Out",
'tabs': ["Morphosyntactic Analysis", "Semantic Analysis", "Discourse Analysis", "Chat with Claude.AI", "My Progress", "Feedback Form"]
},
'fr': {
'welcome': "Bienvenue",
'select_language': "Sélectionnez la langue du texte que vous allez analyser",
'logout': "Déconnexion",
'tabs': ["Analyse morphosyntaxique", "Analyse sémantique", "Analyse du discours", "Chat avec Claude.AI", "Mon Progrès", "Formulaire de Rétroaction"]
}
}
# Inicializar el idioma si no está establecido
if 'current_lang' not in st.session_state:
st.session_state.current_lang = 'es' # Idioma por defecto
if 'morphosyntax_result' not in st.session_state:
st.session_state.morphosyntax_result = None
if 'semantic_result' not in st.session_state:
st.session_state.semantic_result = None
if 'discourse_result' not in st.session_state:
st.session_state.discourse_result = None
# 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;'>{translations[st.session_state.current_lang]['welcome']}, {st.session_state.username}</h3>", unsafe_allow_html=True)
with col3:
st.markdown(f"<p style='font-size: 1.2rem; margin-bottom: 0; padding-top: 15px;'>{translations[st.session_state.current_lang]['select_language']}</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", index=list(languages.values()).index(st.session_state.current_lang))
st.markdown("</div>", unsafe_allow_html=True)
lang_code = languages[selected_lang]
if st.session_state.current_lang != lang_code:
st.session_state.current_lang = lang_code
st.experimental_rerun()
with col5:
st.markdown("<div style='padding-top: 15px;'>", unsafe_allow_html=True)
if st.button(translations[st.session_state.current_lang]['logout'], key="logout_button"):
st.session_state.logged_in = False
st.rerun()
st.markdown("</div>", unsafe_allow_html=True)
# Añadir una línea divisoria
st.markdown("---")
# Usar los nombres de tabs traducidos
tab1, tab2, tab3, tab4, tab5, tab6 = st.tabs(translations[st.session_state.current_lang]['tabs'])
with tab1:
display_morphosyntax_analysis_interface(nlp_models, st.session_state.current_lang)
with tab2:
display_semantic_analysis_interface(nlp_models, st.session_state.current_lang)
with tab3:
display_discourse_analysis_interface(nlp_models, st.session_state.current_lang)
with tab4:
display_chatbot_interface(st.session_state.current_lang)
with tab5:
display_student_progress(st.session_state.username, st.session_state.current_lang)
with tab6:
display_feedback_form(st.session_state.current_lang)
###################################################################################################################
if __name__ == "__main__":
print("Llamando a main()")
main() |