Aller au contenu principal

ADR-0178 : Navin Enterprise Agent Détection de Fraude à l'Assurance, couche produit d'investigation au-dessus du Control Plane

  • Statut : proposé (2026-11-04)
  • Décideurs : lead architecture, UC-03 (agent sous-traitant de la session parallèle UC-01 à UC-05)
  • Références : agent_uses_cases/03_Assurance_Detection_de_Fraude.md, décision du 2026-11-04 « Agents UC-01 à UC-05 développés en parallèle » (.navin/continuity/DECISIONS.md), ADR-0175 (produit RAG), ADR-0176 (Banking Back-Office, motif des modules génériques copiés), audit navin-enterprise-assurance-fraude/docs/NAVIN_INTEGRATION_AUDIT.md, contrat contracts/v1/agent-product-manifest.schema.json, paquet OPA eai.assurance_fraude (deploy/policies/opa/assurance_fraude.rego), contrats contracts/v1/assurance-fraude-copilot-event.schema.json et contracts/v1/assurance-fraude-action-request.schema.json, gabarit Manager navin-assurance-fraude-agent (published: false).

Contexte​

L'assureur veut détecter des incohérences, des déclarations suspectes et des relations entre dossiers, puis préparer des investigations documentées pour des enquêteurs habilités, sans jamais présenter une suspicion comme une fraude établie. Le cahier des charges impose huit modules (signaux, résolution d'entités, doublons documentaires, règles de détection, réseaux de dossiers, triage d'alertes, investigation et chaîne de preuves, suites et retour d'expérience), une machine à états explicite côté serveur, un copilote borné aux faits sourcés et une interdiction absolue : aucune accusation, aucun refus d'indemnisation, aucun blocage financier et aucune dénonciation à partir d'un score.

La plateforme fournit déjà l'identité, OpenFGA, OPA, l'Action Gateway avec maker-checker, les travaux durables, le pipeline documentaire (ClamAV, YARA-X, Docling derrière le Control Plane), le RAG, la mémoire et l'observabilité (ADR-0176). Un produit générique « Fraud & Anomaly » est planifié au board mais n'existe pas dans le dépôt : ce produit n'en dépend pas.

Décision​

1. Un score est un indicateur de priorité de revue, jamais une décision​

Les résultats de détection (fraud_signals, detection_runs) portent un indicateur numérique, une explication par signal (règle, version, données d'entrée, contribution) et un statut de couverture (sufficient, insufficient). Le backend ne connaît aucune transition automatique vers un état défavorable pour un assuré, un prestataire ou un sinistre. Les seules conséquences sont des objets internes (alerte, investigation, hypothèse, brouillon de suite) créés ou transformés par un humain à travers l'Action Gateway. Le mot « fraude confirmée » n'apparaît qu'en investigation_conclusions.outcome = confirmed_by_procedure, accessible uniquement par une conclusion humaine qualifiée, revue par un second humain (maker-checker), avec sa portée exacte.

2. Modules génériques copiés, modules métier écrits​

Le backend navin_fraude reprend sans modification autre que le nom du paquet, du schéma (fraude), du préfixe (/api/v1/assurance-fraude) et du paquet OPA les modules génériques d'UC-00 : configuration, erreurs, i18n fr/en/ar, authz, audit, jobs, worker, Control Plane, session RLS, Action Gateway (registre, contrats), connecteurs (contrats, registre, résilience, bac à sable déterministe), observabilité, pipeline documentaire, runtime du copilote, ops. Les modules métier signals, entities, docchecks, detection, graphs, alerts, investigations, outcomes et la machine à états workflow sont propres au produit.

3. Machine à états versionnée et maker-checker​

Alerte : new, triaged, assigned, investigating, review_pending, closed_explained, closed_inconclusive, escalated. Investigation : opened, evidence_collection, analysis, review, decision_recorded, closed, reopened. Le registre des transitions (navin_fraude/workflow/machine.py) porte état source, état cible, événement, rôles autorisés, préconditions et exigence d'approbation ; une transition absente du registre répond 409 transition_not_allowed ; une version attendue différente répond 412. Les clôtures, conclusions, références SIU, propositions de déclaration réglementaire et fusions d'entités ambiguës exigent un second humain par le même workflow d'approbation que le back-office bancaire (OPA fraude.action.approve, jamais l'initiateur, jamais une identité technique).

4. Dépendance des signaux et absence de triple comptage​

Chaque signal porte un dependency_group dérivé de sa source (source_object_ref, document ou lot). La priorité d'une alerte ne compte qu'une fois les signaux d'un même groupe ; l'explication affiche la dépendance. Une corrélation entre alertes issues de la même source n'est jamais présentée comme des preuves indépendantes.

5. Données personnelles et mémoire​

Les notes d'hypothèse (investigation_notes, classification restricted) ne quittent jamais le schéma : elles ne sont ni indexées, ni envoyées en mémoire, ni exportées autrement que par un export pseudonymisé soumis à OPA fraude.export. Les exports csv et json remplacent les identifiants de personnes par des pseudonymes dérivés d'un hachage par tenant. Nationalité, religion, origine et caractéristiques sensibles ne sont jamais des entrées de règle : le moteur refuse une règle qui référence un attribut hors de la liste autorisée.

6. Évaluation sans modèle appris​

Aucun modèle statistique n'est entraîné ni appelé : les indicateurs sont des règles versionnées comme données et des statistiques robustes calculées sur des lignes réelles (médiane et écart absolu médian d'un groupe comparable). La précision et le rappel ne sont calculés que sur un jeu synthétique étiqueté et marqué comme tel (backend/tests/datasets), jamais présentés comme performance de production.

Conséquences​

  • Positives : aucune automatisation d'accusation ; chaîne audit, approbation et effet séparés ; extraction future des modules génériques en bibliothèque commune mécanique ; frontend commun piloté par product.manifest.json.
  • Négatives : duplication temporaire des modules génériques entre cinq produits ; les connecteurs réels (sinistres, polices, règlements, listes externes) ne sont exercés qu'en bac à sable déterministe tant qu'un système source n'est pas raccordé ; les formats pdf, docx, xlsx restent indisponibles.
  • Le gabarit navin-assurance-fraude-agent reste published: false jusqu'à validation explicite.