from __future__ import annotations from apps.jobs.models import Feedback from apps.jobs.services.feedback import record_feedback def test_learning_signals_wait_for_min_samples(profile, job, user): first = record_feedback(user=user, job=job, action=Feedback.Action.INTERESTING) second = record_feedback(user=user, job=job, action=Feedback.Action.INTERESTING) first_metadata = first.metadata.get("learning", {}) second_metadata = second.metadata.get("learning", {}) assert first_metadata.get("status") == "queued" assert first_metadata.get("reason_code") == "positive_feedback" assert second_metadata.get("status") == "applied" profile.refresh_from_db() assert profile.weights["content"] == 26.0 def test_learning_skip_for_implicit_hide(profile, job, user): feedback = record_feedback(user=user, job=job, action=Feedback.Action.HIDE) metadata = feedback.metadata.get("learning", {}) assert metadata["status"] == "queued" assert metadata["reason_code"] == "implicit_hide_no_reason" profile.refresh_from_db() assert profile.weights["content"] == 25.0 def test_learning_marks_explicit_title_hide_as_nonlearning(profile, job, user): feedback = record_feedback( user=user, job=job, action=Feedback.Action.HIDE, reason="Titel past niet bij mij" ) metadata = feedback.metadata.get("learning", {}) assert metadata["status"] == "queued" assert metadata["reason_code"] == "non_learning_title"