
class Grader:
    def grade_question(self, question_data, student_answer):
        question_type = question_data.get("type")
        correct_answer = question_data.get("correct_answer")

        if question_type == "multiple_choice" or question_type == "true_false":
            is_correct = (str(student_answer).strip().lower() == str(correct_answer).strip().lower())
            feedback = "Correcto." if is_correct else f"Incorrecto. La respuesta correcta era: {correct_answer}."
            return {"is_correct": is_correct, "feedback": feedback}
        else:
            # For open-ended questions, a more sophisticated AI-based grading would be needed
            # For this basic prototype, we'll just indicate it's not supported yet.
            return {"is_correct": False, "feedback": "Tipo de pregunta no soportado para calificación automática en este prototipo."}

if __name__ == '__main__':
    grader = Grader()

    # Test Multiple Choice
    mc_question = {
        "question": "¿Cuál es la capital de Francia?",
        "type": "multiple_choice",
        "difficulty": "easy",
        "options": ["Berlín", "Madrid", "París", "Roma"],
        "correct_answer": "París"
    }

    print("\n--- Calificando pregunta de opción múltiple ---")
    student_answer_mc_correct = "París"
    result_mc_correct = grader.grade_question(mc_question, student_answer_mc_correct)
    print(f"Respuesta del estudiante: {student_answer_mc_correct}")
    print(f"Resultado: {result_mc_correct}")

    student_answer_mc_incorrect = "Berlín"
    result_mc_incorrect = grader.grade_question(mc_question, student_answer_mc_incorrect)
    print(f"Respuesta del estudiante: {student_answer_mc_incorrect}")
    print(f"Resultado: {result_mc_incorrect}")

    # Test True/False
    tf_question = {
        "question": "El agua hierve a 100 grados Celsius a nivel del mar.",
        "type": "true_false",
        "difficulty": "easy",
        "correct_answer": "Verdadero"
    }

    print("\n--- Calificando pregunta de verdadero/falso ---")
    student_answer_tf_correct = "Verdadero"
    result_tf_correct = grader.grade_question(tf_question, student_answer_tf_correct)
    print(f"Respuesta del estudiante: {student_answer_tf_correct}")
    print(f"Resultado: {result_tf_correct}")

    student_answer_tf_incorrect = "Falso"
    result_tf_incorrect = grader.grade_question(tf_question, student_answer_tf_incorrect)
    print(f"Respuesta del estudiante: {student_answer_tf_incorrect}")
    print(f"Resultado: {result_tf_incorrect}")

    # Test unsupported type
    open_question = {
        "question": "Explica el proceso de fotosíntesis.",
        "type": "open_ended",
        "difficulty": "medium",
        "correct_answer": "[Explicación detallada]"
    }
    print("\n--- Calificando pregunta abierta (no soportada en prototipo) ---")
    student_answer_open = "Las plantas usan la luz del sol para crecer."
    result_open = grader.grade_question(open_question, student_answer_open)
    print(f"Respuesta del estudiante: {student_answer_open}")
    print(f"Resultado: {result_open}")


