pythonise-exercice / tests /gen_decl_sample.py
wilenPyxi
Audit pedagogique des declinaisons (qualite au-dela du harnais mecanique)
54b6073
Raw
History Blame Contribute Delete
1.4 kB
"""Génère une déclinaison réelle et sauvegarde la sortie pour inspection.
PYTHONPATH=. .venv/bin/python tests/gen_decl_sample.py [qcm|qat] [exo]
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from app import _load_env, _setup_logging
_setup_logging()
_load_env()
from app.pipeline.orchestrator import run_declinaisons
decl = sys.argv[1] if len(sys.argv) > 1 else "qcm"
SRC = Path(sys.argv[2]) if len(sys.argv) > 2 else \
Path(__file__).resolve().parent.parent / "bench" / "corpus" / "trinome_pythonise.md"
content = SRC.read_text(encoding="utf-8")
(dt, res), = run_declinaisons(content, filename=SRC.name, lang="fr",
types=[decl])
out = Path(f"/tmp/decl_{decl}_sample.md")
out.write_text(res["exercise"], encoding="utf-8")
print(f"harnais : {'VERT' if res['harness']['ok'] else 'ROUGE'}{out}")
ped = res.get("pedagogical")
if ped:
print(f"pédagogique : verdict={ped.get('verdict')} score={ped.get('score')} "
f"issues={len(ped.get('issues') or [])}")
for it in (ped.get("issues") or [])[:5]:
print(f" - [{it.get('gravite')}] {it.get('ou')} : {it.get('probleme')}")
tel = res.get("policy_telemetry")
if tel:
print(f"policy : échelons={len(tel.get('tried') or [])} "
f"gagnant={tel.get('winning_model')} pédago={tel.get('pedago_verdict')}")