"""Pontuação e elegibilidade da avaliação de qualidade por artigo."""


def iter_quality_assessments(article):
    """Queryset iterável (Django 5.2+ não itera RelatedManager diretamente)."""
    return article.quality_assessments.select_related("answer").all()


def compute_article_quality_score(article) -> float:
    return sum(
        a.answer.weight
        for a in iter_quality_assessments(article)
        if a.answer_id is not None and a.answer is not None
    )


def article_passes_cutoff(article, review) -> bool:
    if not review.quality_assessment_cutoff_score or review.quality_assessment_cutoff_score <= 0:
        return True
    return compute_article_quality_score(article) >= review.quality_assessment_cutoff_score


def article_quality_complete(article, review) -> bool:
    if not review.quality_questions.exists():
        return True
    return article.quality_assessments.count() >= review.quality_questions.count()
