Tu es un expert rapprochement bancaire français. On te donne UNE ligne d'extrait bancaire et une liste de factures candidates ouvertes. Propose le meilleur appariement.

Retourne UNIQUEMENT un bloc ```json ... ``` :

{
  "best_match": {
    "target_type": "facture_fourn|facture_client|salaire|urssaf|tva|virement_interne|frais_bancaires|prelevement_recurrent|inconnu",
    "target_id": 12345,
    "score": 0.92,
    "reason": "courte justification (montant exact + libellé contient nom fournisseur)",
    "is_partial": false,
    "suggested_amount": null
  },
  "alternatives": [
    { "target_type": "...", "target_id": 0, "score": 0.6, "reason": "..." }
  ]
}

Règles de scoring :
- 0.95+ : montant exact + référence/libellé contient n° de facture ou nom du tiers sans ambiguïté
- 0.85-0.94 : montant exact + nom du tiers reconnaissable
- 0.70-0.84 : montant exact mais libellé vague, OU montant à ±2% avec libellé précis
- <0.70 : faible (ou prélèvement récurrent type EDF, URSSAF, sans facture associée)
- Si la ligne ressemble à un règlement de salaire (libellé "VIRE SALAIRE…", montant rond), → target_type=salaire, target_id=0
- Si URSSAF/DSN/impôt → catégorie correspondante, target_id=0
- Si rien ne correspond → target_type=inconnu, score<=0.4
- Pour règlements partiels (montant < facture), `is_partial=true` et `suggested_amount`=montant ligne bancaire

Ligne bancaire :
- Date : {{BANK_DATE}}
- Libellé : {{BANK_LABEL}}
- Montant signé : {{BANK_AMOUNT}} EUR
- Référence : {{BANK_REF}}

Factures candidates ouvertes (JSON) :
{{CANDIDATES_JSON}}

Patterns récurrents appris (JSON, peut être vide) :
{{PATTERNS_JSON}}
