AIdeaText commited on
Commit
2782f11
·
verified ·
1 Parent(s): c863b04

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
- st.markdown("### " + t.get('recommendations_title', "Recomendaciones para mejorar"))
 
 
76
 
77
- for area, exercises in feedback['recommendations'].items():
78
- with st.expander(f"💡 {area}"):
79
- st.markdown(exercises['description'])
80
- st.markdown("**Ejercicio sugerido:**")
81
- st.markdown(exercises['activity'])
82
-
83
- # Botón para marcar ejercicio como completado
84
- if st.button(
85
- t.get('mark_complete', "Marcar como completado"),
86
- key=generate_unique_key("exercise", area)
87
- ):
88
- update_exercise_status(
89
- st.session_state.username,
90
- area,
91
- exercises['activity']
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
+ ))