Update modules/studentact/current_situation_interface.py
Browse files
modules/studentact/current_situation_interface.py
CHANGED
@@ -72,21 +72,91 @@ def display_current_situation_interface(lang_code, nlp_models, t):
|
|
72 |
st.error(t.get('analysis_error', "Error al procesar el análisis"))
|
73 |
|
74 |
def show_recommendations(feedback, t):
|
75 |
-
|
|
|
|
|
76 |
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
st.error(t.get('analysis_error', "Error al procesar el análisis"))
|
73 |
|
74 |
def show_recommendations(feedback, t):
|
75 |
+
"""
|
76 |
+
Muestra las recomendaciones y ejercicios personalizados para el estudiante,
|
77 |
+
permitiendo el seguimiento de su progreso.
|
78 |
|
79 |
+
Args:
|
80 |
+
feedback: Diccionario con retroalimentación y ejercicios recomendados
|
81 |
+
t: Diccionario de traducciones
|
82 |
+
"""
|
83 |
+
try:
|
84 |
+
st.markdown("### " + t.get('recommendations_title', "Recomendaciones para mejorar"))
|
85 |
+
|
86 |
+
# Obtener el historial de ejercicios del estudiante
|
87 |
+
from ..database.current_situation_mongo_db import get_student_exercises_history
|
88 |
+
exercises_history = get_student_exercises_history(st.session_state.username)
|
89 |
+
|
90 |
+
# Organizar las recomendaciones por área
|
91 |
+
for area, exercises in feedback['recommendations'].items():
|
92 |
+
with st.expander(f"💡 {area}"):
|
93 |
+
# Descripción del área de mejora
|
94 |
+
st.markdown(exercises['description'])
|
95 |
+
|
96 |
+
# Separar ejercicios en completados y pendientes
|
97 |
+
completed = exercises_history.get(area, [])
|
98 |
+
|
99 |
+
# Mostrar estado actual
|
100 |
+
progress_col1, progress_col2 = st.columns([3,1])
|
101 |
+
with progress_col1:
|
102 |
+
st.markdown("**Ejercicio sugerido:**")
|
103 |
+
st.markdown(exercises['activity'])
|
104 |
+
|
105 |
+
with progress_col2:
|
106 |
+
# Verificar si el ejercicio ya está completado
|
107 |
+
exercise_key = f"{area}_{exercises['activity']}"
|
108 |
+
is_completed = exercise_key in completed
|
109 |
+
|
110 |
+
if is_completed:
|
111 |
+
st.success("✅ Completado")
|
112 |
+
else:
|
113 |
+
# Botón para marcar ejercicio como completado
|
114 |
+
if st.button(
|
115 |
+
t.get('mark_complete', "Marcar como completado"),
|
116 |
+
key=generate_unique_key("exercise", area),
|
117 |
+
type="primary"
|
118 |
+
):
|
119 |
+
from ..database.current_situation_mongo_db import update_exercise_status
|
120 |
+
|
121 |
+
# Actualizar estado del ejercicio
|
122 |
+
success = update_exercise_status(
|
123 |
+
username=st.session_state.username,
|
124 |
+
area=area,
|
125 |
+
exercise=exercises['activity'],
|
126 |
+
completed=True
|
127 |
+
)
|
128 |
+
|
129 |
+
if success:
|
130 |
+
st.success(t.get(
|
131 |
+
'exercise_completed',
|
132 |
+
"¡Ejercicio marcado como completado!"
|
133 |
+
))
|
134 |
+
# Recargar la página para actualizar el estado
|
135 |
+
st.rerun()
|
136 |
+
else:
|
137 |
+
st.error(t.get(
|
138 |
+
'exercise_error',
|
139 |
+
"Error al actualizar el estado del ejercicio"
|
140 |
+
))
|
141 |
+
|
142 |
+
# Mostrar recursos adicionales si existen
|
143 |
+
if 'resources' in exercises:
|
144 |
+
st.markdown("**Recursos adicionales:**")
|
145 |
+
for resource in exercises['resources']:
|
146 |
+
st.markdown(f"- {resource}")
|
147 |
+
|
148 |
+
# Mostrar fecha de finalización si está completado
|
149 |
+
if is_completed:
|
150 |
+
completion_date = exercises_history[exercise_key].get('completion_date')
|
151 |
+
if completion_date:
|
152 |
+
st.caption(
|
153 |
+
t.get('completed_on', "Completado el") +
|
154 |
+
f": {completion_date.strftime('%d/%m/%Y %H:%M')}"
|
155 |
+
)
|
156 |
+
|
157 |
+
except Exception as e:
|
158 |
+
logger.error(f"Error mostrando recomendaciones: {str(e)}")
|
159 |
+
st.error(t.get(
|
160 |
+
'recommendations_error',
|
161 |
+
"Error al mostrar las recomendaciones"
|
162 |
+
))
|