Ctrl K
ComunidadGuías…

app/tests/test_detection_evaluation.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
from __future__ import annotations

import json
from pathlib import Path

from app.privacy.detection import DetectorEnsemble
from app.privacy.models import DetectorProfile
from evaluation.evaluate_detection import evaluate, load_corpus

CORPUS_ROOT = Path(__file__).parents[2] / "evaluation" / "corpus"


def test_versioned_corpus_emits_reproducible_per_entity_metrics() -> None:
    cases = load_corpus(CORPUS_ROOT)

    assert {case.category for case in cases} == {"en", "evasions", "negatives", "ru"}
    assert len(cases) >= 24

    report = evaluate(DetectorEnsemble(profile=DetectorProfile.STRICT), cases)
    serialized = json.loads(report.to_json())

    assert report.case_count == len(cases)
    assert serialized["profile"] == "strict"
    for entity_type in {"EMAIL", "INN", "SNILS", "PASSPORT", "IBAN", "JWT"}:
        metric = report.per_entity[entity_type]
        assert metric.recall == 1.0
        assert metric.precision >= 0.8