File size: 4,399 Bytes
bb7297c 074129a e1c9403 074129a bb7297c d47f7a0 bb7297c c58df45 |
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 |
#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}")
# Configuraci贸n de la p谩gina de Streamlit
# st.set_page_config(page_title="AIdeaText", layout="wide", page_icon="random")
# Agregar el directorio actual al path de Python
current_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(current_dir)
# Configurar logging
setup_logging()
# Cargar variables de entorno
load_dotenv()
#########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() |