AIdeaText commited on
Commit
b24755d
verified
1 Parent(s): 4302306

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +173 -0
app.py ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # AIdeaText v3
2
+ # app.py
3
+ import logging
4
+ import streamlit as st
5
+ import sys
6
+ import os
7
+ from dotenv import load_dotenv
8
+ from datetime import datetime
9
+ from PIL import Image
10
+
11
+ # Configuraci贸n b谩sica
12
+ load_dotenv()
13
+ logging.basicConfig(level=logging.INFO)
14
+ logger = logging.getLogger(__name__)
15
+
16
+ # Configuraci贸n b谩sica de la p谩gina
17
+ st.set_page_config(
18
+ page_title="AIdeaText",
19
+ layout="wide",
20
+ initial_sidebar_state="collapsed" # Para dar m谩s espacio al logo
21
+ )
22
+
23
+ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
24
+
25
+ # Importaciones locales
26
+ from translations import get_translations, get_landing_translations
27
+ from session_state import initialize_session_state
28
+ from modules.ui.ui import main as ui_main
29
+ from modules.utils.spacy_utils import load_spacy_models
30
+ from modules.utils.widget_utils import generate_unique_key
31
+
32
+ # Importaciones de interfaces
33
+ from modules.morphosyntax.morphosyntax_interface import (
34
+ display_morphosyntax_interface,
35
+ display_arc_diagram
36
+ #display_morphosyntax_results
37
+ )
38
+
39
+ from modules.semantic.semantic_interface import (
40
+ display_semantic_interface,
41
+ display_semantic_results
42
+ )
43
+
44
+ from modules.discourse.discourse_interface import (
45
+ display_discourse_interface,
46
+ display_discourse_results
47
+ )
48
+
49
+ # Importaciones de base de datos
50
+
51
+ from modules.database.database_init import initialize_database_connections
52
+
53
+ from modules.database.sql_db import (
54
+ get_user,
55
+ get_admin_user,
56
+ get_student_user,
57
+ get_teacher_user,
58
+ create_user,
59
+ create_student_user,
60
+ create_teacher_user,
61
+ create_admin_user,
62
+ update_student_user, # Agregada
63
+ delete_student_user, # Agregada
64
+ record_login,
65
+ record_logout,
66
+ get_recent_sessions,
67
+ get_user_total_time,
68
+ store_application_request,
69
+ store_student_feedback
70
+ )
71
+
72
+ from modules.database.mongo_db import (
73
+ get_collection,
74
+ insert_document,
75
+ find_documents,
76
+ update_document,
77
+ delete_document
78
+ )
79
+
80
+ from modules.database.morphosintax_mongo_db import (
81
+ store_student_morphosyntax_result,
82
+ get_student_morphosyntax_analysis
83
+ )
84
+
85
+ from modules.database.semantic_mongo_db import (
86
+ store_student_semantic_result,
87
+ get_student_semantic_analysis
88
+ )
89
+
90
+ from modules.database.chat_mongo_db import (
91
+ store_chat_history,
92
+ get_chat_history
93
+ )
94
+
95
+ # Importaciones de base de datos
96
+ from modules.studentact.student_activities_v2 import display_student_activities
97
+ from modules.studentact.current_situation_interface import display_current_situation_interface
98
+
99
+ from modules.auth.auth import (
100
+ authenticate_student,
101
+ register_student,
102
+ update_student_info,
103
+ delete_student
104
+ )
105
+ from modules.admin.admin_ui import admin_page
106
+
107
+ logging.basicConfig(level=logging.INFO)
108
+ logger = logging.getLogger(__name__)
109
+
110
+ @st.cache_resource(show_spinner=False)
111
+ def initialize_nlp_models():
112
+ logger.info("Cargando modelos de spaCy")
113
+ models = load_spacy_models()
114
+ logger.info("Modelos de spaCy cargados exitosamente")
115
+ return models
116
+
117
+ def app_main():
118
+ try:
119
+ logger.info("Entrando en app_main()")
120
+
121
+ # Inicializar el estado de la sesi贸n
122
+ if 'initialized' not in st.session_state:
123
+ initialize_session_state()
124
+ st.session_state.initialized = True
125
+
126
+ # Inicializar conexiones a bases de datos si no se ha hecho
127
+ if 'db_initialized' not in st.session_state:
128
+ st.session_state.db_initialized = initialize_database_connections()
129
+
130
+ # Cargar modelos NLP si no se ha hecho
131
+ if 'nlp_models' not in st.session_state:
132
+ logger.info("Inicializando modelos NLP en la sesi贸n")
133
+ st.session_state.nlp_models = initialize_nlp_models()
134
+ logger.info("Modelos NLP inicializados y almacenados en la sesi贸n")
135
+
136
+ # Inicializar estados de an谩lisis si no existen
137
+ if 'morphosyntax_state' not in st.session_state:
138
+ st.session_state.morphosyntax_state = {
139
+ 'last_analysis': None,
140
+ 'analysis_count': 0
141
+ }
142
+
143
+ if 'semantic_state' not in st.session_state:
144
+ st.session_state.semantic_state = {
145
+ 'last_analysis': None,
146
+ 'analysis_count': 0
147
+ }
148
+
149
+ # Configurar la p谩gina inicial si no est谩 configurada
150
+ if 'page' not in st.session_state:
151
+ st.session_state.page = 'login'
152
+
153
+ # Prevenir reinicios innecesarios preservando el estado
154
+ if 'selected_tab' not in st.session_state:
155
+ st.session_state.selected_tab = 0
156
+
157
+ logger.info(f"P谩gina actual: {st.session_state.page}")
158
+ logger.info(f"Rol del usuario: {st.session_state.role}")
159
+
160
+ # Dirigir el flujo a la interfaz de usuario principal
161
+ logger.info(f"Llamando a ui_main() desde app_main()")
162
+ ui_main()
163
+
164
+ except Exception as e:
165
+ logger.error(f"Error en app_main: {str(e)}", exc_info=True)
166
+ st.error("Se ha producido un error en la aplicaci贸n. Por favor, int茅ntelo de nuevo m谩s tarde.")
167
+ if st.button("Reiniciar aplicaci贸n",
168
+ key=generate_unique_key("app", "reset_button")):
169
+ st.session_state.clear()
170
+ st.rerun()
171
+
172
+ if __name__ == "__main__":
173
+ app_main()