Salta ai contenuti

Documentazione di Selega

Selega è uno strumento di controllo per la legalizzazione degli estados contables (EECC). Prende le cifre canoniche di un set di estados contables, esegue una serie di riscontri numerici su di esse, percorre una checklist per ciascuna giurisdizione e propone un esito. Questa pagina descrive ciascuna parte.

Il flusso: caricamento → validazione in tempo reale → esito

Sezione intitolata “Il flusso: caricamento → validazione in tempo reale → esito”
  1. Inserisci le cifre. Selega popola uno schema canonico di cifre distribuite tra lo stato patrimoniale (ESP), il conto economico (ER), il prospetto delle variazioni del patrimonio netto (EEPN), il rendiconto finanziario (EFE), gli annessi e le note. Lo schema può essere popolato in tre modi:
    • Manualmente, in una griglia — sempre disponibile.
    • Tramite il motore di estrazione locale — un template per ciascun formato su un canvas PDF, con OCR per regione (Tesseract) e provenienza. Nessuna rete, privato. Questo è il percorso predefinito.
    • Tramite il motore IA protetto da gating — generalizza a qualsiasi formato ma invia dati al cloud, quindi è disattivato per impostazione predefinita e a opt-in (vedi IA protetta da gating qui sotto).
  2. Validazione in tempo reale. Man mano che le cifre arrivano, i riscontri girano in modo continuo. Ogni cifra viene dipinta verde quando un riscontro la corrobora, oppure ambra quando entra in un controllo che non quadra. Il revisore conferma; nessun numero incoerente passa.
  3. Checklist. Accanto ai controlli numerici, viene esaminata la checklist dei controlli formali della giurisdizione.
  4. Esito. Il motore decisionale aggrega i controlli falliti e propone l’esito — legalizzare, osservare, certificare la firma o negare / restituire.

Selega modella un set di estados contables come uno schema piatto di cifre e flag (definito in src/core/schema.js), agnostico rispetto al formato PDF da cui provengono. Le cifre coprono:

  • ESP (stato patrimoniale): totale attività, totale passività, patrimonio netto, cassa e banche alla chiusura e all’apertura.
  • EEPN (variazioni del patrimonio netto): patrimonio netto alla chiusura, risultato d’esercizio.
  • ER (conto economico): risultato finale.
  • EFE (rendiconto finanziario): metodo (diretto / indiretto), cassa all’apertura e alla chiusura, variazione di cassa, flussi operativi / di investimento / di finanziamento, RECPAM della cassa.
  • Annessi: ammortamento dei beni strumentali dell’esercizio, ammortamento nell’annesso dei costi.
  • Note / frontespizio: debito previdenziale SIPA, tipo societario, nota sulla rinuncia al sindaco, nota sul patrimonio netto negativo.

I riscontri sono il cuore di Selega. Sono universali — gli standard FACPCE si applicano su tutto il territorio nazionale — quindi lo stesso set fa da seed a ogni giurisdizione; ciò che cambia da Consiglio a Consiglio è il catalogo dei controlli formali e le loro conseguenze. Sono memorizzati come dati (un set di riscontri JSON nel rule-pack) e valutati da un motore generico, così un amministratore può modificarli da un builder visivo senza toccare il codice.

Il set predefinito include i riscontri qui sotto. I confronti usano una piccola tolleranza (predefinita di 1 unità di valuta) per assorbire gli arrotondamenti. Ciascuno è un confronto (due lati devono essere uguali) oppure un controllo di presenza (una cifra o una nota deve essere presente sotto una condizione). Per impostazione predefinita, ogni riscontro di questo set comporta una conseguenza di diniego diretto, ma la conseguenza è configurabile per ciascun riscontro.

#RiscontroChe cosa valida
1Equazione contabile (A = P + PN)Il totale delle attività è uguale al totale delle passività più il patrimonio netto (ESP).
2Patrimonio netto: ESP = EEPNIl patrimonio netto nell’ESP è uguale al patrimonio netto alla chiusura nell’EEPN.
3Risultato: ER = EEPNIl risultato finale del conto economico è uguale al risultato riportato nell’EEPN.
4Cassa: ESP = EFE (chiusura)La cassa e le banche alla chiusura nell’ESP sono uguali alla cassa alla chiusura nell’EFE.
5Variazione EFE = chiusura − aperturaLa variazione di cassa è uguale alla cassa alla chiusura meno la cassa all’apertura.
5bVariazione EFE = Op + Inv + FinLa variazione di cassa è uguale ai flussi operativi più di investimento più di finanziamento.
6Risultato: ER = EFE (indiretto)Il risultato finale si riconcilia con il risultato dell’EFE. Solo quando il metodo EFE è indiretto.
7Ammortamenti: ER = EFE (indiretto)Gli ammortamenti nel conto economico sono uguali agli ammortamenti nell’EFE. Solo metodo indiretto.
8Imposta sul reddito: ER = EFE (indiretto)L’imposta sul reddito nel conto economico è uguale all’imposta sul reddito nell’EFE. Solo metodo indiretto.
9RECPAM della cassa mostrato nell’EFEÈ presente una riga dedicata al RECPAM della cassa. Solo quando il metodo EFE è diretto.
10Ammortamenti: Annesso beni strumentali = Annesso costiL’ammortamento dell’esercizio coincide tra i due annessi.
11Previdenza sociale art. 10, Legge 17.250Il prospetto del debito previdenziale SIPA è presente.
12Nota sul patrimonio netto negativoQuando il patrimonio netto è inferiore a zero, la nota richiesta deve essere presente.
13Nota sulla rinuncia al sindacoPer le società SA / SAS, la nota di rinuncia al sindaco (art. 284) deve essere presente.

Ogni riscontro si risolve in uno di quattro stati: OK (quadra), DIFIERE (non quadra — le cifre coinvolte sono segnalate in ambra), NA (non applicabile nelle condizioni attuali, es. un controllo solo-indiretto quando l’EFE è diretto) oppure FALTA (una cifra richiesta manca).

I riscontri che tornano come DIFIERE vengono trasformati in osservazioni, ciascuna recante la conseguenza definita dal proprio riscontro. Il motore decisionale (src/core/decision.js) calcola quindi l’esito aggregato per priorità di conseguenza:

  • Diniego diretto → il lavoro viene negato / restituito. Se era stata pagata una tasa borrador (tasa borrador), viene invece restituito per essere corretto.
  • Subsanable (correggibile) → restituito per essere corretto se era stata pagata una tasa borrador; altrimenti, se il professionista sceglie di non correggere, viene legalizzato.
  • Certificare la firma → degrada a certificare solo la firma.
  • Nessuna osservazione bloccante → viene legalizzato.

Una tasa urgente (tasa urgente) combinata con qualsiasi osservazione perde il proprio carattere urgente e il lavoro torna nell’elenco generale di re-ingresso. Gli esiti possibili sono: Se legaliza (legalizzare), Se devuelve para corregir (restituire per correggere, tasa borrador), Se certifica solo la firma (certificare solo la firma) e Se deniega / se devuelve (negare / restituire).

  • Selega include un registro delle 24 giurisdizioni dell’Argentina; ciascuna è completamente definita oppure un template da completare.
  • Ogni Consiglio definisce il proprio rule-pack: il catalogo dei controlli formali, quali riscontri sono abilitati e le conseguenze. Il rule-pack modificato localmente di una giurisdizione prevale su quello incluso nel repo.
  • I riscontri sono universali (gli standard FACPCE si applicano a livello nazionale); i controlli formali e le conseguenze sono ciò che varia da Consiglio a Consiglio.
  • Un amministratore sceglie quali giurisdizioni serve una data installazione e commuta la giurisdizione attiva dall’intestazione.

Selega ha cinque ruoli — operatore, supervisore, revisore, amministratore, superamministratore — con un flusso di revisione configurabile, una casella di posta a semaforo e un fascicolo esportabile in sola lettura. L’accesso è protetto sia visivamente (disabilitando ciò che un ruolo non può fare) sia realmente nel backend.

L’IA è disattivata per impostazione predefinita e modulare. Può girare contro un motore locale (Ollama, es. Qwen2.5-VL su CPU) o il cloud (OpenRouter), local-first. Il percorso cloud è protetto da gating su tre condizioni: abilitato nell’Amministrazione, una chiave API presente e l’autorizzazione per documento — perché è l’unico percorso che invia dati al di fuori della scatola. La chiave API risiede lato server (memorizzata in sola scrittura quando caricata dall’Amministrazione).

Lo stato di Selega risiede in PostgreSQL (il servizio db del file compose, connesso tramite DATABASE_URL). Il database persiste nel volume selega-pg — è il registro delle legalizzazioni, quindi esegui il backup. Il container dell’applicazione stesso si limita a leggere /app e a scrivere l’output OCR su /tmp.

Tutto è configurato tramite variabili d’ambiente (12-factor) — vedi Installa Selega per la tabella completa. Operativamente, le cose che imposti sono POSTGRES_PASSWORD (obbligatoria), l’email dell’amministratore, se sei dietro TLS (SELEGA_SECURE_COOKIE), la porta host e, opzionalmente, la chiave IA cloud (meglio caricata dall’ Amministrazione). Le regole per ciascuna giurisdizione, i riscontri, la checklist e gli utenti si modificano tutti dai pannelli Amministrazione e Sistema nell’interfaccia — senza alcuna modifica al codice.

Vanilla JS (moduli ES, nessun framework) · Node.js (proprio server HTTP) · PostgreSQL (pg) · Docker · pdf.js / Tesseract.js / pdf-lib in vendoring · Ollama opzionale per l’IA locale.