Corregir notificaicon check

This commit is contained in:
2025-11-25 08:43:54 -03:00
parent 093256382c
commit ad59152cce
5 changed files with 124 additions and 4 deletions

View File

@@ -18,6 +18,70 @@ from app import models, schemas
import shutil
from datetime import datetime, timedelta
import sys
import requests
# Función para enviar notificaciones al webhook
def send_answer_notification(answer, question, mechanic, db):
"""Envía notificación al webhook cuando se responde una pregunta marcada"""
try:
if not app_config.settings.NOTIFICACION_ENDPOINT:
print("No hay endpoint de notificación configurado")
return
# Obtener datos de la inspección
inspection = db.query(models.Inspection).filter(
models.Inspection.id == answer.inspection_id
).first()
if not inspection:
return
# Preparar datos para enviar
notification_data = {
"tipo": "respuesta_pregunta",
"pregunta": {
"id": question.id,
"texto": question.text,
"seccion": question.section
},
"respuesta": {
"id": answer.id,
"valor": answer.answer_value,
"estado": answer.status,
"comentario": answer.comment,
"puntos": answer.points_earned
},
"inspeccion": {
"id": inspection.id,
"vehiculo_placa": inspection.vehicle_plate,
"vehiculo_marca": inspection.vehicle_brand,
"vehiculo_modelo": inspection.vehicle_model,
"cliente": inspection.client_name,
"or_number": inspection.or_number
},
"mecanico": {
"id": mechanic.id,
"nombre": mechanic.full_name,
"email": mechanic.email
},
"timestamp": datetime.utcnow().isoformat()
}
# Enviar al webhook
response = requests.post(
app_config.settings.NOTIFICACION_ENDPOINT,
json=notification_data,
timeout=5
)
if response.status_code == 200:
print(f"✅ Notificación enviada para pregunta {question.id}")
else:
print(f"⚠️ Error al enviar notificación: {response.status_code}")
except Exception as e:
print(f"❌ Error enviando notificación: {e}")
# No lanzamos excepción para no interrumpir el flujo normal
BACKEND_VERSION = "1.0.25"
app = FastAPI(title="Checklist Inteligente API", version=BACKEND_VERSION)
@@ -941,6 +1005,11 @@ def create_answer(
existing_answer.updated_at = datetime.utcnow()
db.commit()
db.refresh(existing_answer)
# Enviar notificación si la pregunta lo requiere
if question.send_notification:
send_answer_notification(existing_answer, question, current_user, db)
return existing_answer
else:
# Si status es pass/fail y no hay valor, no poner valor por defecto en answer_value
@@ -954,6 +1023,11 @@ def create_answer(
db.add(db_answer)
db.commit()
db.refresh(db_answer)
# Enviar notificación si la pregunta lo requiere
if question.send_notification:
send_answer_notification(db_answer, question, current_user, db)
return db_answer