Corregir Duplicados en respuestas 1.0.24 Backend

This commit is contained in:
2025-11-24 21:41:29 -03:00
parent 855016c63d
commit cfef4f6f89

View File

@@ -880,8 +880,34 @@ def create_answer(
elif answer.status == "warning": elif answer.status == "warning":
points_earned = int(question.points * 0.5) points_earned = int(question.points * 0.5)
# Buscar si ya existe una respuesta para esta inspección y pregunta
existing_answer = db.query(models.Answer).filter(
models.Answer.inspection_id == answer.inspection_id,
models.Answer.question_id == answer.question_id
).first()
if existing_answer:
# Actualizar la respuesta existente
# Si status es pass/fail, no poner valor por defecto en answer_value
if answer.status in ["pass", "fail"] and not answer.answer_value:
existing_answer.answer_value = None
else:
existing_answer.answer_value = answer.answer_value
existing_answer.status = answer.status
existing_answer.comment = getattr(answer, "comment", None)
existing_answer.ai_analysis = getattr(answer, "ai_analysis", None)
existing_answer.is_flagged = getattr(answer, "is_flagged", False)
existing_answer.points_earned = points_earned
existing_answer.updated_at = datetime.utcnow()
db.commit()
db.refresh(existing_answer)
return existing_answer
else:
# Si status es pass/fail y no hay valor, no poner valor por defecto en answer_value
answer_data = answer.dict()
if answer.status in ["pass", "fail"] and not answer.answer_value:
answer_data["answer_value"] = None
db_answer = models.Answer( db_answer = models.Answer(
**answer.dict(), **answer_data,
points_earned=points_earned points_earned=points_earned
) )
db.add(db_answer) db.add(db_answer)