#app.py de v3 #app.py import logging import streamlit as st import sys import os from dotenv import load_dotenv from datetime import datetime def setup_logging(): log_dir = 'logs' if not os.path.exists(log_dir): os.makedirs(log_dir) current_time = datetime.now().strftime("%Y%m%d_%H%M%S") log_filename = f'{log_dir}/app_log_{current_time}.txt' logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', filename=log_filename, filemode='w' ) console = logging.StreamHandler() console.setLevel(logging.INFO) formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') console.setFormatter(formatter) logging.getLogger('').addHandler(console) logging.info(f"Logging iniciado. Archivo de log: {log_filename}") setup_logging() load_dotenv() st.set_page_config(page_title="AIdeaText", layout="wide", page_icon="random") sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #########IMPORTACIONES LOCALES####################################### from translations import get_translations from session_state import initialize_session_state from modules.ui.ui import main as ui_main from modules.utils.spacy_utils import load_spacy_models from modules.morphosyntax.morphosyntax_interface import ( display_morphosyntax_interface ) ###Importaciones de la base de datos### from modules.database.database_init import ( initialize_database_connections ) from modules.database.sql_db import ( create_student_user, get_student_user, update_student_user, delete_student_user, store_application_request, store_student_feedback ) from modules.database.mongo_db import ( get_collection, insert_document, find_documents, update_document, delete_document ) from modules.database.morphosintax_mongo_db import ( store_student_morphosyntax_result, get_student_morphosyntax_analysis ) from modules.database.chat_db import ( store_chat_history, get_chat_history ) from modules.studentact.student_activities_v2 import ( display_student_progress ) from modules.auth.auth import ( authenticate_student, register_student, update_student_info, delete_student ) from modules.admin.admin_ui import admin_page from modules.chatbot.chatbot import ( initialize_chatbot, process_chat_input ) print("Configurando página") st.cache_data.clear() st.cache_resource.clear() logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) @st.cache_resource def initialize_nlp_models(): logger.info("Cargando modelos de spaCy") models = load_spacy_models() logger.info("Modelos de spaCy cargados exitosamente") return models def app_main(): try: logger.info("Entrando en app_main()") # Inicializar el estado de la sesión initialize_session_state() # Inicializar conexiones a bases de datos si no se ha hecho if 'db_initialized' not in st.session_state: st.session_state.db_initialized = initialize_database_connections() # Cargar modelos NLP si no se ha hecho if 'nlp_models' not in st.session_state: logger.info("Inicializando modelos NLP en la sesión") st.session_state.nlp_models = initialize_nlp_models() logger.info("Modelos NLP inicializados y almacenados en la sesión") # Configurar la página inicial si no está configurada if 'page' not in st.session_state: st.session_state.page = 'login' logger.info(f"Página actual: {st.session_state.page}") logger.info(f"Rol del usuario: {st.session_state.role}") # Dirigir el flujo a la interfaz de usuario principal logger.info(f"Llamando a ui_main() desde app_main()") ui_main() except Exception as e: logger.error(f"Error en app_main: {str(e)}", exc_info=True) st.error("Se ha producido un error en la aplicación. Por favor, inténtelo de nuevo más tarde.") if st.button("Reiniciar aplicación"): st.rerun() if __name__ == "__main__": print("Llamando a app_main()") app_main()