[DTP-Worker 20260812_113134] vérif · classe « percent==100 ⟺ ok » PROUVÉE FERMÉE sur les 4 conditions du gate financement (cross-module: seul module à champ percent) + durcissement anti-récurrence des 2 conditions à domaine borné (documents≤13/autorisations=4 ≪ seuil 2000) → commentaires purs · rebuild byte-identique · sans fix · sans gate

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-12 11:36:25 +00:00
parent 1992ee63be
commit 3849375b66
2 changed files with 37 additions and 0 deletions
@@ -126,6 +126,15 @@ def _cond_documents(dossier: dict, cfg: GateConfig) -> dict:
if statut in cfg.statuts_recevables:
validated += 1
total = len(required_ids)
# Contrairement à _cond_apport (ratio USD *continu*, cf. fix 093114) et à
# l'agrégat (moyenne de 4, cf. fix 110124), AUCUN plafond « non ok → 99.9 »
# n'est requis ici : le dénominateur est la liste de documents du contrat
# (≤ 13 is_required), un domaine BORNÉ. round1 ne peut remonter à
# [99.95 %, 100 %[ par le bas qu'à partir de total ≥ 2000 (car
# (total-1)/total ≥ 0.9995) — inatteignable pour une liste de documents.
# Donc ok=False ⟹ percent < 100 tient déjà : l'invariant d'affichage
# percent == 100.0 ⟺ ok est préservé sans garde. (même logique que les 3
# sites `:g`-domaine-borné · ne pas ajouter de plafond redondant · #5)
pct = _round1((validated / total * 100.0) if total > 0 else 100.0)
return {
"ok": validated == total,
@@ -144,6 +153,10 @@ def _cond_autorisations(dossier: dict, cfg: GateConfig) -> dict:
if (by_id.get(aid) or {}).get("signature_date"):
signed += 1
total = len(required_ids)
# Domaine BORNÉ (4 autorisations au contrat), a fortiori inférieur au seuil
# total ≥ 2000 requis pour que round1 remonte à [99.95 %, 100 %[ par le bas :
# pas de plafond « non ok → 99.9 » nécessaire ici (cf. note _cond_documents).
# L'invariant percent == 100.0 ⟺ ok tient sans garde. (ne pas ajouter · #5)
pct = _round1((signed / total * 100.0) if total > 0 else 100.0)
return {"ok": signed == total, "total": total, "signed": signed, "percent": pct}