Andrea Giovanni Muttisoftware engineer e consulente informatico, Mantova

Collego i macchinari al gestionale e porto il software in produzione

Lavoro sulle integrazioni fra i macchinari in campo e i gestionali aziendali. Prendo i progetti come consulente: parto dal processo che trovo, dimensiono la soluzione su quello, e resto il riferimento quando qualcosa si ferma.

Cosa faccio

Integrazione tra macchinari e gestionale

Leggo i dati raccolti a bordo macchina e li scrivo nel gestionale. La procedura gira ogni giorno senza operatore. Di ogni record si conservano l'origine e l'esito della scrittura, e l'interconnessione fra macchinario e gestionale resta documentata.

python, rest, sftp, t-sql, sql server

Vedi il caso →

Software gestionale su misura, portato fino al rilascio

Costruisco l'applicativo e ne curo il rilascio, su ambienti di prova tenuti distinti da quelli in esercizio. Le migrazioni di base dati vanno in due fasi: la parte reversibile per prima, quella definitiva solo dopo la verifica sui dati reali.

typescript, next.js, fastify, postgresql, prisma, docker, ci/cd

Vedi il caso →

Automazione e intelligenza artificiale su un processo preciso

Prendo un processo che oggi si svolge a mano, lo scompongo in passi verificabili e lo faccio eseguire a un programma. Il costo di ogni esecuzione resta sotto controllo.

Questa linea di lavoro è al primo progetto pilota.

typescript, sdk anthropic, node, jsonl

Vedi l'R&D interno →

Lavori

01

Dati dei mezzi dal cloud del fornitore al gestionale

Logistica e trasporti, flotta di 60 mezzi

problema

I dati dei sessanta mezzi restavano nel portale del fornitore. Un operatore li ricopiava a mano nel gestionale. Nessun altro conosceva il procedimento, e dello storico non restava nulla.

Nei periodi di carico alcuni giorni saltavano. Il controllo di gestione vedeva i picchi di consumo di carburante e di chilometri con settimane di ritardo, troppo tardi per contestare anomalie o addebiti errati dei fornitori.

intervento

  1. Ricostruzione del funzionamento delle API della piattaforma, documentate solo in parte, osservando il traffico del portale web e verificando le ipotesi con chiamate di prova.
  2. Middleware in Python che ogni giorno interroga le API REST di Kiwisat e scrive su SQL Server, prima di consegnare i dati al gestionale TeamSystem Alyante CPM.
  3. MERGE su chiave composita, quindi una riesecuzione sugli stessi dati non crea doppioni. L'utilizzo giornaliero si ricava dalla differenza fra contatori cumulativi.
  4. Sei regole di validazione fermano i dati incoerenti prima della scrittura. Otto test automatici le coprono.
  5. Consegna via SFTP con rinomina atomica a trasferimento concluso e ritentativo esponenziale. Se il trasferimento non va a buon fine, resta il CSV nella cartella del cliente.
  6. Integrazione diretta con outbox transazionale, dove la scrittura e la riga di outbox stanno nella stessa transazione. Un dispatcher separato consegna con chiave di idempotenza.

esito

In produzione, gira sul server e sullo scheduler che il cliente aveva già, senza servizi aggiuntivi da pagare. Ogni esecuzione lascia un log diagnostico, un errore manda una notifica email.

  1. KiwisatAPI REST del fornitore, documentate solo in parte
  2. Middleware Pythonogni giorno, sullo scheduler del cliente; 6 regole di validazione
  3. SQL ServerMERGE su chiave composita: storico, nessun doppione
  4. File CSV via SFTPrinomina atomica, ritentativo esponenzialeOutbox transazionaledispatcher con chiave di idempotenza
  5. TeamSystem Alyante CPMgestionale del cliente
Due vie di consegna al gestionale: file via SFTP oppure integrazione diretta. Ogni esecuzione lascia un log diagnostico, un errore manda una email.
Prima e dopo
A manoAutomatico
Frequenzagiorni saltati nei periodi di caricoogni giorno
Anomalie di consumoviste con settimane di ritardodati aggiornati ogni giorno
Proceduranota a una sola personadocumentata
Storiconessunoin SQL Server, con origine ed esito di ogni record
Se qualcosa si fermaci si accorge settimane doponotifica email e log diagnostico

python 3.12, sql server 2019, t-sql, rest, sftp, fernet, pytest

02

Ciclo di vita e rilascio di un applicativo per le presenze

Consulenza del lavoro e servizi HR, servizio cloud per più aziende

problema

Un applicativo usato ogni giorno per registrare le presenze va aggiornato spesso, e ogni aggiornamento tocca dati che le aziende clienti hanno già registrato.

intervento

  1. Ambienti di staging separati dalla produzione, dove ogni rilascio viene provato prima.
  2. Build automatizzata, e un rilascio che segue sempre la stessa procedura.
  3. Migrazioni di base dati in due fasi: prima le modifiche reversibili, poi quelle definitive dopo la verifica sui dati reali.

esito

Una migrazione sbagliata si annulla nella prima fase, prima di diventare definitiva, e il rilascio non dipende da chi lo esegue.

typescript, postgresql, docker, ci/cd, git

03

Ripristino dei dati e diagnosi remota su installazioni multi cliente

Automazione industriale e cogenerazione, telemetria di impianti energetici

problema

Su impianti di cogenerazione, schede di campionamento e PLC raccolgono serie temporali di telemetria termica ed elettrica. Questi dati non si possono ricreare: se la base dati si corrompe o lo spazio finisce, i dati di prestazione di quel giorno sono persi per sempre e la reportistica per gli incentivi statali non è più valida. Gli impianti girano su hardware in sede, su VMware e su server remoti, e il guasto va isolato a distanza.

intervento

  1. Su PostgreSQL, nelle installazioni multi cliente, eseguo i backup e riporto in linea i dati dopo un guasto, verificandone l'integrità a fine intervento.
  2. Strumenti interni sviluppati in Python e Bash che automatizzano i controlli di diagnosi, dalle prove di carico sull'hardware al monitoraggio dello spazio di archiviazione.
  3. Diagnosi via SSH e provisioning di macchine virtuali su bare metal, VMware e DigitalOcean. Rete segmentata a VLAN e VPN da sito a sito.

esito

Il tempo di diagnosi si è ridotto: gli strumenti indicano dove intervenire prima di aprire una sessione. I dati dei clienti restano recuperabili anche dopo un guasto sulla base dati.

linux, postgresql, python, bash, vmware, digitalocean

04

Helpdesk per più aziende, con i dati separati nel database

Servizi IT in outsourcing, commessa freelance

problema

Un fornitore di servizi IT gestisce il supporto di primo livello per conto di più aziende, tutte sullo stesso portale. Ogni azienda deve vedere solo i propri ticket, e il fornitore deve sapere quali stanno per superare i tempi concordati.

intervento

  1. Portale di ticketing in Java su JDBC, senza framework. L'isolamento dei dati fra aziende è affidato alla Row Level Security di PostgreSQL.
  2. Modulo di monitoraggio SLA che misura tempo di risposta e tempo di risoluzione.
  3. Segnalazione dei ticket in scadenza, ordinati per priorità.

esito

La separazione fra aziende sta nel database, quindi vale per ogni interrogazione che il portale esegue. I ticket in scadenza compaiono prima che il termine sia passato.

java, jdbc, postgresql, row level security

R&D interno: Agentic HUB

Progetto interno, sviluppato al di fuori di qualsiasi commessa. Nessun cliente lo utilizza in produzione.

Il punto su cui lavoro è il controllo dei costi. Un registro condiviso dei token misura ogni esecuzione e le impone un tetto di 2,00 $: oltre quella soglia il supervisore ferma i worker, così un ciclo che si ripete non diventa una spesa imprevista. Nei test interni, un ciclo completo di analisi e scomposizione di un processo medio costa circa 0,07 $.

Orchestratore di agenti sviluppato in TypeScript direttamente sull'SDK Anthropic, senza framework intermedi.

Un supervisore scompone il lavoro e assegna i compiti ai worker. Lo stato persiste su file JSONL e gli strumenti di filesystem operano all'interno di una sandbox.

Lo sviluppo prosegue per mettere alla prova l'automazione su processi reali. Quando un lavoro di questo tipo entrerà in esercizio presso un cliente, lo documenterò fra i lavori.

typescript, sdk anthropic, node, jsonl

Come lavoro

  1. Capisco il processo prima di scrivere codice.
  2. Dimensiono il progetto sul processo che trovo, con gli strumenti che l'azienda ha già.
  3. Risalgo alla causa del guasto e intervengo su quella.
  4. Scelgo la soluzione noiosa che regge per anni.
  5. Tengo gli ambienti separati, le prove restano fuori dalla produzione.
  6. Lascio la documentazione che serve a proseguire con un altro fornitore.

Profilo

linguaggi
TypeScript, Java, Python, C, Bash, T-SQL
framework
Next.js, Fastify, Django, JDBC, Streamlit
basi di dati
PostgreSQL, SQL Server, SQLite, Prisma
infrastruttura
Linux, Docker, CI/CD, Git, VMware, DigitalOcean, Railway
protocolli
REST, OAuth2, OIDC, Microsoft Graph, SFTP

Raccontami il contesto in due righe

Quali macchinari o sistemi sono coinvolti, e cosa deve succedere. Ti dico se è un lavoro che posso prendere e come lo imposterei.

email
andreamutti002@gmail.com
telefono
+39 351 568 0785
linkedin
linkedin.com/in/andreamutti

Lavoro in Lombardia, Veneto ed Emilia, oltre che a distanza. Sede a Mantova.