Skip to main content

Issuer Web Enrichment Worker

Stato: implementato nella workflow file-text-only@1.7.0. Coda: document.issuer.web-enrich.

È il fallback esterno per issuer non risolti o ambigui. Rimane separato dal resolver locale perché ha latenza, costi, rate limit, policy di privacy e modalità di errore differenti.

Implementazione proposta

  1. Ricevere candidati minimali: nome, identificativi, dominio, paese e pochi termini contestuali.
  2. Consultare prima document_enrichment_cache.
  3. Usare un provider di ricerca dietro un adapter sostituibile.
  4. Valutare i risultati e distinguere sito ufficiale, directory, social e fonti secondarie.
  5. Verificare dominio e coerenza tra nome, identificativi e attività dichiarata.
  6. Salvare fonti, timestamp, score, motivi di accettazione/scarto e TTL.
  7. Aggiornare il catalogo issuer e produrre un'osservazione versionata per il documento.

Non deve inviare a Internet PDF, testo integrale, dati personali o URL arbitrari estratti dal documento. Il fetch delle pagine deve essere protetto contro SSRF, redirect verso reti private, contenuti eccessivi e tipi MIME inattesi.

Dati già disponibili

  • document_enrichment_cache
  • document_enrichment_events
  • document_issuer_web_sources
  • campi sito, dominio, attività e fonti di document_issuers

Il worker restituisce issuer, sito ufficiale, categoria di attività, possibili tipi documentali e confidence con provenance. Se nessuna fonte è sufficientemente affidabile, deve concludere con NOT_FOUND o REVIEW_REQUIRED, senza inventare un issuer.

Gli esiti effettivi sono ENRICHED, REVIEW_REQUIRED, NOT_FOUND e INSUFFICIENT_EVIDENCE. ENRICHED crea o aggiorna l'issuer e rimanda il documento al nodo resolve-enriched-issuer, che conferma deterministicamente l'associazione. Le ricerche sono memorizzate in document_enrichment_cache con TTL configurabile; run e candidati restano auditabili nelle tabelle document_issuer_enrichment_runs e document_issuer_enrichment_candidates.

Il provider iniziale usa OpenAI Responses con web search dietro l'adapter ISSUER_WEB_SEARCH_PROVIDER. Riceve soltanto nomi candidati, domini, identificativi business e country hint: non riceve PDF, testo integrale o informazioni personali del documento.

Routing

L'arco verso questo worker è condizionale e configurato nel workflow. Verticali che vietano ricerche esterne possono saltarlo; errori temporanei possono essere ritentati senza ripetere estrazione e indicizzazione già completate.