# modules/database/current_situation_mongo_db.py from datetime import datetime, timezone import logging from .mongo_db import get_collection, insert_document, find_documents logger = logging.getLogger(__name__) COLLECTION_NAME = 'student_current_situation' # En modules/database/current_situation_mongo_db.py def store_current_situation_result(username, text, metrics, feedback): success = store_current_situation_result(username, text, metrics, feedback) if success: verify_storage(username) #Verificar que se guarda correctamente return success """ Guarda los resultados del análisis de situación actual. """ try: # Verificar parámetros if not all([username, text, metrics]): logger.error("Faltan parámetros requeridos") return False collection = get_collection('student_current_situation') if collection is None: logger.error("No se pudo obtener la colección") return False # Formatear métricas para MongoDB formatted_metrics = { 'vocabulary': { 'score': metrics['vocabulary']['normalized_score'], 'details': metrics['vocabulary']['details'] }, 'structure': { 'score': metrics['structure']['normalized_score'], 'details': metrics['structure']['details'] }, 'cohesion': { 'score': metrics['cohesion']['normalized_score'], 'details': metrics['cohesion']['details'] }, 'clarity': { 'score': metrics['clarity']['normalized_score'], 'details': metrics['clarity']['details'] } } # Crear documento document = { 'username': username, 'timestamp': datetime.now(timezone.utc).isoformat(), 'text': text, 'metrics': metrics, 'feedback': feedback, 'analysis_type': 'current_situation' } # Insertar documento result = collection.insert_one(document) if result.inserted_id: logger.info(f""" Análisis guardado exitosamente: - Usuario: {username} - ID: {result.inserted_id} - Longitud del texto: {len(text)} - Métricas: {formatted_metrics} """) return True logger.error("No se pudo insertar el documento") return False except Exception as e: logger.error(f"Error guardando análisis de situación actual: {str(e)}") return False def verify_storage(username): """ Verifica que los datos se están guardando correctamente. """ try: collection = get_collection(COLLECTION_NAME) if collection is None: return False # Buscar documentos recientes del usuario recent_docs = collection.find({ 'username': username, 'timestamp': { '$gte': (datetime.now(timezone.utc) - timedelta(minutes=5)).isoformat() } }).sort('timestamp', -1).limit(1) docs = list(recent_docs) if docs: logger.info(f""" Último documento guardado: - ID: {docs[0]['_id']} - Timestamp: {docs[0]['timestamp']} - Métricas guardadas: {bool(docs[0].get('metrics'))} """) return True logger.warning(f"No se encontraron documentos recientes para {username}") return False except Exception as e: logger.error(f"Error verificando almacenamiento: {str(e)}") return False