File size: 4,879 Bytes
3b70165 8b38f52 885db09 2f050b1 885db09 9b95a67 885db09 3b70165 e1235cc 3b70165 ff864f2 6bfe703 8e75705 f89a64b 3b70165 8b38f52 7dfad7a 9028e7c 8b38f52 749c2a2 8b38f52 ff864f2 a92e517 b9d76a4 136e604 b9d76a4 136e604 a92e517 136e604 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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# app.py
import streamlit as st
from modules.database import (
initialize_database_connections,
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
# 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'}
# 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() |