feat(vwb): log supervised competence verdicts

This commit is contained in:
Dom
2026-05-29 18:36:06 +02:00
parent 7ad260d02f
commit aba849324a
18 changed files with 1082 additions and 5 deletions

View File

@@ -0,0 +1,61 @@
"""Lea competence supervision endpoints exposed by the VWB backend."""
from __future__ import annotations
from flask import Blueprint, jsonify, request
from core.competences.verdicts import (
CompetenceVerdictError,
iter_competence_verdicts,
store_competence_verdict,
)
lea_competences_bp = Blueprint(
"lea_competences",
__name__,
url_prefix="/api/v1/lea/competences",
)
@lea_competences_bp.route("/<competence_id>/verdict", methods=["POST"])
def submit_competence_verdict(competence_id: str):
"""Persist one supervised human verdict without touching YAML."""
payload = request.get_json(silent=True) or {}
try:
verdict = store_competence_verdict(competence_id, payload)
except KeyError:
return jsonify({
"success": False,
"error": f"Competence '{competence_id}' introuvable",
}), 404
except CompetenceVerdictError as exc:
return jsonify({
"success": False,
"error": str(exc),
"write_back_enabled": False,
"yaml_write": False,
}), 400
return jsonify({
"success": True,
"competence_id": competence_id,
"verdict": verdict,
"duplicate": verdict["duplicate"],
"write_back_enabled": False,
"yaml_write": False,
}), 200 if verdict["duplicate"] else 201
@lea_competences_bp.route("/<competence_id>/verdicts", methods=["GET"])
def list_competence_verdicts(competence_id: str):
"""Return logged supervised verdicts for one competence."""
return jsonify({
"success": True,
"competence_id": competence_id,
"verdicts": iter_competence_verdicts(competence_id=competence_id),
"write_back_enabled": False,
"yaml_write": False,
})