Skip to main content

Document Issuer Resolution Worker

Stato: operativo nella prima versione deterministica. Coda: document.issuer.resolve.

Identifica localmente e in modo deterministico l'organizzazione che ha emesso il documento. Consuma evidenze testuali e visuali e, dopo il join, può usare anche gli issuer dei documenti simili.

Ordine delle evidenze

  1. VAT, tax ID o identificativo ufficiale esatto;
  2. dominio, URL o e-mail ufficiale presente nel documento;
  3. alias esatto normalizzato;
  4. nome normalizzato o fuzzy match controllato;
  5. logo/header associato a un issuer confermato;
  6. consenso degli issuer dei documenti simili.

Ogni candidato conserva sorgente, estratto o artefatto di supporto, score e regola applicata. Il risultato è RESOLVED, AMBIGUOUS oppure NOT_FOUND. Solo gli ultimi due stati possono abilitare l'arco di web enrichment.

Dati già disponibili

  • document_issuers
  • document_issuer_aliases
  • document_issuer_document_types
  • document_issuer_observations
  • issuer_visual_fingerprints

Il catalogo issuer può essere globale e verificato; l'osservazione che associa documento e issuer deve includere user/tenant ed essere accessibile soltanto attraverso data-service. L'associazione deve includere sito ufficiale, confidenza e provenance.

Implementazione

Il servizio deriva dal template Vinova e usa BullMQ, logging condiviso, settings DB/env/default e JWT interni. PostgreSQL è raggiunto esclusivamente tramite le API dedicate di data-service. Le regole e le soglie hanno una versione esplicita per rendere riproducibile ogni decisione.

Il worker salva un run in document_issuer_resolution_runs, i candidati ordinati in document_issuer_resolution_candidates e, quando l'esito è RESOLVED, un'osservazione user-scoped in document_issuer_observations. L'output verso il control plane resta compatto e contiene stato, issuer, confidence, conteggio candidati e observation id.

Configurazioni: DOCUMENT_ISSUER_RESOLUTION_CONCURRENCY, DOCUMENT_ISSUER_RESOLVED_THRESHOLD, DOCUMENT_ISSUER_AMBIGUITY_MARGIN, DOCUMENT_ISSUER_FUZZY_NAME_THRESHOLD, DOCUMENT_ISSUER_SIMILAR_MIN_SCORE e DOCUMENT_ISSUER_MAX_CANDIDATES.

Le relazioni issuer -> document type devono crescere da classificazioni confermate, non da predizioni automatiche non validate, per evitare auto-conferme del modello.

La classificazione automatica da similarità è predisposta con DOCUMENT_SIMILARITY_AUTO_CLASSIFY_THRESHOLD, default 0.90, ma resta non eleggibile finché il documento simile non possiede una classificazione confermata. Il resolver issuer non assegna tipi documentali.