<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Rasepi Blog</title>
  <subtitle>Rethinking knowledge in times of AI. Insights on documentation freshness, multilingual publishing, and AI-ready knowledge bases.</subtitle>
  <link href="https://rasepi.com/it/blog/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://rasepi.com/it/blog/" rel="alternate" type="text/html" />
  <id>https://rasepi.com/it/blog/</id>
  <updated>2026-04-03T00:00:00Z</updated>
  <author>
    <name>Rasepi Blog</name>
  </author>
  <entry>
    <title>I lettori e gli scrittori hanno modalità mentali diverse. Perché ogni strumento offre loro la stessa interfaccia?</title>
    <link href="https://rasepi.com/it/blog/readers-and-writers-need-different-interfaces/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/readers-and-writers-need-different-interfaces/</id>
    <updated>2026-04-03T00:00:00Z</updated>
    <summary>Le piattaforme di documentazione costringono i lettori, gli scrittori e l&#39;intelligenza artificiale in un&#39;unica interfaccia. Ma consumare la conoscenza e crearla sono compiti cognitivamente diversi. Rasepi li separa.</summary>
    <content type="html">&lt;p&gt;Apra subito Confluence e trovi un documento da leggere. Cosa vede?&lt;/p&gt;
&lt;p&gt;Una barra degli strumenti. Pulsanti di modifica. Caselle di commento. Collegamenti alla cronologia della pagina. Una barra laterale piena di navigazione che non le serve. Briciole di pane. Campi di metadati. Indicatori di autorizzazione. Un&#39;intera interfaccia di authoring che ruota intorno al testo che è venuto a leggere.&lt;/p&gt;
&lt;p&gt;Ora pensi a ciò che desidera effettivamente: la risposta ad una domanda, o le tre fasi successive di un processo, o una politica che deve consultare prima di una riunione tra dieci minuti.&lt;/p&gt;
&lt;p&gt;Lei è venuto per consumare. L&#39;interfaccia presuppone che lei sia venuto per creare.&lt;/p&gt;
&lt;p&gt;Questa è l&#39;impostazione predefinita in quasi tutte le piattaforme di documentazione. Confluence, Notion, SharePoint, GitBook, Nuclino, Slite. Tutte presentano lo stesso ambiente ai lettori e agli scrittori. La pagina è la pagina. Tutti hanno la stessa visione, con o senza alcuni pulsanti di autorizzazione.&lt;/p&gt;
&lt;p&gt;Sembra normale, perché non abbiamo mai avuto altro. Ma è una decisione di design, non una legge di natura. Ed è quella sbagliata.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/lettori-scrittori-ui.svg&quot; alt=&quot;La stessa interfaccia per leggere e scrivere crea un sovraccarico cognitivo&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;La lettura e la scrittura non sono lo stesso compito cognitivo&lt;/h2&gt;
&lt;p&gt;Non si tratta di una preferenza dell&#39;interfaccia utente. Si tratta di una differenza fondamentale nel funzionamento del cervello.&lt;/p&gt;
&lt;p&gt;Quando scrive, si trova in modalità generativa. Sta costruendo, organizzando, decidendo cosa includere e cosa tralasciare. Ha bisogno di strumenti: opzioni di formattazione, controlli della struttura, inserimento di media, campi di metadati, cronologia delle versioni, funzioni di collaborazione. L&#39;interfaccia deve offrirle potere e flessibilità.&lt;/p&gt;
&lt;p&gt;Quando legge, è in modalità ricettiva. Sta analizzando, filtrando, estraendo ciò che è rilevante e cercando di andare avanti. Ha bisogno di chiarezza: tipografia pulita, layout mirato, distrazioni minime. L&#39;interfaccia deve essere fuori dagli schemi.&lt;/p&gt;
&lt;p&gt;La psicologia cognitiva ha un quadro chiaro per questo. La &lt;a href=&quot;https://www.instructionaldesign.org/theories/cognitive-load/&quot;&gt;Teoria del Carico Cognitivo&lt;/a&gt;, sviluppata da John Sweller alla fine degli anni &#39;80, distingue tra carico intrinseco (la difficoltà del materiale stesso), carico germinale (lo sforzo di apprendimento e di integrazione) e carico estraneo (tutto ciò che l&#39;ambiente aggiunge e non aiuta). Ogni barra degli strumenti, barra laterale e pulsante di modifica visibile al lettore è un carico estraneo. Non aiuta a capire il contenuto. Competono attivamente per l&#39;attenzione.&lt;/p&gt;
&lt;p&gt;La ricerca di &lt;a href=&quot;https://doi.org/10.1207/S15326985EP3801_6&quot;&gt;Mayer e Moreno (2003)&lt;/a&gt; sull&#39;apprendimento multimediale ha dimostrato che la riduzione degli elementi estranei migliora sia la comprensione che la conservazione. Il loro principio di coerenza è diretto: Un&#39;interfaccia di documentazione che mostra ai lettori i controlli di creazione sta violando questo principio in ogni singolo caricamento di pagina.&lt;/p&gt;
&lt;p&gt;**Il lettore non ha bisogno di vedere gli strumenti dell&#39;autore. Mostrarli comunque non è neutrale. È attivamente dannoso per la comprensione.&lt;/p&gt;
&lt;h2&gt;Come le piattaforme attuali gestiscono questo aspetto (per lo più non lo fanno)&lt;/h2&gt;
&lt;p&gt;Esaminiamo ciò che esiste.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Confluence&lt;/strong&gt; ha una modalità di lettura e una modalità di modifica, ma la modalità di lettura è ancora circondata dalla navigazione, dai metadati e dall&#39;albero della pagina della piattaforma. La barra degli strumenti di modifica scompare quando non si sta modificando, ma la cornice mentale di &amp;quot;questa è una pagina wiki modificabile&amp;quot; non scompare mai del tutto. Ogni lettore vede il pulsante &amp;quot;Modifica&amp;quot;. La pagina sussurra: &lt;em&gt;potresti cambiare questo.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notion&lt;/strong&gt; è peggiore da questo punto di vista. La sua filosofia di design è che tutto è sempre modificabile. Clicchi su un punto qualsiasi e sta scrivendo. Questo è brillante per gli scrittori. È terribile per i lettori che vogliono semplicemente assorbire i contenuti senza l&#39;ansia di modificare accidentalmente qualcosa. La stessa [galleria di modelli] di Notion (https://www.notion.com/templates) lo dimostra: ogni modello è un&#39;area di lavoro, non una pubblicazione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SharePoint&lt;/strong&gt; tecnicamente supporta diversi layout di pagina per la visualizzazione e la modifica, ma l&#39;esperienza complessiva è ancora quella di una intranet aziendale. I lettori hanno la sensazione di trovarsi all&#39;interno di uno strumento aziendale, non di leggere un documento ottimizzato per la comprensione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitBook&lt;/strong&gt; si avvicina di più a un&#39;esperienza di lettura, con il suo output pulito in stile documentazione. Ma anche in questo caso, l&#39;esperienza di lettura si basa sul presupposto che il lettore sia uno sviluppatore che consulta documenti tecnici. Non è stato progettato per il consumatore di conoscenze generali.&lt;/p&gt;
&lt;p&gt;Nessuna di queste piattaforme tratta la lettura come un&#39;attività fondamentalmente diversa dalla scrittura. La trattano come la scrittura con la barra degli strumenti nascosta.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/lettori-scrittori-strumenti-attuali.svg&quot; alt=&quot;Strumenti attuali: un&#39;interfaccia, tutti i tipi di pubblico&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Il costo di un&#39;unica interfaccia&lt;/h2&gt;
&lt;p&gt;Non si tratta solo di un problema estetico. Ha conseguenze misurabili.&lt;/p&gt;
&lt;h3&gt;Il sovraccarico di informazioni riduce la comprensione&lt;/h3&gt;
&lt;p&gt;Uno &lt;a href=&quot;https://doi.org/10.1086/209336&quot;&gt;studio pubblicato nel Journal of Consumer Research&lt;/a&gt; ha rilevato che il sovraccarico di informazioni porta a una minore qualità delle decisioni, con un effetto che aumenta con l&#39;aumentare del rapporto tra informazioni irrilevanti e rilevanti. Una pagina di documentazione con controlli di authoring visibili, alberi di navigazione e campi di metadati aumenta questo rapporto per ogni lettore che non è lì per scrivere.&lt;/p&gt;
&lt;h3&gt;Il cambio di contesto ha un costo reale&lt;/h3&gt;
&lt;p&gt;Quando un segnale di interfaccia dice &amp;quot;puoi modificare questo&amp;quot;, attiva un quadro cognitivo diverso da &amp;quot;leggi questo&amp;quot;. &lt;a href=&quot;https://www.ics.uci.edu/~gmark/&quot;&gt;La ricerca di Gloria Mark presso la UC Irvine&lt;/a&gt; sull&#39;attenzione e il multitasking ha rilevato che ci vogliono in media 23 minuti e 15 secondi per ricentrarsi completamente dopo un cambio di contesto. Un lettore che prende momentaneamente in considerazione l&#39;editing (anche per correggere un errore di battitura) è stato estromesso dalla modalità di lettura. Non è un&#39;ipotesi. Chiunque abbia utilizzato Notion conosce l&#39;esperienza di fare clic per selezionare il testo e di iniziare a digitare per sbaglio.&lt;/p&gt;
&lt;h3&gt;Lettori e scrittori hanno esigenze diverse rispetto allo stesso contenuto.&lt;/h3&gt;
&lt;p&gt;Uno scrittore ha bisogno di vedere la struttura, i marcatori di formattazione, i tipi di blocco, i metadati e i segnali di collaborazione. Ha bisogno di un macchinario completo.&lt;/p&gt;
&lt;p&gt;Un lettore ha bisogno di vedere un testo pulito, una gerarchia chiara e il percorso più veloce per raggiungere le informazioni che sta cercando. Ha bisogno del contenuto, non del macchinario.&lt;/p&gt;
&lt;p&gt;Servire entrambi dalla stessa interfaccia significa che nessuno dei due riceve un&#39;esperienza ottimizzata per quello che sta facendo.&lt;/p&gt;
&lt;h2&gt;E poi c&#39;è il terzo pubblico: L&#39;INTELLIGENZA ARTIFICIALE&lt;/h2&gt;
&lt;p&gt;Qui le cose si complicano e le piattaforme esistenti sono completamente impreparate.&lt;/p&gt;
&lt;p&gt;La documentazione nel 2026 ha tre consumatori distinti, non due:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Gli &lt;strong&gt;scrittori&lt;/strong&gt; che creano e mantengono i contenuti.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lettori&lt;/strong&gt; che consumano i contenuti visivamente&lt;/li&gt;
&lt;li&gt;Sistemi &lt;strong&gt;AI&lt;/strong&gt; che recuperano, analizzano e sintetizzano i contenuti in modo programmatico.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ognuno di questi pubblici ha bisogno di un&#39;interfaccia fondamentalmente diversa per lo stesso contenuto sottostante.&lt;/p&gt;
&lt;p&gt;Gli scrittori hanno bisogno di ricchi strumenti di editing, funzioni di collaborazione e controlli strutturali. I lettori hanno bisogno di una presentazione pulita e mirata, con una distrazione minima. L&#39;intelligenza artificiale ha bisogno di un output strutturato, elaborabile con metadati espliciti: segnali di freschezza, etichette di classificazione, indirizzamento a livello di blocco e markup semantico pulito.&lt;/p&gt;
&lt;p&gt;Come abbiamo discusso in &lt;a href=&quot;https://rasepi.com/it/blog/builders-not-developers-how-claude-changed-devrel/&quot;&gt;Builders, Not Developers&lt;/a&gt;, gli intermediari AI sono già il consumatore dominante della documentazione per una quota crescente di lavoratori della conoscenza. &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;Il sondaggio sugli sviluppatori 2024 di GitHub&lt;/a&gt; ha rilevato che il 97% degli sviluppatori aziendali ha utilizzato strumenti di codifica AI. Entro il 2026, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;l&#39;84% degli sviluppatori utilizza regolarmente strumenti di IA&lt;/a&gt;, con il 41% di tutto il codice generato dall&#39;IA.&lt;/p&gt;
&lt;p&gt;A questi sistemi di AI non interessa la barra laterale o la barra degli strumenti. Hanno bisogno di dati puliti. E una piattaforma che confonde la vista del lettore con la vista dello scrittore, confonde anche la superficie consumabile dall&#39;AI con la superficie autoriale umana. Si tratta di tre discrepanze in un&#39;unica interfaccia.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/lettori-scrittori-tre-audiences.svg&quot; alt=&quot;Tre pubblici, tre esigenze diverse&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Come Rasepi separa le esperienze&lt;/h2&gt;
&lt;p&gt;Rasepi si basa sul principio che la creazione di contenuti e il consumo di contenuti sono attività diverse che meritano interfacce diverse.&lt;/p&gt;
&lt;h3&gt;L&#39;ambiente dello scrittore&lt;/h3&gt;
&lt;p&gt;Quando scrive in Rasepi, ottiene un ambiente di scrittura completo. Editing di testo ricco con TipTap, controlli a livello di blocco, indicatori di stato di traduzione, gestione delle scadenze, strumenti di collaborazione, visualizzazioni della struttura dei contenuti e tutto ciò di cui uno scrittore ha bisogno per creare e mantenere una documentazione di alta qualità.&lt;/p&gt;
&lt;p&gt;Lo scrittore vede il macchinario perché ha bisogno del macchinario.&lt;/p&gt;
&lt;!-- Schermata: Ambiente di scrittura Rasepi --&gt;
&lt;h3&gt;L&#39;ambiente del lettore&lt;/h3&gt;
&lt;p&gt;Quando qualcuno consuma un documento Rasepi, vede un&#39;esperienza di lettura pulita e mirata. Nessun chrome di editing. Nessuna barra degli strumenti. Nessun segnale &amp;quot;puoi modificare questo&amp;quot;. Solo il contenuto, presentato in un layout ottimizzato per la comprensione e la scansione.&lt;/p&gt;
&lt;p&gt;Il lettore non vede il pulsante di modifica perché non è qui per modificare. È qui per imparare qualcosa, seguire un processo o trovare una risposta. L&#39;interfaccia rispetta questo intento.&lt;/p&gt;
&lt;!-- Schermata: Esperienza di lettura Rasepi --&gt;
&lt;h3&gt;La superficie AI&lt;/h3&gt;
&lt;p&gt;Per i consumatori di AI, Rasepi espone i contenuti attraverso API strutturate con metadati completi. Ogni blocco contiene il suo punteggio di freschezza, lo stato di traduzione, l&#39;hash del contenuto e le etichette di classificazione. I sistemi di AI possono interrogare i contenuti a livello di blocco, filtrare in base alla freschezza, escludere il materiale stantio o in bozza e recuperare esattamente i dati strutturati di cui hanno bisogno.&lt;/p&gt;
&lt;p&gt;Non è necessario raschiare una pagina wiki e sperare nel meglio. L&#39;IA riceve un&#39;interfaccia creata ad hoc, proprio come il lettore e lo scrittore.&lt;/p&gt;
&lt;!-- Schermata: Superficie AI / API di Rasepi --&gt;
&lt;h2&gt;Un livello di contenuto, tre interfacce&lt;/h2&gt;
&lt;p&gt;La cosa importante è che non stiamo mantenendo tre copie del contenuto. Non si tratta del problema delle cinque copie di imbarco di cui abbiamo parlato in [Smettere di mantenere cinque copie dello stesso documento] (/blog/stop-maintaining-five-copies-of-the-same-document/).&lt;/p&gt;
&lt;p&gt;Si tratta di un unico livello di contenuti, memorizzati come blocchi strutturati, serviti attraverso tre diverse visualizzazioni ottimizzate per tre diversi tipi di pubblico.&lt;/p&gt;
&lt;p&gt;Lo scrittore modifica i blocchi. Il lettore vede contenuti assemblati e stilizzati. L&#39;AI interroga i dati strutturati con i metadati. Stessi blocchi. Stessa fonte di verità. Strato di presentazione diverso per ogni consumatore.&lt;/p&gt;
&lt;p&gt;Questo è possibile solo grazie all&#39;architettura a livello di blocco. Ogni pezzo di contenuto è un&#39;unità indirizzabile individualmente con i propri metadati. Può presentare questi blocchi in modo diverso a seconda di chi li richiede:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pubblico&lt;/th&gt;
&lt;th&gt;Esigenze&lt;/th&gt;
&lt;th&gt;Ottiene&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scrittore&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Formattazione, struttura, collaborazione, metadati&lt;/td&gt;
&lt;td&gt;Ambiente di creazione completo con controlli a livello di blocco&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lettore&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Testo pulito, gerarchia chiara, scansione veloce&lt;/td&gt;
&lt;td&gt;Vista di lettura focalizzata, nessun chrome di editing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dati strutturati, punteggi di freschezza, classificazione&lt;/td&gt;
&lt;td&gt;API a livello di blocco con metadati completi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Perché questo è più importante di quanto sembri&lt;/h2&gt;
&lt;p&gt;Leggendo questo potrebbe pensare: &amp;quot;Si tratta solo di UI. Viste diverse della stessa cosa. Quanto può essere importante?&amp;quot;.&lt;/p&gt;
&lt;p&gt;Molto importante, a quanto pare.&lt;/p&gt;
&lt;h3&gt;Fiducia dei lettori&lt;/h3&gt;
&lt;p&gt;Le persone si fidano dei contenuti che sembrano pubblicati. Quando una pagina sembra un wiki che chiunque può modificare, i lettori la ignorano inconsciamente. Quando lo stesso contenuto è presentato in una visualizzazione pulita, di qualità editoriale, gode di maggiore autorità. Questo non è irrazionale. È un segnale che qualcuno ha preso sul serio la presentazione, il che implica che ha preso sul serio anche il contenuto.&lt;/p&gt;
&lt;p&gt;Nielsen Norman Group ha studiato questo aspetto in modo approfondito. La loro &lt;a href=&quot;https://www.nngroup.com/articles/trust-signals-content/&quot;&gt;ricerca sulla credibilità dei contenuti&lt;/a&gt; mostra che la qualità del design e la presentazione sono tra i segnali più forti su cui gli utenti fanno affidamento per valutare l&#39;attendibilità dei contenuti. Una vista dell&#39;editore disordinata mina attivamente la credibilità del contenuto che visualizza.&lt;/p&gt;
&lt;h3&gt;Produttività dello scrittore&lt;/h3&gt;
&lt;p&gt;Gli scrittori che lavorano in un ambiente di authoring dedicato non devono scambiare il contesto tra &amp;quot;sto leggendo o sto scrivendo?&amp;quot;. Gli strumenti sono lì perché si suppone che ci siano, non perché l&#39;interfaccia non è in grado di decidere chi la sta guardando.&lt;/p&gt;
&lt;h3&gt;Affidabilità dell&#39;AI&lt;/h3&gt;
&lt;p&gt;Quando i sistemi di AI dispongono di una superficie appositamente costruita con metadati strutturati, possono prendere decisioni migliori su cosa recuperare e cosa escludere. Possono controllare i punteggi di freschezza prima di includere un blocco in una risposta. Possono rispettare le etichette di classificazione. Possono filtrare per lingua, stato o pubblico. Nulla di tutto ciò è possibile quando l&#39;AI esegue lo scraping della stessa pagina HTML progettata per i lettori umani.&lt;/p&gt;
&lt;h2&gt;Il cambiamento del modello mentale&lt;/h2&gt;
&lt;p&gt;Il presupposto fondamentale della maggior parte delle piattaforme di documentazione è: La pagina è l&#39;unità e tutti interagiscono con la pagina.&lt;/p&gt;
&lt;p&gt;Il presupposto di Rasepi è diverso: Il blocco è l&#39;unità, e un pubblico diverso interagisce con i blocchi attraverso superfici appositamente costruite.&lt;/p&gt;
&lt;p&gt;Sembra una piccola distinzione architettonica. Non lo è. È la differenza tra uno strumento che mostra accidentalmente i contenuti ai sistemi di intelligenza artificiale e uno che li serve deliberatamente. Tra un ambiente di scrittura che si dà il caso sia leggibile e un&#39;esperienza di lettura progettata da zero. Tra un&#39;interfaccia sufficiente e tre ottime.&lt;/p&gt;
&lt;p&gt;La documentazione non è più solo scritta e letta. Viene scritta, letta, interrogata, tradotta, valutata, classificata e servita ai sistemi di intelligenza artificiale su scala. Un&#39;unica interfaccia non può essere ottimizzata per tutte queste cose, e pretendere che lo sia è il modo in cui ci siamo ritrovati con wiki che nessuno vuole leggere e assistenti AI che estraggono risposte da pagine che non sono mai state progettate per essere consumate dalla macchina.&lt;/p&gt;
&lt;p&gt;I lettori e gli scrittori sono in modalità mentali diverse. L&#39;AI è in una modalità completamente diversa. L&#39;interfaccia dovrebbe rifletterlo.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ux" />
    <category term="documentation" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Lo stato dei documenti nel 2026: cinque tendenze che definiranno la prossima era</title>
    <link href="https://rasepi.com/it/blog/the-state-of-docs-in-2026/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/the-state-of-docs-in-2026/</id>
    <updated>2026-04-03T00:00:00Z</updated>
    <summary>I lettori di AI sono aumentati del 500%. Notion ha spedito 21.000 agenti. Confluence ha ottenuto Rovo. GitBook ha pubblicato lo Stato dei documenti. Cinque tendenze del settore che ci dicono dove si sta dirigendo la documentazione.</summary>
    <content type="html">&lt;p&gt;Ogni pochi mesi mi ritaglio una mattinata per leggere e basta. Non il codice Rasepi, non i problemi di GitHub. Blog di concorrenti, relazioni di settore, annunci di conferenze, sondaggi tra gli sviluppatori. Tutto ciò che è stato pubblicato nell&#39;ultimo trimestre e che riguarda la documentazione, la gestione della conoscenza o i flussi di lavoro assistiti dall&#39;intelligenza artificiale.&lt;/p&gt;
&lt;p&gt;L&#39;ho fatto la scorsa settimana e il quadro che è emerso è stato più nitido di quanto mi aspettassi. Non perché un singolo annuncio sia stato rivoluzionario, ma perché cinque tendenze distinte stanno convergendo e, quando le si mette in fila, si delinea un quadro molto chiaro di ciò che le piattaforme di documentazione dovranno fare nei prossimi due anni.&lt;/p&gt;
&lt;p&gt;Ecco cosa ho scoperto.&lt;/p&gt;
&lt;h2&gt;1. L&#39;intelligenza artificiale è il lettore principale. Non gli esseri umani.&lt;/h2&gt;
&lt;p&gt;GitBook ha pubblicato un numero impressionante nel suo &lt;a href=&quot;https://www.gitbook.com/blog/ai-docs-data-2025&quot;&gt;rapporto sui dati dei documenti AI&lt;/a&gt;: La lettura della documentazione da parte dell&#39;AI è aumentata di oltre il 500% nel 2025. Cinquecento per cento. Non è un errore di arrotondamento.&lt;/p&gt;
&lt;p&gt;Nel frattempo, il sondaggio di Stack Overflow &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;2024 Developer Survey&lt;/a&gt; ha mostrato che il 61% degli sviluppatori trascorre più di 30 minuti al giorno alla ricerca di risposte. Ma le modalità di ricerca sono cambiate. Il sondaggio di GitHub ha rilevato che &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;il 97% degli sviluppatori aziendali&lt;/a&gt; ha utilizzato strumenti di codifica AI. Entro il 2026, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;l&#39;84% degli sviluppatori&lt;/a&gt; utilizzerà quotidianamente strumenti di AI, con il 41% del codice ora generato dall&#39;AI. Queste persone non stanno navigando nella barra laterale del wiki. Chiedono a Claude o a Copilot, e l&#39;AI legge i suoi documenti per loro conto.&lt;/p&gt;
&lt;p&gt;L&#39;implicazione è difficile da sopravvalutare. Il consumatore più frequente della sua documentazione non è più una persona con una scheda del browser aperta. È un modello linguistico che effettua chiamate di recupero. E questo modello non è in grado di guardare una pagina e pensare: &amp;quot;Questo sembra obsoleto&amp;quot;.&lt;/p&gt;
&lt;p&gt;GitBook ha individuato questo problema in anticipo e ha risposto con il rapporto &lt;a href=&quot;https://www.gitbook.com/blog/state-of-docs-2026&quot;&gt;State of Docs 2026&lt;/a&gt; e con una spinta verso i formati leggibili dalla macchina. Ha anche distribuito &lt;a href=&quot;https://www.gitbook.com/blog/skill-md&quot;&gt;skill.md&lt;/a&gt;, una convenzione per la strutturazione delle informazioni sui prodotti specifica per gli agenti AI. Google è andata oltre con il suo &lt;a href=&quot;https://blog.google/innovation-and-ai/technology/developers-tools/gemini-api-docsmcp-agent-skills/&quot;&gt;Gemini API Docs MCP&lt;/a&gt;, che collega gli agenti di codifica alla documentazione corrente tramite il Model Context Protocol. Il loro ragionamento era esplicito: gli agenti generano codice obsoleto perché i loro dati di addestramento hanno una data di scadenza. La correzione MCP ha portato il tasso di superamento della valutazione al 96,3%.&lt;/p&gt;
&lt;p&gt;Quindi la prima tendenza è risolta. L&#39;AI è il lettore principale. Le piattaforme che trattano questo aspetto come un vincolo di progettazione fondamentale, non come una funzione da aggiungere in seguito, avranno un vantaggio strutturale.&lt;/p&gt;
&lt;h2&gt;2. La freschezza e i metadati di fiducia stanno diventando obbligatori&lt;/h2&gt;
&lt;p&gt;Anthropic ha intervistato &lt;a href=&quot;https://www.anthropic.com/81k-interviews&quot;&gt;81.000 utenti Claude&lt;/a&gt; nel dicembre 2025 e ha pubblicato i risultati nel marzo 2026. Si tratta del più grande studio qualitativo sugli utenti di AI mai condotto (159 Paesi, 70 lingue). La preoccupazione più citata? L&#39;inaffidabilità. Il 27% degli intervistati l&#39;ha indicata come la preoccupazione principale e il 79% di loro l&#39;ha sperimentata in prima persona.&lt;/p&gt;
&lt;p&gt;Questo numero dovrebbe tenere sveglio ogni team di documentazione.&lt;/p&gt;
&lt;p&gt;Quando le risposte dell&#39;AI sono inaffidabili, il problema non è sempre il modello. Spesso il modello riproduce fedelmente ciò che ha trovato in un documento obsoleto. Il modello non ha avuto un&#39;allucinazione. I suoi documenti erano semplicemente sbagliati e nessuno li ha segnalati.&lt;/p&gt;
&lt;p&gt;I dati di Stack Overflow lo confermano da un altro punto di vista: &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;L&#39;81% degli sviluppatori&lt;/a&gt; prevede che l&#39;AI sarà maggiormente integrata nel modo in cui documentano il codice nel prossimo anno. Se l&#39;81% dei suoi utenti fornisce documenti all&#39;IA e il 27% degli utenti dell&#39;IA afferma che l&#39;inaffidabilità è il problema principale, si ha un problema di fiducia che nessuna quantità di ingegneria tempestiva può risolvere. La soluzione è alla fonte.&lt;/p&gt;
&lt;p&gt;Ecco perché i metadati di freschezza sono importanti. Non i timestamp &amp;quot;ultima modifica&amp;quot; (questi indicano quando qualcuno ha toccato il file, non se il contenuto è ancora accurato). La vera freschezza: stato di revisione, salute dei link, allineamento delle traduzioni, segnali di lettura, rilevamento della deriva dei contenuti. Metadati che una macchina può leggere e utilizzare per decidere se un documento è sicuro da citare.&lt;/p&gt;
&lt;p&gt;Continuo a tornare ad un semplice inquadramento. La sua documentazione ha bisogno di un punteggio di credito. Non un timestamp. Un punteggio di credito. (Abbiamo costruito esattamente questo con il [sistema di punteggio di freschezza] di Rasepi(/caratteristiche/freschezza), e onestamente, vedere i dati del settore mi rende ancora più convinto che sia la decisione giusta).&lt;/p&gt;
&lt;h2&gt;3. La traduzione sta passando da &amp;quot;progetto&amp;quot; a &amp;quot;pipeline&amp;quot;.&lt;/h2&gt;
&lt;p&gt;A febbraio, DeepL ha pubblicato un articolo intitolato &lt;a href=&quot;https://www.deepl.com/en/blog/six-translation-transformations&quot;&gt;&amp;quot;Le 6 trasformazioni della traduzione che le aziende globali non possono permettersi di perdere&amp;quot;&lt;/a&gt;. La loro argomentazione: la traduzione sta diventando una sfida operativa continua, non un progetto in serie da realizzare trimestralmente.&lt;/p&gt;
&lt;p&gt;Questo corrisponde a tutto ciò che vedo.&lt;/p&gt;
&lt;p&gt;Il vecchio modello era semplice. Scrivere in inglese. Quando dispone di un budget, assume un traduttore o si rivolge a un servizio. Riceve le traduzioni. Le carichi. Fatto fino alla prossima volta. Il problema è che la &amp;quot;prossima volta&amp;quot; arriva sempre più velocemente quando il suo prodotto viene spedito settimanalmente e i documenti vengono aggiornati costantemente. Quando la versione tedesca torna dalla revisione, la fonte inglese è già cambiata due volte.&lt;/p&gt;
&lt;p&gt;Il [Customization Hub] di DeepL (https://www.deepl.com/customization-hub) offre ora glossari, regole di stile e impostazioni di formalità, il che è fantastico. Ma se questi strumenti vivono al di fuori della sua piattaforma di documentazione, lei gestisce una catena di strumenti di traduzione: editor, esportazione, traduzione, revisione, reimport, ripetizione. Ogni passaggio è una possibilità di deriva.&lt;/p&gt;
&lt;p&gt;Notion non ha alcun supporto multilingue nativo. Confluence lo offre attraverso i plugin del mercato. GitBook &lt;a href=&quot;https://www.gitbook.com/blog/new-in-gitbook-august-2025&quot;&gt;ha aggiunto la traduzione automatica nell&#39;agosto 2025&lt;/a&gt;, che è un passo, ma opera a livello di pagina.&lt;/p&gt;
&lt;p&gt;Il vero cambiamento è dal livello di pagina al livello di blocco. Quando si tiene traccia delle traduzioni a livello di paragrafo, si ritraduce solo ciò che è effettivamente cambiato. Una modifica tipica tocca forse due paragrafi su quaranta. Si tratta del 94% di lavoro di traduzione in meno. (Questa è l&#39;architettura di traduzione principale di Rasepi e, onestamente, la cosa di cui sono più orgoglioso del prodotto. Ma anche se ci mettiamo da parte, la direzione del settore è chiara: la traduzione continua, incrementale e incorporata è la direzione da seguire).&lt;/p&gt;
&lt;h2&gt;4. Gli agenti AI hanno bisogno di contenuti strutturati, non di pagine wiki.&lt;/h2&gt;
&lt;p&gt;Questo aspetto si è cristallizzato per me quando Notion ha annunciato &lt;a href=&quot;https://www.notion.com/blog/introducing-custom-agents&quot;&gt;Custom Agents&lt;/a&gt; a febbraio. 21.000 agenti costruiti durante l&#39;accesso anticipato. Agenti che rispondono alle domande delle basi di conoscenza, instradano i compiti, compilano rapporti sullo stato. Solo la Rampa ha oltre 300 agenti.&lt;/p&gt;
&lt;p&gt;Atlassian ha seguito una direzione simile. &lt;a href=&quot;https://www.atlassian.com/blog/confluence/create-and-edit-with-rovo&quot;&gt;Rovo AI in Confluence&lt;/a&gt; estrae il contesto da tutte le applicazioni Atlassian e di terze parti per generare contenuti. La loro proposta: &amp;quot;Contenuti ricchi di contesto e di alta qualità, basati sul lavoro esistente del suo team&amp;quot;.&lt;/p&gt;
&lt;p&gt;E poi Anthropic ha lanciato &lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-6&quot;&gt;team di agenti in Claude Code&lt;/a&gt;, dove più agenti AI si coordinano autonomamente su compiti complessi. Opus 4.6 ha ottenuto un punteggio del 76% nel benchmark MRCR a 8 aghi 1M (rispetto al 18,5% del modello precedente), il che significa che è in grado di recuperare informazioni sepolte in profondità in enormi serie di documenti senza perdere la traccia.&lt;/p&gt;
&lt;p&gt;Tutte e tre le aziende stanno costruendo agenti che consumano documentazione. Nessuna di loro ha risolto il problema della qualità delle fonti.&lt;/p&gt;
&lt;p&gt;La documentazione degli agenti personalizzati di Notion riconosce esplicitamente il &lt;a href=&quot;https://www.notion.com/blog/introducing-custom-agents&quot;&gt;prompt injection risk&lt;/a&gt; quando gli agenti leggono contenuti non attendibili. Rovo di Atlassian prende tutto ciò che trova in Confluence. Se quel contenuto è vecchio di tre mesi, Rovo non lo sa. Ci costruisce sopra comunque.&lt;/p&gt;
&lt;p&gt;Affinché gli agenti funzionino in modo affidabile, hanno bisogno di più di pagine di testo. Hanno bisogno di contenuti strutturati con identificatori stabili, segnali di freschezza espliciti, metadati di classificazione chiari e la capacità di distinguere &amp;quot;questo è attuale e revisionato&amp;quot; da &amp;quot;questo esiste ma nessuno lo ha toccato in un anno&amp;quot;. Le pagine Wiki non forniscono tutto questo. Lo fanno i contenuti strutturati a livello di blocco con metadati di fiducia.&lt;/p&gt;
&lt;h2&gt;5. L&#39;open source e il self-hosting stanno tornando in auge&lt;/h2&gt;
&lt;p&gt;Quest&#39;ultimo è più un&#39;intuizione supportata da dati che un singolo annuncio.&lt;/p&gt;
&lt;p&gt;GitBook &lt;a href=&quot;https://www.gitbook.com/blog/free-open-source-documentation&quot;&gt;open-sourced la propria documentazione pubblicata&lt;/a&gt; alla fine del 2024 e ha lanciato un fondo OSS. Il loro ragionamento: i progetti open source meritano strumenti di documentazione gratuiti e di alta qualità. Ma la mossa segnala anche qualcosa di più ampio.&lt;/p&gt;
&lt;p&gt;Notion è solo cloud. Non esiste un&#39;opzione self-hosted. Confluence Data Center esiste, ma richiede una licenza. Quando la sua piattaforma di documentazione contiene le sue conoscenze operative più sensibili (playbook sugli incidenti, procedure di conformità, decisioni sull&#39;architettura), la domanda &amp;quot;chi controlla questi dati?&amp;quot; non è astratta.&lt;/p&gt;
&lt;p&gt;Il post di Anthropic &lt;a href=&quot;https://www.anthropic.com/news/claude-is-a-space-to-think&quot;&gt;&amp;quot;Claude è uno spazio per pensare&amp;quot;&lt;/a&gt; di febbraio contiene un&#39;argomentazione interessante sulla fiducia e sui modelli di business. La loro affermazione principale: gli incentivi pubblicitari sono incompatibili con un assistente AI veramente utile. Hanno scelto di rimanere senza pubblicità, in modo che gli utenti possano fidarsi dello strumento.&lt;/p&gt;
&lt;p&gt;Penso che ci sia un parallelo per le piattaforme di documentazione. Se il suo sistema di documentazione è closed-source e solo cloud, non può verificare ciò che alimenta l&#39;AI. Non può verificare i calcoli di freschezza. Non può assicurarsi che i suoi dati rimangano sotto il suo controllo. Per i team che stanno implementando assistenti AI in cima alla loro base di conoscenze (e sempre più spesso lo fanno tutti), la verificabilità è importante.&lt;/p&gt;
&lt;p&gt;Non si tratta di una polemica sul fatto che l&#39;open source sia moralmente superiore. I prodotti closed-source possono assolutamente essere affidabili. Ma quando si costruiscono flussi di lavoro basati sull&#39;AI in cima alla propria documentazione interna, la possibilità di ispezionare e verificare il sistema è un vantaggio pratico. Per noi, la licenza MIT di Rasepi non è stata un ripensamento. Si è trattato di una decisione progettuale radicata nella stessa logica: l&#39;infrastruttura di documentazione deve essere verificabile.&lt;/p&gt;
&lt;h2&gt;Cosa significano queste cinque tendenze insieme&lt;/h2&gt;
&lt;p&gt;Singolarmente, ognuna di queste tendenze è gestibile. L&#39;intelligenza artificiale legge i suoi documenti? Ok, aggiunga dei metadati leggibili dalla macchina. La freschezza è importante? Bene, aggiunga delle date di revisione. La traduzione deve essere continua? Certo, integri DeepL. Gli agenti hanno bisogno di una struttura? Bene, migliori il suo modello di contenuti. La sovranità è importante? Ottimo, offra un&#39;opzione self-hosted.&lt;/p&gt;
&lt;p&gt;Ma nel loro insieme, descrivono una piattaforma che appare fondamentalmente diversa da quella che la maggior parte dei team utilizza oggi.&lt;/p&gt;
&lt;p&gt;Il divario è architettonico. Non si tratta di cinque funzionalità da aggiungere. Sono cinque presupposti che devono essere integrati nelle fondamenta. Come vengono archiviati i contenuti (a livello di blocco, non di pagina). Come viene modellata la fiducia (punteggi di freschezza, non timestamp). Come funziona la traduzione (incrementale, incorporata, per paragrafo). Come gli agenti AI accedono ai contenuti (API strutturate con metadati, non scrapes di pagine). Come vengono controllati i dati (aperti, verificabili, auto-ostabili).&lt;/p&gt;
&lt;p&gt;Nessuna piattaforma consolidata è stata progettata su tutti e cinque questi aspetti contemporaneamente. Alcune le stanno aggiungendo pezzo per pezzo. GitBook si sta muovendo più velocemente sul fronte della leggibilità AI. Notion sta costruendo un&#39;infrastruttura di agenti. Atlassian ha una distribuzione aziendale.&lt;/p&gt;
&lt;p&gt;Ma progettare per tutti e cinque fin dal primo giorno? Questo è il vantaggio di iniziare da zero quando il terreno si sposta.&lt;/p&gt;
&lt;p&gt;Mi rendo conto di essere di parte. Abbiamo costruito Rasepi proprio perché abbiamo visto queste tendenze convergere e volevamo una piattaforma che le assumesse tutte fin dall&#39;inizio. Traduzione a livello di blocco, scadenza forzata, punteggio di freschezza, contenuti strutturati pronti per l&#39;AI, open source. È la tesi dell&#39;intero progetto.&lt;/p&gt;
&lt;p&gt;Ma anche se non esistessimo, credo che qualsiasi lettura onesta di ciò che è accaduto nel primo trimestre del 2026 punti nella stessa direzione. La documentazione sta diventando un&#39;infrastruttura. E l&#39;infrastruttura ha requisiti diversi dalle pagine wiki.&lt;/p&gt;
&lt;p&gt;I team che lo capiranno per primi non avranno solo una documentazione migliore. Avranno agenti AI più affidabili, costi di traduzione più bassi, meno sorprese di conformità e basi di conoscenza che rimarranno effettivamente affidabili nel tempo.&lt;/p&gt;
&lt;p&gt;Questo è lo stato dei documenti nel 2026. La questione non è se queste tendenze sono reali. Si tratta di capire se la sua piattaforma è stata progettata per loro.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cinque tendenze. Una domanda architettonica: la sua piattaforma di documentazione è stata progettata per il 2026, o sta ancora servendo ipotesi del 2016?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Fonti: &lt;a href=&quot;https://www.gitbook.com/blog/ai-docs-data-2025&quot;&gt;GitBook AI docs data report&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/state-of-docs-2026&quot;&gt;GitBook State of Docs 2026&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/skill-md&quot;&gt;GitBook skill.md&lt;/a&gt;, &lt;a href=&quot;https://blog.google/innovation-and-ai/technology/developers-tools/gemini-api-docsmcp-agent-skills/&quot;&gt;Google Gemini API Docs MCP&lt;/a&gt;, &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;Stack Overflow 2024 Developer Survey&lt;/a&gt;, &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;GitHub 2024 developer survey&lt;/a&gt;, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;Index.dev developer productivity statistics&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/81k-interviste&quot;&gt;Anthropic &amp;quot;What 81,000 People Want from AI&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/news/claude-is-a-space-to-think&quot;&gt;Anthropic &amp;quot;Claude è uno spazio per pensare&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-6&quot;&gt;Claude Opus 4.6&lt;/a&gt;, &lt;a href=&quot;https://www.notion.com/blog/introducing-custom-agents&quot;&gt;Notion Custom Agents&lt;/a&gt;, &lt;a href=&quot;https://www.atlassian.com/blog/confluence/create-and-edit-with-rovo&quot;&gt;Atlassian Rovo in Confluence&lt;/a&gt;, &lt;a href=&quot;https://www.deepl.com/en/blog/six-translation-transformations&quot;&gt;DeepL &amp;quot;6 trasformazioni di traduzione&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.deepl.com/customization-hub&quot;&gt;DeepL Customization Hub&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/free-open-source-documentation&quot;&gt;GitBook open source documentation&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/new-in-gitbook-august-2025&quot;&gt;GitBook auto-translate&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="documentation" />
    <category term="platforms" />
  </entry>
  <entry>
    <title>Costruttori, non sviluppatori: Come Claude ha cambiato il destinatario dei suoi documenti</title>
    <link href="https://rasepi.com/it/blog/builders-not-developers-how-claude-changed-devrel/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/builders-not-developers-how-claude-changed-devrel/</id>
    <updated>2026-04-02T00:00:00Z</updated>
    <summary>La persona che integra la sua API non legge più i suoi documenti. Si siede in Claude e descrive ciò che vuole. Le relazioni con gli sviluppatori, la documentazione API e l&#39;intero funnel di avvio devono essere ripensati per questa nuova realtà.</summary>
    <content type="html">&lt;p&gt;C&#39;è una persona che in questo momento, da qualche parte, sta integrando la sua API. Non sono sul suo sito di documentazione. Non hanno aperto la sua guida introduttiva. Non hanno mai visto il suo parco giochi interattivo o la sua navigazione laterale accuratamente progettata.&lt;/p&gt;
&lt;p&gt;Sono seduti in Claude. O Copilot. O in Cursor. Hanno digitato qualcosa come &lt;em&gt;&amp;quot;integra l&#39;API di fatturazione di Stripe con la mia applicazione Next.js utilizzando l&#39;app router&amp;quot;&lt;/em&gt; e hanno atteso il ritorno del codice funzionante. L&#39;AI ha letto i documenti per conto loro. Ha trovato gli endpoint pertinenti, ha compreso il flusso di autenticazione, ha scelto i metodi SDK giusti e ha prodotto un&#39;implementazione.&lt;/p&gt;
&lt;p&gt;Due settimane fa, allo Start Summit Hackathon di San Gallo, ho assistito a questo processo in tempo reale. Stavo parlando con un gruppo di studenti di informatica e un paio di fondatori di startup in fase iniziale su come approcciano le nuove API, e ognuno di loro ha descritto lo stesso flusso di lavoro: incollare il problema in un&#39;intelligenza artificiale, ricevere il codice indietro, iterare da lì. Una delle studentesse ha riso quando le ho chiesto se avesse letto i documenti. &amp;quot;Perché dovrei? Claude li legge per me&amp;quot;.&lt;/p&gt;
&lt;p&gt;La persona non ha mai visitato il suo sito. Potrebbe non visitare mai il suo sito. E questo è sempre più spesso il modo in cui viene costruito il software.&lt;/p&gt;
&lt;h2&gt;Il cambiamento fondamentale&lt;/h2&gt;
&lt;p&gt;La documentazione oggi ha due consumatori fondamentalmente diversi: gli esseri umani che la leggono e gli assistenti AI che la leggono per conto dei costruttori. La maggior parte della documentazione è ottimizzata esclusivamente per gli esseri umani. L&#39;AI è già il lettore dominante.&lt;/p&gt;
&lt;p&gt;Questo cambia tutto a valle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quando un&#39;IA serve contenuti stantii, il costruttore non ha modo di rilevare il problema. Il danno si aggrava in modo silenzioso.&lt;/li&gt;
&lt;li&gt;I responsabili di prodotto, i progettisti e gli analisti stanno distribuendo software attraverso gli assistenti AI, spesso senza aver mai letto una riga di documentazione.&lt;/li&gt;
&lt;li&gt;La struttura leggibile dalla macchina è più importante del design visivo.** Un markdown pulito, blocchi autocontenuti e metadati espliciti sono ciò che consente all&#39;AI di rappresentare il suo prodotto in modo accurato.&lt;/li&gt;
&lt;li&gt;I requisiti di formato si sono divisi.** I lettori umani hanno bisogno di narrazione. Gli intermediari dell&#39;intelligenza artificiale hanno bisogno di specifiche strutturate e analizzabili. Lei deve servire entrambi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il resto di questo post spiega come siamo arrivati a questo punto, cosa significa per DevRel e cosa può fare in questo momento.&lt;/p&gt;
&lt;h2&gt;Il viaggio che nessuno ha pianificato&lt;/h2&gt;
&lt;p&gt;Per molto tempo, le relazioni con gli sviluppatori hanno seguito un percorso ben compreso. Avete scritto una documentazione completa. Ha pubblicato guide rapide. Ha tenuto conferenze. Ha mantenuto una presenza su Stack Overflow. Ha reso i suoi riferimenti API ricercabili, i suoi SDK idiomatici, i suoi messaggi di errore utili.&lt;/p&gt;
&lt;p&gt;Questo percorso presupponeva che lo sviluppatore leggesse i suoi contenuti. Naviga nella sua struttura. Seguire i suoi passi.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;Il sondaggio sugli sviluppatori 2024 di GitHub&lt;/a&gt; ha rilevato che il 97% degli sviluppatori aziendali ha utilizzato strumenti di codifica AI in qualche momento. &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;Il sondaggio annuale di Stack Overflow&lt;/a&gt; ha evidenziato che il 76% di tutti gli sviluppatori sta utilizzando o pianificando l&#39;utilizzo di strumenti di AI, con il 62% dei professionisti che li utilizzano attivamente giorno per giorno. Entro il 2026, questo numero &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;salirà all&#39;84%&lt;/a&gt;, con il 41% di tutto il codice ora generato dall&#39;AI e il 51% degli sviluppatori professionisti che utilizzano quotidianamente gli strumenti di AI. Questi numeri non stanno rallentando.&lt;/p&gt;
&lt;p&gt;Il nuovo viaggio ha un aspetto diverso. Qualcuno descrive ciò che vuole in linguaggio naturale. Un assistente AI legge la documentazione, trova le sezioni pertinenti e genera l&#39;integrazione. Il costruttore esamina il risultato, forse perfeziona la richiesta, forse chiede un follow-up. Minuti, non ore.&lt;/p&gt;
&lt;p&gt;L&#39;imbuto di avvio che i team DevRel hanno perfezionato per anni? Viene aggirato. Non perché fosse sbagliato. Il punto di ingresso si è semplicemente spostato.&lt;/p&gt;
&lt;h2&gt;Due consumatori, una serie di documenti&lt;/h2&gt;
&lt;p&gt;La documentazione ora ha due destinatari fondamentalmente diversi.&lt;/p&gt;
&lt;p&gt;Il primo è il lettore umano. Questa persona esiste ancora. Si presenta per le decisioni sull&#39;architettura, il debugging dei casi limite, la revisione della conformità e la comprensione concettuale. Vogliono spiegazioni narrative, materiale di riferimento ben organizzato e un ragionamento chiaro sui compromessi.&lt;/p&gt;
&lt;p&gt;Il secondo è l&#39;intermediario AI. Legge la sua documentazione per conto di un costruttore. Non gli interessa la barra laterale. Non apprezza il suo design visivo. Ha bisogno di un contenuto strutturato, interpretabile dalla macchina: markdown pulito, formattazione coerente, specifiche esplicite su cui poter ragionare senza ambiguità.&lt;/p&gt;
&lt;p&gt;Quasi tutti i siti di documentazione oggi sono ottimizzati esclusivamente per il primo pubblico. Il secondo pubblico è già il consumatore dominante.&lt;/p&gt;
&lt;p&gt;Jeremy Howard ha identificato questa tensione quando &lt;a href=&quot;https://llmstxt.org/&quot;&gt;ha proposto lo standard /llms.txt&lt;/a&gt; nel 2024. La sua osservazione era precisa: &lt;em&gt;&amp;quot;I modelli linguistici di grandi dimensioni si basano sempre più sulle informazioni del sito web, ma devono affrontare una limitazione critica: le finestre di contesto sono troppo piccole per gestire la maggior parte dei siti web nella loro interezza.&amp;quot;&lt;/em&gt; La proposta è semplice. Un file markdown curato in &lt;code&gt;/llms.txt&lt;/code&gt; che fornisca ai modelli AI una panoramica strutturata del suo prodotto e i link alle risorse più importanti. FastHTML, i documenti di Anthropic e una &lt;a href=&quot;https://llmstxt.site/&quot;&gt;crescente directory di progetti&lt;/a&gt; ne forniscono ora uno.&lt;/p&gt;
&lt;p&gt;È una convenzione utile. Ma è anche un sintomo di un problema più profondo. Il vero problema non è il formato. È che la maggior parte della documentazione non è mai stata progettata pensando al consumo da parte delle macchine.&lt;/p&gt;
&lt;h2&gt;Il costruttore non sta tagliando le curve&lt;/h2&gt;
&lt;p&gt;C&#39;è la tentazione di guardare la persona che richiede Claude invece di leggere la documentazione e concludere che sta prendendo delle scorciatoie. Che non capisce veramente cosa succede nel codice. Che sia in qualche modo uno sviluppatore inferiore.&lt;/p&gt;
&lt;p&gt;Ho avuto questa conversazione abbastanza volte per sapere che di solito è sbagliata.&lt;/p&gt;
&lt;p&gt;Molti di questi costruttori sono ingegneri senior che fanno scelte di efficienza deliberate. Capiscono il codice, ma non vogliono navigare in quattro pagine di documentazione per trovare le tre righe di cui hanno effettivamente bisogno. Hanno imparato che un assistente AI può estrarre quelle righe più velocemente di quanto possano fare loro, quindi delegano la lettura. (Onestamente, lo faccio anch&#39;io. Non riesco a ricordare l&#39;ultima volta che ho letto una guida introduttiva da cima a fondo).&lt;/p&gt;
&lt;p&gt;Anthropic ha riconosciuto questo schema quando ha creato il &lt;a href=&quot;https://modelcontextprotocol.io/introduction&quot;&gt;Model Context Protocol&lt;/a&gt;. L&#39;MCP è ora supportato da Claude, ChatGPT, VS Code, Cursor e altri. È esplicitamente progettato in modo che gli assistenti AI possano accedere a sistemi esterni, estrarre il contesto e agire su di esso. Le specifiche lo descrivono come in grado di fornire &lt;em&gt;&amp;quot;l&#39;accesso a un ecosistema di fonti di dati, strumenti e applicazioni che potenzieranno le capacità e miglioreranno l&#39;esperienza dell&#39;utente finale&amp;quot;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Lo legga attentamente. Si tratta di un linguaggio di infrastruttura, non di convenienza. I costruttori che utilizzano questi strumenti non stanno evitando il lavoro. Stanno lavorando attraverso un nuovo livello, e la sua documentazione fa parte di quel livello, che lei l&#39;abbia progettato o meno.&lt;/p&gt;
&lt;p&gt;I numeri lo confermano. La sola Claude gestisce oggi &lt;a href=&quot;https://www.incremys.com/en/resources/blog/claude-statistics&quot;&gt;25 miliardi di chiamate API al mese&lt;/a&gt;, con 30 milioni di utenti attivi mensili in 159 Paesi. Il &lt;a href=&quot;https://www.incremys.com/en/resources/blog/claude-statistics&quot;&gt;70% delle aziende Fortune 100&lt;/a&gt; utilizza Claude. Secondo un sondaggio di Menlo Ventures, Anthropic detiene &lt;a href=&quot;https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/&quot;&gt;il 32% della quota di mercato dell&#39;AI aziendale per utilizzo del modello&lt;/a&gt;, davanti a OpenAI con il 25%. Un rapporto di ricerca di HSBC lo colloca ancora più in alto: 40% della spesa totale in AI. Non si tratta di strumenti sperimentali. Sono infrastrutture primarie.&lt;/p&gt;
&lt;h2&gt;Le relazioni con gli sviluppatori sono state costruite per un&#39;altra epoca.&lt;/h2&gt;
&lt;p&gt;Se la sua strategia DevRel è stata progettata prima del 2023, è stata pensata per un mondo in cui gli sviluppatori leggevano direttamente i documenti. Quel mondo non è scomparso, ma non è più il modello di interazione dominante per una quota crescente di costruttori.&lt;/p&gt;
&lt;p&gt;Questo cambia il calcolo di diverse attività DevRel di lunga data.&lt;/p&gt;
&lt;p&gt;**Una presentazione di 45 minuti ad una conferenza di sviluppatori raggiunge una sala di poche centinaia di persone. Un file &lt;code&gt;/llms.txt&lt;/code&gt; ben strutturato e una documentazione pulita leggibile dalla macchina raggiungono ogni costruttore che chiede a qualsiasi assistente AI informazioni sul suo prodotto, continuamente, in qualsiasi momento. Il colloquio è un evento unico. La documentazione leggibile dalla macchina si compone. Non sto dicendo che le conferenze siano inutili (sono appena tornato da una di queste), ma l&#39;equazione della leva è cambiata.&lt;/p&gt;
&lt;p&gt;**Il classico tutorial di avvio rapido in cinque fasi è sempre più una formalità. Il costruttore non segue i passi. Descrive ciò che desidera e si aspetta che l&#39;AI produca l&#39;integrazione. Se l&#39;API è ben documentata in un formato facile da usare, l&#39;AI gestisce l&#39;esperienza di avvio in modo più efficiente di quanto potrebbe fare qualsiasi tutorial. Le esercitazioni dovrebbero invece diventare materiale concettuale: spiegare perché scegliere l&#39;approccio A rispetto all&#39;approccio B. L&#39;IA può generare l&#39;implementazione. È molto meno affidabile nello spiegare i compromessi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stack Overflow.&lt;/strong&gt; I dati del loro sondaggio mostrano che &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;l&#39;84% degli sviluppatori&lt;/a&gt; utilizza direttamente la documentazione tecnica, con il 90% di questi che si affida ai documenti all&#39;interno dei pacchetti API e SDK. Ma il modo in cui &lt;em&gt;accedono&lt;/em&gt; a questi documenti è sempre più spesso attraverso un livello AI, non una scheda del browser. Le domande che ancora arrivano a Stack Overflow tendono ad essere quelle difficili. Casi limite, debug di produzione, cose che richiedono sfumature. Preziose, certo. Ma non è più il luogo in cui si concentra il volume.&lt;/p&gt;
&lt;h2&gt;Quando l&#39;AI legge i suoi documenti, la freschezza diventa fondamentale&lt;/h2&gt;
&lt;p&gt;Ecco la parte a cui la maggior parte dei team non ha pensato.&lt;/p&gt;
&lt;p&gt;Quando un umano legge una pagina di documentazione, può applicare un giudizio. Potrebbe notare che le schermate sembrano vecchie, o che un commento in fondo dice che il processo è cambiato. Può strizzare l&#39;occhio e pensare: &amp;quot;Sembra una cosa superata&amp;quot;.&lt;/p&gt;
&lt;p&gt;Un assistente AI non può fare nulla di tutto ciò. Legge il testo, lo elabora come fatto e genera una risposta con piena fiducia. Se la documentazione descrive un endpoint deprecato, l&#39;AI consiglierà allegramente di integrarlo. Se la documentazione fa riferimento a un&#39;infrastruttura che è stata sostituita sei mesi fa, l&#39;AI descriverà la vecchia configurazione come attuale. Senza esitazioni.&lt;/p&gt;
&lt;p&gt;Ed ecco la cosa che rende tutto questo peggiore di quanto sembri: Il &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;66% degli sviluppatori&lt;/a&gt; afferma già che il problema principale degli strumenti di AI è che forniscono risultati &amp;quot;quasi giusti ma non del tutto&amp;quot;. La documentazione obsoleta alimenta direttamente questo problema. L&#39;AI non ha le allucinazioni. Sta riproducendo fedelmente contenuti obsoleti e il costruttore non ha modo di capire la differenza.&lt;/p&gt;
&lt;p&gt;Il costruttore si fida dell&#39;AI. L&#39;AI si fida della documentazione. Se la documentazione è obsoleta, questa catena di fiducia fornisce una risposta sicura e sbagliata.&lt;/p&gt;
&lt;p&gt;Questo è sempre stato un problema, ovviamente. I contenuti obsoleti hanno sempre confuso le persone. Ma il danno era contenuto perché i lettori umani potevano a volte individuarlo. Gli intermediari AI non possono. Amplificano i contenuti stantii servendoli in scala, con autorità, a persone che non hanno motivo di dubitarne.&lt;/p&gt;
&lt;p&gt;La freschezza non è più un problema di qualità dei contenuti. È un problema di affidabilità per ogni flusso di lavoro alimentato dall&#39;AI che tocca i suoi documenti.&lt;/p&gt;
&lt;h2&gt;La parola &amp;quot;sviluppatore&amp;quot; è troppo ristretta&lt;/h2&gt;
&lt;p&gt;Le persone che costruiscono software nel 2026 non si identificano tutte come sviluppatori. Alcuni sono designer che chiedono a Claude di costruire un prototipo funzionante. Alcuni sono manager di prodotto che usano Cursor per distribuire strumenti interni. Alcuni sono analisti di dati che descrivono una pipeline di dati in linguaggio naturale e lasciano che un agente la assembli. Allo Start Summit, la metà dei team dell&#39;hackathon aveva membri con un background di programmazione pari a zero, che alla fine del weekend stavano inviando software funzionante.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ramp.com/&quot;&gt;Ramp&lt;/a&gt; è un esempio utile. L&#39;azienda fintech è passata da una valutazione di 5,8 miliardi di dollari nel 2023 a &lt;a href=&quot;https://techcrunch.com/2025/11/17/ramp-hits-32b-valuation-just-three-months-after-hitting-22-5b/&quot;&gt;32 miliardi di dollari entro la fine del 2025&lt;/a&gt;, superando il miliardo di dollari di fatturato annualizzato lungo il percorso. Una delle startup a crescita più rapida della storia. Una parte molto discussa del loro approccio: i product manager costruiscono le funzionalità direttamente con gli strumenti di AI, invece di aspettare in un backlog di ingegneria. I PM di Ramp non si limitano a scrivere le specifiche. Inviano il codice. L&#39;AI gestisce l&#39;implementazione. Il PM gestisce l&#39;intento.&lt;/p&gt;
&lt;p&gt;Non è una scorciatoia. Un nuovo modello operativo, che sta funzionando su una scala tale da rendere difficile liquidarlo come un esperimento.&lt;/p&gt;
&lt;p&gt;Lo studio interno di Anthropic è rivelatore. Quando &lt;a href=&quot;https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/&quot;&gt;hanno intervistato 132 dei loro ingegneri&lt;/a&gt; su come utilizzano Claude, gli ingegneri hanno riferito di utilizzarlo per circa il 60% delle loro attività lavorative. Gli usi più comuni? Debuggare il codice esistente, capire cosa fanno le parti della base di codice e implementare nuove funzionalità. Gli ingegneri hanno detto che tendono a passare a Claude compiti &amp;quot;non complessi, ripetitivi, dove la qualità del codice non è critica&amp;quot;. E il 27% del lavoro che svolgono ora con Claude semplicemente non sarebbe stato svolto prima.&lt;/p&gt;
&lt;p&gt;Questo è il team di Anthropic. Le persone che hanno costruito il modello lo usano come lettore di documentazione, come navigatore della base di codice e come generatore di prime bozze. Tutti gli altri stanno facendo lo stesso, solo con la propria documentazione invece che con la loro.&lt;/p&gt;
&lt;p&gt;Anthropic ha deciso di chiamare questa persona &amp;quot;costruttore&amp;quot;. I loro strumenti sono progettati non solo per gli ingegneri informatici professionisti, ma per chiunque sia in grado di descrivere ciò che vuole costruire. Quando Claude può creare un&#39;applicazione full-stack da un progetto Figma tramite MCP, la linea tradizionale tra &amp;quot;sviluppatore&amp;quot; e &amp;quot;non sviluppatore&amp;quot; si dissolve.&lt;/p&gt;
&lt;p&gt;Questo ha implicazioni reali per chiunque gestisca la documentazione o si preoccupi dell&#39;esperienza degli sviluppatori. Il suo pubblico non è più limitato alle persone che sanno cos&#39;è un endpoint REST. Include tutti coloro il cui assistente AI potrebbe interagire con il suo prodotto. Il PM di Ramp che invia una funzionalità utilizzando la sua API? Probabilmente non leggerà mai direttamente la sua documentazione. Il loro agente AI lo farà assolutamente.&lt;/p&gt;
&lt;h2&gt;Cosa significa questo per la documentazione&lt;/h2&gt;
&lt;p&gt;Se la documentazione ora serve due pubblici, i lettori umani e gli intermediari AI, deve funzionare per entrambi. Sembra ovvio. In pratica, quasi nessuno lo fa.&lt;/p&gt;
&lt;p&gt;Ecco cosa penso sia importante:&lt;/p&gt;
&lt;p&gt;**Se i suoi documenti API sono una pagina HTML splendidamente renderizzata che un LLM deve analizzare e analizzare, l&#39;AI sta lavorando più duramente di quanto dovrebbe. Spedisca la specifica OpenAPI grezza insieme alla versione renderizzata. Spedire un markdown pulito. Rendere le specifiche accessibili senza richiedere all&#39;intelligenza artificiale di interpretare il layout della pagina.&lt;/p&gt;
&lt;p&gt;**Gli assistenti AI non consumano la documentazione pagina per pagina. Estraggono le sezioni rilevanti. Un documento con intestazioni chiare, paragrafi autocontenuti e una semantica esplicita a livello di blocco è molto più utile per un&#39;IA rispetto a una narrazione fluida che richiede la lettura dell&#39;intera pagina per il contesto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segnali di fiducia che le macchine sanno leggere.&lt;/strong&gt; Quando è stato rivisto l&#39;ultima volta questo documento? È ancora attuale? Il contenuto è stato segnalato? Questi segnali devono esistere in una forma accessibile all&#39;AI, non solo come indicazioni visive su una pagina web. Un punteggio di freschezza, uno stato di scadenza, una data di revisione, questi sono i metadati che permettono all&#39;IA di decidere se un documento è sicuro da usare come fonte.&lt;/p&gt;
&lt;p&gt;**Quando un assistente AI serve a un costruttore una risposta sicura basata su un endpoint deprecato, il danno è peggiore di un 404. Il costruttore ci costruisce sopra. Il costruttore ci costruisce sopra. Lo spedisce. Poi si rompe in produzione e nessuno sa perché, finché qualcuno non risale alla documentazione che avrebbe dovuto essere aggiornata mesi fa. Ogni documento a cui un&#39;AI potrebbe fare riferimento ha bisogno di un meccanismo per dimostrare che è ancora aggiornato. (Questo è, in tutta franchezza, esattamente il problema che stiamo costruendo Rasepi per risolvere. La scadenza forzata dei blocchi di documentazione impedisce ai contenuti obsoleti di nascondersi).&lt;/p&gt;
&lt;h2&gt;Per iniziare: verificare la documentazione attuale&lt;/h2&gt;
&lt;p&gt;Se ha letto fino a questo punto e sta pensando &amp;quot;Ok, ma cosa devo fare effettivamente lunedì?&amp;quot;, ecco quattro cose concrete che può controllare questa settimana.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Provi i suoi documenti attraverso un&#39;AI.&lt;/strong&gt; Apra Claude o ChatGPT e gli chieda di integrare il suo prodotto in uno scenario realistico. Non utilizzi le sue conoscenze interne. Guardi semplicemente ciò che l&#39;AI produce. È corretto? È attuale? Utilizza i giusti endpoint, la giusta versione dell&#39;SDK, il giusto flusso di autenticazione? Se l&#39;AI sbaglia, è quello che i costruttori stanno ottenendo in questo momento.&lt;/p&gt;
&lt;p&gt;**2. Scelga le cinque pagine di documentazione più visitate e si chieda: quando è stata fatta l&#39;ultima revisione? Descrive ancora lo stato attuale del prodotto? Se non può rispondere con sicurezza, non può farlo nemmeno l&#39;AI. Questa è la soluzione più efficace per la maggior parte dei team.&lt;/p&gt;
&lt;p&gt;**3. Se non ha un file &lt;code&gt;/llms.txt&lt;/code&gt;, ne crei uno. Se il suo riferimento API è disponibile solo come HTML renderizzato, esporti la specifica OpenAPI grezza e la renda accessibile. Se i suoi documenti si trovano in un CMS che non produce un markdown pulito, è un problema che vale la pena risolvere subito.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Aggiunga date di revisione e metadati di freschezza.&lt;/strong&gt; Anche qualcosa di semplice, un campo &lt;code&gt;last-reviewed&lt;/code&gt; nel suo sistema di gestione dei contenuti, un ciclo di revisione obbligatorio per le pagine ad alto traffico. In questo modo, sia gli esseri umani che l&#39;intelligenza artificiale ricevono un segnale sull&#39;affidabilità dei contenuti. Strumenti come Rasepi possono &lt;a href=&quot;https://rasepi.com/features/freshness&quot;&gt;automatizzare questo aspetto con la scadenza forzata a livello di blocco&lt;/a&gt;, ma anche un processo manuale è meglio di niente.&lt;/p&gt;
&lt;h2&gt;Il cambiamento silenzioso nel modo in cui vengono rappresentati i prodotti&lt;/h2&gt;
&lt;p&gt;C&#39;è una conseguenza più ampia di tutto questo che vale la pena di sottolineare direttamente.&lt;/p&gt;
&lt;p&gt;La sua documentazione non è più solo un manuale di riferimento per gli sviluppatori. È il materiale di partenza che gli assistenti AI utilizzano per rappresentare il suo prodotto al mondo. Quando un costruttore chiede a Claude come utilizzare il suo prodotto, la risposta di Claude è modellata da tutto ciò che può trovare e analizzare nella sua documentazione.&lt;/p&gt;
&lt;p&gt;Buona documentazione, buona risposta. Aggiornata, ambigua, bloccata all&#39;interno di un HTML difficile da analizzare per un modello? Risposta peggiore o errata. Semplice.&lt;/p&gt;
&lt;p&gt;La qualità della risposta dell&#39;AI sul suo prodotto è ora un proxy diretto dell&#39;esperienza dello sviluppatore. La maggior parte delle aziende non la sta ancora trattando in questo modo.&lt;/p&gt;
&lt;p&gt;I team che sono all&#39;avanguardia, Stripe, Vercel, Cloudflare, Anthropic stessa, trattano la leggibilità dell&#39;AI come una preoccupazione di prima classe. Un requisito fondamentale che modella il modo in cui la documentazione viene scritta, strutturata e mantenuta. Non è una voce del backlog per il prossimo trimestre.&lt;/p&gt;
&lt;p&gt;Il costruttore che siede in Claude in questo momento, descrivendo ciò che vuole costruire, si aspetta un codice funzionante in pochi minuti. Potrebbe non visitare mai più un sito di documentazione. Ma l&#39;AI che li serve lo farà. Costantemente.&lt;/p&gt;
&lt;p&gt;Questa AI è ora il suo lettore più frequente. La domanda è se la sua documentazione è pronta per questo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La migliore strategia per l&#39;esperienza dello sviluppatore nel 2026 non è una conferenza o una guida rapida. Si tratta di assicurarsi che l&#39;IA faccia le cose per bene.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;*Questo post fa riferimento a ricerche e documentazione di prodotto disponibili pubblicamente. Le statistiche sono tratte da &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;GitHub&#39;s 2024 developer survey&lt;/a&gt;, &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;Stack Overflow 2024 Developer Survey&lt;/a&gt;, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;Index.dev&#39;s 2026 developer productivity report&lt;/a&gt;, &lt;a href=&quot;https://www.incremys.com/en/resources/blog/claude-statistics&quot;&gt;Incremys Claude statistics&lt;/a&gt; e &lt;a href=&quot;https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/&quot;&gt;Fortune&#39;s reporting on Anthropic&lt;/a&gt;. La specifica /llms.txt è mantenuta su &lt;a href=&quot;https://llmstxt.org/&quot;&gt;llmstxt.org&lt;/a&gt;. Il protocollo Model Context è documentato su &lt;a href=&quot;https://modelcontextprotocol.io/&quot;&gt;modelcontextprotocol.io&lt;/a&gt;.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="documentation" />
    <category term="developer-experience" />
  </entry>
  <entry>
    <title>Come funzionano effettivamente le traduzioni di Rasepi, e perché sembrano quelle del suo team</title>
    <link href="https://rasepi.com/it/blog/how-rasepi-translations-work-and-why-they-sound-like-your-team/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/how-rasepi-translations-work-and-why-they-sound-like-your-team/</id>
    <updated>2026-03-31T00:00:00Z</updated>
    <summary>Rasepi non si limita a tradurre la sua documentazione in altre lingue. Impara la sua terminologia, si adatta al suo tono e lascia che ogni versione linguistica viva la propria vita. Ecco come.</summary>
    <content type="html">&lt;p&gt;Se ha mai eseguito un documento attraverso Google Translate, o onestamente qualsiasi strumento di traduzione, conosce il risultato. Tecnicamente corretto. Tonalmente sbagliato. Il suo prodotto viene improvvisamente chiamato in modo diverso. La stenografia interna del suo team scompare. Un &amp;quot;tu&amp;quot; formale dove la sua azienda usa l&#39;informale, o il contrario.&lt;/p&gt;
&lt;p&gt;L&#39;output viene tradotto, ma non suona come lei.&lt;/p&gt;
&lt;p&gt;È per questo che ho costruito il sistema di traduzione di Rasepi. Non &amp;quot;possiamo tradurre la documentazione&amp;quot; (ormai tutti gli strumenti possono farlo), ma &amp;quot;possiamo tradurla in modo che suoni effettivamente come se l&#39;avesse scritta il nostro team&amp;quot;.&lt;/p&gt;
&lt;p&gt;La risposta è sì. E non richiede un team di traduttori professionisti per arrivarci.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/natural-translations.svg&quot; alt=&quot;Traduzioni che suonano come il suo team&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Viene tradotto solo ciò che è stato modificato&lt;/h2&gt;
&lt;p&gt;La maggior parte delle piattaforme di documentazione traduce intere pagine. Se cambia una frase, l&#39;intero documento viene ritradotto. Ogni lingua, ogni paragrafo, che sia cambiato o meno.&lt;/p&gt;
&lt;p&gt;Rasepi funziona in modo diverso. Tiene traccia di ogni paragrafo individualmente. Quando modifica una sezione di un documento di 20 sezioni, solo quella sezione viene ritradotta. Le altre 19, in tutte le lingue, rimangono esattamente come erano.&lt;/p&gt;
&lt;p&gt;Questo significa due cose:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;**Stiamo parlando del 94% in meno per le modifiche tipiche. La maggior parte degli aggiornamenti riguarda una o due sezioni, non l&#39;intera pagina.&lt;/li&gt;
&lt;li&gt;**Se il suo team tedesco ha approvato una traduzione la settimana scorsa, la modifica di un paragrafo non correlato in inglese non influirà sul testo approvato.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il sistema sa cosa è cambiato perché ogni paragrafo ha un&#39;identità unica e un&#39;impronta digitale del contenuto. Quando l&#39;impronta digitale cambia, quel paragrafo specifico viene segnalato per una nuova traduzione. Nient&#39;altro.&lt;/p&gt;
&lt;h2&gt;Il suo glossario, la sua terminologia&lt;/h2&gt;
&lt;p&gt;Ecco dove la cosa si fa interessante.&lt;/p&gt;
&lt;p&gt;Ogni azienda ha il proprio vocabolario. &amp;quot;Sprint Review&amp;quot; potrebbe rimanere come &amp;quot;Sprint Review&amp;quot; nei documenti in tedesco, perché il team di Berlino usa il termine inglese. Oppure potrebbe diventare &amp;quot;Sprint-Überprüfung&amp;quot; perché il team di Monaco preferisce la versione tedesca. &amp;quot;Base di conoscenza&amp;quot; potrebbe essere &amp;quot;Wissensdatenbank&amp;quot; o &amp;quot;Knowledge Base&amp;quot; o qualcosa di completamente diverso coniato internamente dal suo team.&lt;/p&gt;
&lt;p&gt;Rasepi le consente di creare un glossario per ogni lingua. In pratica, un elenco di termini e delle loro traduzioni approvate. Quando un paragrafo viene tradotto, il sistema controlla prima il suo glossario. Ogni termine del suo elenco viene tradotto esattamente nel modo in cui lei lo ha definito. Ogni volta. In ogni documento.&lt;/p&gt;
&lt;p&gt;Può gestire il suo glossario direttamente in Rasepi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aggiungere termini uno per uno&lt;/strong&gt; man mano che nota incongruenze&lt;/li&gt;
&lt;li&gt;Importare un CSV** se dispone già di un elenco terminologico da un altro sistema.&lt;/li&gt;
&lt;li&gt;Esportare il suo glossario** per condividerlo con traduttori esterni o altri strumenti.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il glossario funziona per coppia di lingue. Il suo glossario inglese-tedesco è separato da quello inglese-francese. Questo è importante perché lo stesso termine inglese potrebbe richiedere un trattamento diverso nelle varie lingue. &amp;quot;Sprint Review&amp;quot; potrebbe rimanere inglese in tedesco ma essere tradotto in giapponese.&lt;/p&gt;
&lt;p&gt;Quando aggiorna il glossario, la modifica ha effetto la volta successiva che un paragrafo viene tradotto in quella lingua. Non c&#39;è bisogno di ritradurre tutto manualmente. Il successivo ciclo di editing naturale lo raccoglie.&lt;/p&gt;
&lt;h2&gt;Regole di stile: fare in modo che le traduzioni sembrino scritte da lei.&lt;/h2&gt;
&lt;p&gt;I glossari gestiscono le singole parole. Ma una traduzione può utilizzare tutti i termini giusti e sembrare comunque sbagliata. Tono sbagliato. Date nel formato sbagliato. Numeri con il separatore sbagliato. Simboli di valuta nel posto sbagliato.&lt;/p&gt;
&lt;p&gt;Ecco a cosa servono le regole di stile.&lt;/p&gt;
&lt;p&gt;Per ogni lingua, può impostare una serie di regole che controllano la forma delle traduzioni:&lt;/p&gt;
&lt;h3&gt;Convenzioni di formattazione&lt;/h3&gt;
&lt;p&gt;Questi sono i dettagli che fanno sembrare un documento nativo piuttosto che &amp;quot;ovviamente tradotto dall&#39;inglese&amp;quot;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Formattazione della data e dell&#39;ora.&lt;/strong&gt; Orologio a 24 ore per il tedesco, AM/PM per l&#39;inglese e altro ancora.&lt;/li&gt;
&lt;li&gt;Formattazione dei numeri.** Virgola come separatore decimale in tedesco (3,14 invece di 3,14), punto per le migliaia&lt;/li&gt;
&lt;li&gt;Regole di punteggiatura.** Formattazione del titolo accademico, stili delle virgolette e altre convenzioni regionali.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scelga lei le convenzioni che corrispondono agli standard della sua azienda. Rasepi le applica a tutte le traduzioni in quella lingua, in tutti i documenti.&lt;/p&gt;
&lt;h3&gt;Istruzioni personalizzate&lt;/h3&gt;
&lt;p&gt;Qui le cose si fanno davvero potenti. Le istruzioni personalizzate sono direttive in linguaggio semplice che indicano al motore di traduzione come gestire il suo contenuto. Le scrive in frasi normali e il motore le segue.&lt;/p&gt;
&lt;p&gt;Alcuni esempi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Utilizzi un tono amichevole e diplomatico &amp;quot;&lt;/em&gt; per un&#39;azienda che desidera una documentazione accessibile.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Utilizzi sempre la forma formale &#39;Sie&#39;, mai &#39;du&#39;&amp;quot;&lt;/em&gt; per una comunicazione professionale in tedesco.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Utilizzi l&#39;ortografia inglese britannica: colore, organizzazione, licenza &amp;quot;&lt;/em&gt; quando il suo pubblico anglofono risiede nel Regno Unito.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Inserisca i simboli di valuta dopo l&#39;importo numerico &amp;quot;&lt;/em&gt; per adeguarsi alle convenzioni europee.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Quando descrive gli endpoint API, utilizzi uno stato d&#39;animo imperativo &amp;quot;&lt;/em&gt; per i documenti tecnici che devono essere diretti.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Può aggiungere fino a 200 istruzioni personalizzate per lingua. Esse lavorano insieme al suo glossario e alle regole di formattazione, e il motore di traduzione le considera tutte insieme in ogni traduzione.&lt;/p&gt;
&lt;h3&gt;Formalità&lt;/h3&gt;
&lt;p&gt;Il tedesco ha &amp;quot;du&amp;quot; e &amp;quot;Sie&amp;quot;. Il francese ha &amp;quot;tu&amp;quot; e &amp;quot;vous&amp;quot;. Il giapponese ha molteplici livelli di cortesia. Anche le lingue che non hanno pronomi formali/informali evidenti hanno differenze tonali importanti.&lt;/p&gt;
&lt;p&gt;Rasepi le permette di impostare il livello di formalità per ogni lingua. Una volta configurato, ogni paragrafo tradotto corrisponde a quel tono. Se la sua azienda si rivolge ai lettori in modo formale in francese (&amp;quot;vous&amp;quot;) ma informale in tedesco (&amp;quot;du&amp;quot;), ogni traduzione farà esattamente così.&lt;/p&gt;
&lt;h3&gt;Tutto funziona insieme&lt;/h3&gt;
&lt;p&gt;Ecco cosa conta: i termini del glossario, le convenzioni di formattazione, le istruzioni personalizzate e le impostazioni di formalità si applicano a ogni traduzione allo stesso tempo. Non deve scegliere l&#39;uno o l&#39;altro. Li imposta tutti una volta sola, e ogni paragrafo che viene tradotto segue lo stesso insieme di regole.&lt;/p&gt;
&lt;p&gt;Il risultato sono traduzioni che si leggono come se le avesse scritte qualcuno del suo team locale. Non come una macchina che ha tradotto ogni frase senza sapere nulla della sua azienda.&lt;/p&gt;
&lt;h2&gt;Ogni lingua può avere il proprio contenuto&lt;/h2&gt;
&lt;p&gt;Questa è la caratteristica che sorprende di più le persone.&lt;/p&gt;
&lt;p&gt;In Rasepi, un documento tradotto non è una copia bloccata dell&#39;originale. Ogni versione linguistica può avere contenuti che esistono solo in quella lingua.&lt;/p&gt;
&lt;p&gt;**Perché questo è importante?&lt;/p&gt;
&lt;p&gt;Perché mercati diversi hanno bisogno di cose diverse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La sua documentazione tedesca potrebbe aver bisogno di una sezione sulla conformità al DSGVO (GDPR) che non si applica alla versione USA.&lt;/li&gt;
&lt;li&gt;Il suo team giapponese potrebbe aver bisogno di una nota sugli strumenti locali che nessun altro utilizza.&lt;/li&gt;
&lt;li&gt;Il suo ufficio in Brasile potrebbe aver bisogno di un contesto sulle normative fiscali regionali.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nella maggior parte degli strumenti di traduzione, l&#39;aggiunta di contenuti a una versione linguistica significa che questi vengono sovrascritti la volta successiva che qualcuno ritraduce dall&#39;inglese. I team lo capiscono subito e smettono di aggiungere contenuti locali. Creano documenti ombra in Notion o Slack o da qualche altra parte, e ora avete due sistemi di cui nessuno si fida pienamente.&lt;/p&gt;
&lt;p&gt;In Rasepi, i contenuti unici sono contrassegnati come appartenenti a quella lingua. Non viene mai sovrascritto da una ritraduzione. Non viene mai cancellato quando la fonte inglese cambia. Vive accanto al contenuto tradotto come parte naturale del documento.&lt;/p&gt;
&lt;p&gt;Lo stesso vale per la struttura. Se i suoi traduttori giapponesi preferiscono gli elenchi numerati mentre la versione inglese utilizza i punti (una convenzione comune nella scrittura tecnica giapponese), possono cambiare il formato. Rasepi conserva questa scelta negli aggiornamenti futuri.&lt;/p&gt;
&lt;p&gt;Ogni versione linguistica è un documento di prima classe, non uno specchio di sola lettura.&lt;/p&gt;
&lt;h2&gt;Automatico e umano: lavorano insieme&lt;/h2&gt;
&lt;p&gt;Rasepi non la costringe a scegliere tra traduzione automatica e traduzione umana. Le supporta entrambe e conosce la differenza.&lt;/p&gt;
&lt;p&gt;Quando un paragrafo è tradotto a macchina e la fonte cambia, Rasepi lo ritraduce automaticamente. Non è necessario l&#39;intervento umano. Il glossario e le regole di stile mantengono la coerenza.&lt;/p&gt;
&lt;p&gt;Quando un paragrafo è stato modificato manualmente da un traduttore umano, che magari lo ha riscritto per una sfumatura culturale o ha aggiunto un contesto che la macchina non avrebbe colto, Rasepi rispetta quel lavoro. Se la fonte cambia, il sistema segnala il paragrafo come da rivedere, ma &lt;strong&gt;non sovrascrive mai silenziosamente le modifiche umane&lt;/strong&gt;. Il traduttore vede cosa è cambiato nella fonte e decide come aggiornare la propria versione.&lt;/p&gt;
&lt;p&gt;Ciò significa che la qualità della sua traduzione migliora nel tempo. La traduzione automatica gestisce il grosso. I traduttori umani si concentrano sui paragrafi che necessitano di un tocco umano. E nessuno dei due si intromette nel lavoro dell&#39;altro.&lt;/p&gt;
&lt;h2&gt;Due modalità: sempre attuale o traduzione su richiesta&lt;/h2&gt;
&lt;p&gt;Per ogni lingua, può scegliere quando effettuare le traduzioni:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ogni volta che qualcuno salva il documento di origine, i paragrafi modificati vengono ritradotti immediatamente. Ideale per le sue lingue più importanti, dove i lettori si aspettano un&#39;accuratezza al minuto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tradurre al momento della visualizzazione.&lt;/strong&gt; I paragrafi modificati vengono segnalati ma non tradotti fino a quando qualcuno non apre effettivamente il documento in quella lingua. Ottimo per le lingue utilizzate meno frequentemente. Nessun costo di traduzione sprecato per contenuti che non vengono letti.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entrambe le modalità utilizzano lo stesso glossario, le stesse regole di stile e la stessa qualità. L&#39;unica differenza è la tempistica.&lt;/p&gt;
&lt;h2&gt;Come si presenta in pratica&lt;/h2&gt;
&lt;p&gt;Supponiamo che lei gestisca un&#39;azienda con team a Londra, Monaco, Parigi e Tokyo. La sua documentazione è scritta in inglese.&lt;/p&gt;
&lt;p&gt;Un product manager di Londra aggiorna la guida alla distribuzione. Una sezione riguarda una nuova fase CI/CD.&lt;/p&gt;
&lt;p&gt;Ecco cosa succede:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La sezione modificata viene ritradotta in pochi secondi. &amp;quot;Sprint Review&amp;quot; diventa &amp;quot;Sprint-Überprüfung&amp;quot; perché è nel suo glossario. Formale &amp;quot;Sie&amp;quot; perché questa è la sua impostazione di formalità. Le date nel formato 24 ore perché è la sua regola configurata. L&#39;istruzione personalizzata &amp;quot;usi un tono diretto e imperativo&amp;quot; modella il fraseggio. La sezione DSGVO aggiunta dal team di Monaco? Inalterata.&lt;/li&gt;
&lt;li&gt;Stessa sezione, ritradotta immediatamente. Formalità &amp;quot;Vous&amp;quot;. Applicazione dei termini del glossario francese. Simboli di valuta dopo il numero, secondo le sue istruzioni personalizzate. Il resto del documento rimane esattamente come l&#39;ufficio di Parigi lo ha revisionato l&#39;ultima volta.&lt;/li&gt;
&lt;li&gt;La sezione modificata viene contrassegnata come obsoleta. Quando qualcuno a Tokyo apre il documento, questo viene tradotto al volo. La formattazione personalizzata degli elenchi numerici viene conservata. La loro nota di tooling locale rimane al suo posto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una modifica. Tre lingue aggiornate. Zero ritraduzioni di documenti completi. Terminologia coerente, tono coerente e rispettoso delle aggiunte locali di ogni team.&lt;/p&gt;
&lt;h2&gt;Parlando di qualità linguistica&lt;/h2&gt;
&lt;p&gt;Il motore di traduzione che sta dietro a tutto questo è DeepL, la stessa tecnologia che alimenta la funzione &lt;strong&gt;Talk to Docs&lt;/strong&gt; di Rasepi. Può parlare alla sua documentazione e ricevere risposte ad alta voce. DeepL Voice gestisce l&#39;interazione vocale, il che significa che la stessa coerenza terminologica, le regole di stile e la qualità linguistica che ottiene nelle traduzioni scritte si applicano anche alle conversazioni vocali. I termini del suo glossario e le istruzioni personalizzate suonano bene sia che il suo team stia leggendo che ascoltando.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Le traduzioni che suonano come il suo team non sono un lusso. Per le aziende che operano in più lingue, sono la differenza tra la documentazione di cui ci si fida e quella su cui si lavora. Glossari, regole di stile, istruzioni personalizzate, ritraduzioni intelligenti e contenuti unici per lingua lo rendono possibile. Automaticamente, fin dal primo giorno.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;La sua documentazione deve suonare come il suo team in ogni lingua. Non come una macchina. Non come un&#39;altra azienda. Come lei.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://rasepi.com/#multilingual&quot;&gt;Vedere la pubblicazione multilingue in azione →&lt;/a&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="multilingual" />
    <category term="translation" />
    <category term="deepl" />
  </entry>
  <entry>
    <title>All&#39;interno del motore di traduzione: Glossari, regole di stile e ritraduzione intelligente</title>
    <link href="https://rasepi.com/it/blog/inside-the-translation-engine-glossaries-style-rules-and-smart-retranslation/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/inside-the-translation-engine-glossaries-style-rules-and-smart-retranslation/</id>
    <updated>2026-03-31T00:00:00Z</updated>
    <summary>Un approfondimento tecnico su come funziona effettivamente la pipeline di traduzione di Rasepi: risoluzione del glossario, regole di stile DeepL e istruzioni personalizzate, hashing dei contenuti e l&#39;integrazione che lega il tutto.</summary>
    <content type="html">&lt;p&gt;Il nostro &lt;a href=&quot;https://rasepi.com/it/blog/how-plugin-guardrail-e-pipeline-systems-work/&quot;&gt;post precedente sull&#39;architettura&lt;/a&gt; ha trattato i plugin, le action guard e il sistema di pipeline. Questo post approfondisce il motore di traduzione, la parte che credo renda Rasepi fondamentalmente diverso da ogni altra piattaforma di documentazione.&lt;/p&gt;
&lt;p&gt;Non il marketing che parla di tradurre paragrafi anziché pagine. Il codice vero e proprio. Come i glossari vengono risolti per tenant, come le regole di stile di DeepL e le istruzioni personalizzate modellano ogni traduzione, come l&#39;hashing dei contenuti guida il rilevamento degli stanti e come l&#39;orchestratore decide quali blocchi ritradurre.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/translation-engine-deep-dive.svg&quot; alt=&quot;Motore di traduzione: glossari, regole di stile e ritraduzione intelligente&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;La pipeline di traduzione&lt;/h2&gt;
&lt;p&gt;Quando un utente salva un documento, il sistema non si limita a ritradurre tutto. Esegue una sequenza piuttosto specifica:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Analizza il JSON di TipTap in singoli blocchi.&lt;/li&gt;
&lt;li&gt;Confronta gli hash dei contenuti per rilevare quali blocchi sono stati effettivamente modificati.&lt;/li&gt;
&lt;li&gt;Per i blocchi modificati, risolvere il glossario dell&#39;inquilino e l&#39;elenco delle regole di stile per la coppia di lingue.&lt;/li&gt;
&lt;li&gt;Applica le regole di stile, le istruzioni personalizzate e la formalità dalla configurazione del locatario.&lt;/li&gt;
&lt;li&gt;Invia solo i blocchi modificati a DeepL&lt;/li&gt;
&lt;li&gt;Aggiorna i blocchi di traduzione e sincronizza gli hash dei contenuti&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ogni fase è un servizio proprio con una propria interfaccia. Questo è importante perché ogni fase può essere sostituita da qualcos&#39;altro, un diverso fornitore di traduzioni, un diverso algoritmo di hashing, una diversa fonte di glossario.&lt;/p&gt;
&lt;h2&gt;Risoluzione del glossario: in base all&#39;inquilino, DeepL-sincronizzato&lt;/h2&gt;
&lt;p&gt;I glossari di DeepL hanno un vincolo che la maggior parte delle persone non conosce: **Non si può modificare un glossario DeepL. Qualsiasi modifica comporta la cancellazione del vecchio glossario e la creazione di uno nuovo.&lt;/p&gt;
&lt;p&gt;Rasepi gestisce questo aspetto trattando il database come fonte di verità e i glossari DeepL come artefatti di runtime da buttare. L&#39;entità &lt;code&gt;TenantGlossary&lt;/code&gt; memorizza tutto a livello locale:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantGlossary : ITenantScoped
{
    public Guid Id { get; set; }
    public Guid TenantId { get; set; }
    public string Name { get; set; }
    public string SourceLanguage { get; set; }     // e.g. &amp;quot;en&amp;quot;
    public string TargetLanguage { get; set; }     // e.g. &amp;quot;de&amp;quot;
    public string? DeepLGlossaryId { get; set; }   // Runtime DeepL ID
    public DateTime? LastSyncedAt { get; set; }
    public bool IsDirty { get; set; } = true;      // Triggers re-sync
    public ICollection&amp;lt;TenantGlossaryEntry&amp;gt; Entries { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando un utente aggiunge una voce di glossario, ad esempio la mappatura di &amp;quot;Sprint Review&amp;quot; in &amp;quot;Sprint-Überprüfung&amp;quot; per EN→DE, il record del database si aggiorna immediatamente e &lt;code&gt;IsDirty&lt;/code&gt; viene impostato su &lt;code&gt;true&lt;/code&gt;. Il glossario DeepL non viene ricreato subito. Viene ricreato pigramente, la prossima volta che una traduzione ne ha effettivamente bisogno.&lt;/p&gt;
&lt;h3&gt;Il flusso di sincronizzazione&lt;/h3&gt;
&lt;p&gt;Prima di ogni chiamata di traduzione, il sistema risolve il glossario:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;string?&amp;gt; GetOrSyncDeepLGlossaryIdAsync(
    string sourceLanguage, string targetLanguage,
    CancellationToken ct = default)
{
    var glossary = await _db.TenantGlossaries
        .Include(g =&amp;gt; g.Entries)
        .FirstOrDefaultAsync(g =&amp;gt;
            g.SourceLanguage == sourceLanguage &amp;amp;&amp;amp;
            g.TargetLanguage == targetLanguage, ct);

    if (glossary is null || glossary.Entries.Count == 0)
        return null;

    if (!glossary.IsDirty &amp;amp;&amp;amp; glossary.DeepLGlossaryId is not null)
        return glossary.DeepLGlossaryId;

    // Dirty - delete old, create new
    if (glossary.DeepLGlossaryId is not null)
        await _deepL.DeleteGlossaryAsync(glossary.DeepLGlossaryId);

    var entries = glossary.Entries
        .ToDictionary(e =&amp;gt; e.SourceTerm, e =&amp;gt; e.TargetTerm);

    var deepLGlossary = await _deepL.CreateGlossaryAsync(
        $&amp;quot;rasepi-{glossary.Id}&amp;quot;,
        glossary.SourceLanguage,
        glossary.TargetLanguage,
        entries);

    glossary.DeepLGlossaryId = deepLGlossary.GlossaryId;
    glossary.IsDirty = false;
    glossary.LastSyncedAt = DateTime.UtcNow;
    await _db.SaveChangesAsync(ct);

    return glossary.DeepLGlossaryId;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tre cose da notare qui:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sincronizzazione pigra.&lt;/strong&gt; Intercettiamo l&#39;API DeepL solo quando è effettivamente necessaria una traduzione. La modifica in blocco delle voci del glossario non comporta decine di chiamate all&#39;API.&lt;/li&gt;
&lt;li&gt;**La query passa attraverso i filtri della query globale EF, quindi &lt;code&gt;TenantGlossaries&lt;/code&gt; è automaticamente individuato. Le voci del glossario dell&#39;inquilino A non si riversano mai nelle traduzioni dell&#39;inquilino B.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un glossario per coppia di lingue.&lt;/strong&gt; DeepL lo impone comunque. Un glossario EN→DE, un glossario EN→FR e così via. La coppia &lt;code&gt;(SourceLanguage, TargetLanguage)&lt;/code&gt; è unica per inquilino.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Voci del glossario&lt;/h3&gt;
&lt;p&gt;Le singole voci sono solo mappature di termini:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CODICEBLOCCO_2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;L&#39;API le offre un CRUD completo e l&#39;importazione/esportazione di CSV per una gestione massiva:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;POST   /api/admin/glossaries                       Create glossary
POST   /api/admin/glossaries/{id}/entries           Add term
PUT    /api/admin/glossaries/{id}/entries/{entryId}  Update term
DELETE /api/admin/glossaries/{id}/entries/{entryId}  Remove term
POST   /api/admin/glossaries/{id}/import            Import CSV
GET    /api/admin/glossaries/{id}/export            Export CSV
POST   /api/admin/glossaries/{id}/sync              Force DeepL sync
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;importazione CSV è utilissima per i team che migrano da sistemi di memoria di traduzione esistenti. Esporta i termini, li ripulisce, li importa in Rasepi e la successiva esecuzione della traduzione utilizza automaticamente il nuovo glossario.&lt;/p&gt;
&lt;h2&gt;Regole di stile, istruzioni personalizzate e formalità&lt;/h2&gt;
&lt;p&gt;I glossari gestiscono la terminologia. Ma la terminologia è solo la metà. Una traduzione può utilizzare tutte le parole giuste e tuttavia suonare male. Tono sbagliato, formato della data sbagliato, convenzioni di punteggiatura sbagliate.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;Style Rules API&lt;/strong&gt; di DeepL (v3) risolve questo problema. Può creare elenchi di regole di stile riutilizzabili che combinano due tipi di controlli:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Regole configurate&lt;/strong&gt;, convenzioni di formattazione predefinite per date, orari, punteggiatura, numeri e altro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Istruzioni personalizzate&lt;/strong&gt;, direttive di testo libero che modellano il tono, la formulazione e le convenzioni specifiche del dominio.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Rasepi crea e gestisce queste istruzioni per tenant, per lingua di destinazione. L&#39;entità &lt;code&gt;TenantStyleRuleList&lt;/code&gt; memorizza il DeepL &lt;code&gt;style_id&lt;/code&gt; insieme alle regole configurate e alle istruzioni personalizzate del tenant:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantStyleRuleList : ITenantScoped
{
    public Guid Id { get; set; }
    public Guid TenantId { get; set; }
    public string Name { get; set; }
    public string TargetLanguage { get; set; }      // e.g. &amp;quot;de&amp;quot;
    public string? DeepLStyleId { get; set; }       // Runtime DeepL style_id
    public string ConfiguredRulesJson { get; set; }  // Serialized configured rules
    public bool IsDirty { get; set; } = true;
    public DateTime? LastSyncedAt { get; set; }
    public ICollection&amp;lt;TenantCustomInstruction&amp;gt; CustomInstructions { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Creazione di elenchi di regole di stile&lt;/h3&gt;
&lt;p&gt;Quando un amministratore imposta le regole di traduzione per il tedesco, Rasepi chiama l&#39;API v3 di DeepL per creare l&#39;elenco di regole di stile. Ecco come appare:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;string&amp;gt; CreateOrSyncStyleRuleListAsync(
    TenantStyleRuleList ruleList, CancellationToken ct = default)
{
    if (!ruleList.IsDirty &amp;amp;&amp;amp; ruleList.DeepLStyleId is not null)
        return ruleList.DeepLStyleId;

    // DeepL style rule lists are mutable - we can update in place
    if (ruleList.DeepLStyleId is not null)
    {
        // Replace configured rules on existing list
        await _httpClient.PutAsJsonAsync(
            $&amp;quot;v3/style_rules/{ruleList.DeepLStyleId}/configured_rules&amp;quot;,
            JsonSerializer.Deserialize&amp;lt;JsonElement&amp;gt;(ruleList.ConfiguredRulesJson),
            ct);

        // Sync custom instructions
        await SyncCustomInstructionsAsync(ruleList, ct);

        ruleList.IsDirty = false;
        ruleList.LastSyncedAt = DateTime.UtcNow;
        return ruleList.DeepLStyleId;
    }

    // Create new style rule list
    var payload = new
    {
        name = $&amp;quot;rasepi-{ruleList.TenantId}-{ruleList.TargetLanguage}&amp;quot;,
        language = ruleList.TargetLanguage,
        configured_rules = JsonSerializer.Deserialize&amp;lt;JsonElement&amp;gt;(
            ruleList.ConfiguredRulesJson),
        custom_instructions = ruleList.CustomInstructions.Select(ci =&amp;gt; new
        {
            label = ci.Label,
            prompt = ci.Prompt,
            source_language = ci.SourceLanguage
        })
    };

    var response = await _httpClient.PostAsJsonAsync(&amp;quot;v3/style_rules&amp;quot;, payload, ct);
    var result = await response.Content.ReadFromJsonAsync&amp;lt;StyleRuleResponse&amp;gt;(ct);

    ruleList.DeepLStyleId = result.StyleId;
    ruleList.IsDirty = false;
    ruleList.LastSyncedAt = DateTime.UtcNow;
    await _db.SaveChangesAsync(ct);

    return ruleList.DeepLStyleId;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A differenza dei glossari, gli elenchi di regole di stile di DeepL sono &lt;strong&gt;mutabili&lt;/strong&gt;. Può sostituire le regole configurate sul posto con &lt;code&gt;PUT /v3/style_rules/{style_id}/configured_rules&lt;/code&gt;, e le istruzioni personalizzate possono essere aggiunte, aggiornate o eliminate individualmente. Molto più amichevole per il perfezionamento iterativo.&lt;/p&gt;
&lt;h3&gt;Come appaiono le regole configurate&lt;/h3&gt;
&lt;p&gt;Le regole configurate coprono le convenzioni di formattazione che variano in base alla lingua o alle preferenze aziendali. Cose come:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;dates_and_times&amp;quot;: {
    &amp;quot;time_format&amp;quot;: &amp;quot;use_24_hour_clock&amp;quot;,
    &amp;quot;calendar_era&amp;quot;: &amp;quot;use_bc_and_ad&amp;quot;
  },
  &amp;quot;punctuation&amp;quot;: {
    &amp;quot;periods_in_academic_degrees&amp;quot;: &amp;quot;do_not_use&amp;quot;
  },
  &amp;quot;numbers&amp;quot;: {
    &amp;quot;decimal_separator&amp;quot;: &amp;quot;use_comma&amp;quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sembrano banali, ma si sommano velocemente. Un documento tedesco che utilizza il formato orario AM/PM e i decimali separati da un periodo, viene letto come &amp;quot;tradotto dall&#39;inglese&amp;quot; da un lettore tedesco. L&#39;impostazione di &lt;code&gt;use_24_hour_clock&lt;/code&gt; e &lt;code&gt;use_comma&lt;/code&gt; per i separatori decimali in tutte le traduzioni in tedesco elimina immediatamente questo problema.&lt;/p&gt;
&lt;h3&gt;Istruzioni personalizzate: questa è la vera potenza&lt;/h3&gt;
&lt;p&gt;Le istruzioni personalizzate sono direttive di testo libero, fino a 200 per elenco di regole di stile, ciascuna di 300 caratteri. In pratica, lei dice a DeepL come modellare la traduzione in un linguaggio semplice:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantCustomInstruction
{
    public Guid Id { get; set; }
    public Guid StyleRuleListId { get; set; }
    public string Label { get; set; }              // e.g. &amp;quot;Tone instruction&amp;quot;
    public string Prompt { get; set; }             // e.g. &amp;quot;Use a friendly, diplomatic tone&amp;quot;
    public string? SourceLanguage { get; set; }    // Optional source lang filter
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esempi reali dai nostri inquilini:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Use a friendly, diplomatic tone&amp;quot;&lt;/code&gt; per una startup che desidera documenti accessibili&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Always use &#39;Sie&#39; form, never &#39;du&#39;&amp;quot;&lt;/code&gt; per uno studio legale tedesco&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Translate &#39;deployment&#39; as &#39;Bereitstellung&#39;, never &#39;Deployment&#39;&amp;quot;&lt;/code&gt; per i termini che necessitano di una gestione dipendente dal contesto, al di là della semplice mappatura del glossario&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Use British English spelling (colour, organisation, licence)&amp;quot;&lt;/code&gt; per le aziende con sede nel Regno Unito che traducono tra varianti dell&#39;inglese&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CODEBLOCCO_30&lt;/strong&gt; per corrispondere alle convenzioni europee&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le istruzioni personalizzate sono davvero potenti per le convenzioni specifiche del dominio che non si adattano alle voci del glossario. Un glossario mappa un termine ad un altro. Un&#39;istruzione personalizzata può dire: &amp;quot;Quando traduce i documenti API, usi l&#39;umore imperativo invece della voce passiva&amp;quot;. Si tratta di un tipo di controllo completamente diverso.&lt;/p&gt;
&lt;h3&gt;Formalità&lt;/h3&gt;
&lt;p&gt;Il parametro &lt;code&gt;formality&lt;/code&gt; di DeepL (&lt;code&gt;default&lt;/code&gt;, &lt;code&gt;more&lt;/code&gt;, &lt;code&gt;less&lt;/code&gt;, &lt;code&gt;prefer_more&lt;/code&gt;, &lt;code&gt;prefer_less&lt;/code&gt;) è ancora disponibile come controllo separato insieme alle regole di stile. Tedesco &amp;quot;du&amp;quot; contro &amp;quot;Sie&amp;quot;, francese &amp;quot;tu&amp;quot; contro &amp;quot;vous&amp;quot;, livelli di cortesia giapponese. Questi sono impostati per ogni lingua di inquilino tramite &lt;code&gt;TenantLanguageConfig&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantLanguageConfig : ITenantScoped
{
    public string LanguageCode { get; set; }
    public string DisplayName { get; set; }
    public bool IsEnabled { get; set; }
    public TranslationTrigger Trigger { get; set; }
    public string? Formality { get; set; }         // &amp;quot;more&amp;quot;, &amp;quot;less&amp;quot;, &amp;quot;prefer_more&amp;quot;, etc.
    public string? StyleRuleListId { get; set; }   // Links to TenantStyleRuleList
    public string? TranslationProvider { get; set; }
    public int SortOrder { get; set; }
    public bool IsDefault { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Formalità, regole di stile e glossari si compongono. Una singola chiamata di traduzione può contenere tutte e tre le cose:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var glossaryId = await GetOrSyncDeepLGlossaryIdAsync(sourceLang, targetLang, ct);
var styleId = await GetOrSyncStyleRuleListAsync(targetLang, ct);
var formality = tenantLanguageConfig.Formality ?? &amp;quot;default&amp;quot;;

// Build the v2/translate request payload
var payload = new
{
    text = new[] { blockContent },
    source_lang = NormalizeLanguageCode(sourceLang),
    target_lang = NormalizeLanguageCode(targetLang),
    glossary_id = glossaryId,
    style_id = styleId,
    formality = formality,
    preserve_formatting = true,
    context = surroundingContext,  // Adjacent blocks, not billed
    model_type = &amp;quot;quality_optimized&amp;quot;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Due cose da notare qui:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Il parametro &lt;code&gt;context&lt;/code&gt;.&lt;/strong&gt; Passiamo i blocchi adiacenti come contesto per migliorare la qualità della traduzione. DeepL lo utilizza per risolvere le ambiguità, ma non traduce né fattura per questo. Un paragrafo sulle &amp;quot;celle&amp;quot; si traduce in modo diverso quando il contesto circostante è un documento di biologia rispetto ad un manuale di foglio elettronico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selezione del modello.&lt;/strong&gt; Qualsiasi richiesta con &lt;code&gt;style_id&lt;/code&gt; o &lt;code&gt;custom_instructions&lt;/code&gt; utilizza automaticamente il modello &lt;code&gt;quality_optimized&lt;/code&gt; di DeepL. Questo è il livello di qualità più alto. Non è possibile combinarli con &lt;code&gt;latency_optimized&lt;/code&gt;, e questo è un vincolo intenzionale di DeepL. La personalizzazione dello stile richiede il modello completo.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Perché questo è importante più di quanto si pensi&lt;/h3&gt;
&lt;p&gt;Immagini un&#39;azienda che scrive documenti interni in tedesco con l&#39;informale &amp;quot;du&amp;quot; che improvvisamente passa al formale &amp;quot;Sie&amp;quot; in una sezione tradotta. Nel migliore dei casi sembra incoerente, nel peggiore poco professionale. La formalità gestisce questo aspetto. Ma la formalità, da sola, non può catturare un documento che utilizza i timestamp AM/PM quando l&#39;ufficio tedesco usa il formato 24 ore, o che mette il simbolo della valuta prima del numero invece che dopo.&lt;/p&gt;
&lt;p&gt;Tutti questi elementi (regole di stile, istruzioni personalizzate, formalità, glossari) producono traduzioni che sembrano scritte da qualcuno del suo team. Non come se fossero prodotte da una macchina che non sa dell&#39;esistenza della sua azienda.&lt;/p&gt;
&lt;h2&gt;Il livello di servizio DeepL&lt;/h2&gt;
&lt;p&gt;Tutte le comunicazioni di DeepL passano attraverso &lt;code&gt;IDeepLService&lt;/code&gt;. Questo strato avvolge l&#39;SDK ufficiale di DeepL .NET e gestisce le chiamate API v3 per le regole di stile:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IDeepLService
{
    // Text translation (v2)
    Task&amp;lt;TextResult&amp;gt; TranslateTextAsync(
        string text, string sourceLanguage, string targetLanguage,
        string? options = null);

    Task&amp;lt;TextResult[]&amp;gt; TranslateTextBatchAsync(
        IEnumerable&amp;lt;string&amp;gt; texts, string sourceLanguage,
        string targetLanguage, string? options = null);

    // Glossary management (v2)
    Task&amp;lt;GlossaryInfo&amp;gt; CreateGlossaryAsync(
        string name, string sourceLang, string targetLang,
        Dictionary&amp;lt;string, string&amp;gt; entries);
    Task DeleteGlossaryAsync(string glossaryId);
    Task&amp;lt;GlossaryInfo&amp;gt; GetGlossaryAsync(string glossaryId);
    Task&amp;lt;GlossaryInfo[]&amp;gt; ListGlossariesAsync();
    Task&amp;lt;Dictionary&amp;lt;string, string&amp;gt;&amp;gt; GetGlossaryEntriesAsync(
        string glossaryId);

    // Style rules (v3)
    Task&amp;lt;StyleRuleResponse&amp;gt; CreateStyleRuleListAsync(
        string name, string language,
        JsonElement configuredRules,
        IEnumerable&amp;lt;CustomInstructionRequest&amp;gt; customInstructions);
    Task ReplaceConfiguredRulesAsync(
        string styleId, JsonElement configuredRules);
    Task&amp;lt;CustomInstructionResponse&amp;gt; AddCustomInstructionAsync(
        string styleId, string label, string prompt,
        string? sourceLanguage = null);
    Task DeleteCustomInstructionAsync(
        string styleId, string instructionId);
    Task DeleteStyleRuleListAsync(string styleId);

    // Usage tracking
    Task&amp;lt;Usage&amp;gt; GetUsageAsync();
    Task&amp;lt;Language[]&amp;gt; GetSourceLanguagesAsync();
    Task&amp;lt;Language[]&amp;gt; GetTargetLanguagesAsync();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;implementazione gestisce la normalizzazione del codice linguistico. DeepL richiede &lt;code&gt;EN-US&lt;/code&gt; o &lt;code&gt;EN-GB&lt;/code&gt; invece di &lt;code&gt;en&lt;/code&gt; nudo, e &lt;code&gt;PT-PT&lt;/code&gt; o &lt;code&gt;PT-BR&lt;/code&gt; invece di &lt;code&gt;pt&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;private static string NormalizeLanguageCode(string code)
    =&amp;gt; code.ToLower() switch
    {
        &amp;quot;en&amp;quot; =&amp;gt; &amp;quot;EN-US&amp;quot;,
        &amp;quot;pt&amp;quot; =&amp;gt; &amp;quot;PT-PT&amp;quot;,
        _ =&amp;gt; code.ToUpper()
    };
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La traduzione batch utilizza un chunking di 50 elementi per rimanere entro i limiti dell&#39;API di DeepL, massimizzando al contempo il throughput:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;TranslationBatchResult&amp;gt; TranslateBatchAsync(
    Dictionary&amp;lt;string, string&amp;gt; texts,
    string sourceLanguage, string targetLanguage)
{
    var translations = new Dictionary&amp;lt;string, string&amp;gt;();
    long totalChars = 0;

    foreach (var chunk in texts.Chunk(50))
    {
        var results = await _deepL.TranslateTextBatchAsync(
            chunk.Select(kv =&amp;gt; kv.Value),
            sourceLanguage, targetLanguage);

        for (int i = 0; i &amp;lt; chunk.Length; i++)
        {
            translations[chunk[i].Key] = results[i].Text;
            totalChars += chunk[i].Value.Length;
        }
    }

    return new TranslationBatchResult
    {
        Translations = translations,
        BilledCharacters = totalChars
    };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dato che inviamo solo blocchi di dati, non interi documenti, un tipico batch di traduzione per una singola redazione contiene 1-3 blocchi invece di 40+. Ecco da dove deriva la riduzione dei costi del 94%.&lt;/p&gt;
&lt;h2&gt;L&#39;orchestratore di traduzione&lt;/h2&gt;
&lt;p&gt;Il &lt;code&gt;TranslationOrchestrator&lt;/code&gt; decide cosa fare con ogni blocco quando il documento sorgente cambia. Esaminiamo l&#39;albero delle decisioni:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task OrchestrateTranslationAsync(
    Guid entryId, List&amp;lt;Guid&amp;gt; changedBlockIds,
    CancellationToken ct = default)
{
    var entry = await _db.Entries
        .FirstOrDefaultAsync(e =&amp;gt; e.Id == entryId, ct);

    var translations = await _db.EntryTranslations
        .Where(t =&amp;gt; t.EntryId == entryId)
        .ToListAsync(ct);

    foreach (var translation in translations)
    {
        var langConfig = await GetLanguageConfigAsync(
            translation.Language, ct);

        var translationBlocks = await _db.TranslationBlocks
            .Where(tb =&amp;gt; changedBlockIds.Contains(tb.SourceBlockId)
                      &amp;amp;&amp;amp; tb.Language == translation.Language)
            .ToListAsync(ct);

        foreach (var block in translationBlocks)
        {
            if (block.IsLocked || block.TranslatedById is not null)
            {
                // Human-edited or locked - mark stale, don&#39;t overwrite
                block.Status = TranslationStatus.Stale;
            }
            else if (langConfig.Trigger == TranslationTrigger.AlwaysTranslate)
            {
                // Machine-translated, auto mode - retranslate now
                await RetranslateBlockAsync(block, translation.Language, ct);
            }
            else
            {
                // TranslateOnFirstVisit - mark stale, translate later
                block.Status = TranslationStatus.Stale;
            }
        }
    }

    await _db.SaveChangesAsync(ct);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il punto chiave: **Se un traduttore ha modificato manualmente un blocco, magari aggiungendo un contesto culturale o riformulando per chiarezza, il sistema rispetta il suo lavoro. Contrassegna il blocco come obsoleto, in modo che il traduttore sappia che la fonte è cambiata, ma non sostituisce silenziosamente le sue modifiche.&lt;/p&gt;
&lt;p&gt;I blocchi tradotti a macchina con &lt;code&gt;AlwaysTranslate&lt;/code&gt; abilitato vengono ritradotti immediatamente. I blocchi tradotti a macchina con &lt;code&gt;TranslateOnFirstVisit&lt;/code&gt; sono contrassegnati come stantii e tradotti quando qualcuno apre effettivamente il documento in quella lingua.&lt;/p&gt;
&lt;h2&gt;Inneschi di traduzione: quando avvengono le traduzioni&lt;/h2&gt;
&lt;p&gt;Ogni lingua ha un &lt;code&gt;TranslationTrigger&lt;/code&gt; che controlla la tempistica:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public enum TranslationTrigger
{
    AlwaysTranslate,         // Translate on every save
    TranslateOnFirstVisit    // Translate when first opened in that language
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il &lt;code&gt;AlwaysTranslate&lt;/code&gt; è utile per le lingue ad alta priorità, dove vuole che le traduzioni siano immediatamente attuali. Francese per un&#39;azienda con una grande sede a Parigi. Tedesco per un&#39;azienda con sede a Monaco.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TranslateOnFirstVisit&lt;/code&gt; è utile per le lingue che sono occasionalmente necessarie ma che non valgono il costo API di mantenere sempre perfettamente aggiornate. Quando qualcuno apre il documento in quella lingua, i blocchi obsoleti vengono tradotti al volo.&lt;/p&gt;
&lt;p&gt;Entrambe le modalità utilizzano la stessa risoluzione del glossario, le stesse impostazioni di formalità e lo stesso hashing dei contenuti. L&#39;unica differenza è la tempistica.&lt;/p&gt;
&lt;h2&gt;Adattamento unico del contenuto e della struttura&lt;/h2&gt;
&lt;p&gt;È qui che l&#39;architettura dà i suoi frutti, al di là della semplice traduzione.&lt;/p&gt;
&lt;p&gt;Quando un traduttore tedesco aggiunge una sezione di conformità DSGVO che non esiste in inglese, la aggiunge come nuovo blocco nella versione tedesca. Quel blocco non ha &lt;code&gt;SourceBlockId&lt;/code&gt;, è contrassegnato come contenuto unico. Il sistema non lo invia mai per la ritraduzione, perché non esiste una fonte da cui tradurre. Esiste solo in tedesco.&lt;/p&gt;
&lt;p&gt;Quando un traduttore giapponese cambia un elenco puntato in un elenco numerato (una convenzione comune nella scrittura tecnica giapponese), il flag &lt;code&gt;IsStructureAdapted&lt;/code&gt; del blocco lo conserva per i futuri cicli di ritraduzione:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var translation = new TranslationBlock
{
    SourceBlockId = sourceBlockId,
    Language = targetLanguage,
    BlockType = translatedBlockType,
    SourceBlockType = sourceBlock.BlockType,
    IsStructureAdapted = translatedBlockType != sourceBlock.BlockType,
    StructureAdaptationNotes = &amp;quot;Numbered list preferred in JP technical docs&amp;quot;,
    SourceContentHash = sourceBlock.ContentHash,
    Status = TranslationStatus.UpToDate,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il flag &lt;code&gt;IsNoTranslate&lt;/code&gt; gestisce i contenuti che devono essere copiati alla lettera: blocchi di codice, URL, nomi di prodotti, notazioni matematiche. Il fornitore di traduzione li salta completamente.&lt;/p&gt;
&lt;h2&gt;Mettere tutto insieme&lt;/h2&gt;
&lt;p&gt;Vediamo il flusso completo. Un utente a Londra modifica un paragrafo nel documento sorgente inglese, e il suo ufficio di Monaco ha il tedesco impostato su &lt;code&gt;AlwaysTranslate&lt;/code&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;L&#39;utente salva.&lt;/strong&gt; TipTap invia JSON all&#39;API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estrazione dei blocchi e rilevamento delle modifiche.&lt;/strong&gt; &lt;code&gt;CreateBlocksFromDocumentAsync&lt;/code&gt; analizza JSON, ricalcola gli hash dei contenuti e confronta gli hash vecchi e nuovi per identificare i blocchi effettivamente modificati.&lt;/li&gt;
&lt;li&gt;**Trova il &lt;code&gt;EntryTranslation&lt;/code&gt; tedesco, controlla il blocco tedesco. È tradotto a macchina, non bloccato, non modificato dall&#39;uomo, quindi è idoneo per la ritraduzione.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurazione della traduzione caricata.&lt;/strong&gt; ID del glossario risolto tramite &lt;code&gt;GetOrSyncDeepLGlossaryIdAsync(&amp;quot;en&amp;quot;, &amp;quot;de&amp;quot;)&lt;/code&gt;, regole di stile tramite &lt;code&gt;GetOrSyncStyleRuleListAsync(&amp;quot;de&amp;quot;)&lt;/code&gt;, formalità impostata su &amp;quot;more&amp;quot; (formale &amp;quot;Sie&amp;quot;), blocchi adiacenti passati come contesto per la disambiguazione.&lt;/li&gt;
&lt;li&gt;Chiamata a &lt;strong&gt;DeepL.&lt;/strong&gt; Blocco singolo inviato con ID glossario, ID stile, formalità e contesto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggiornamento del blocco.&lt;/strong&gt; Contenuto tradotto memorizzato, &lt;code&gt;SourceContentHash&lt;/code&gt; sincronizzato, stato impostato su &lt;code&gt;UpToDate&lt;/code&gt;. Un blocco tradotto invece di 40+. I 39 blocchi rimanenti? Non sono stati toccati.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nel frattempo, il suo ufficio di Tokyo ha il giapponese impostato su &lt;code&gt;TranslateOnFirstVisit&lt;/code&gt;. La stessa modifica contrassegna il blocco di traduzione giapponese come &lt;code&gt;Stale&lt;/code&gt;. Quando qualcuno a Tokyo apre il documento, i passaggi 5-9 avvengono al volo. L&#39;adattamento della struttura (elenco numerato) viene conservato. I loro blocchi unici rimangono esattamente dove sono.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Credo che il motore di traduzione sia la parte di Rasepi che offre il valore più visibile. Traduzioni che utilizzano la sua terminologia, seguono le sue convenzioni di formattazione, obbediscono alle sue istruzioni personalizzate, corrispondono al suo tono, rispettano il lavoro dei suoi traduttori e costano una frazione di quanto costerebbe una ritraduzione di un documento completo. L&#39;architettura rende tutto questo automatico, e non si intromette quando l&#39;uomo vuole intervenire.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lo stesso motore di DeepL che alimenta le traduzioni scritte alimenta anche Talk to Docs, la nostra interfaccia di documentazione conversazionale, con DeepL Voice che gestisce l&#39;interazione parlata. Stessi glossari, stesse regole di stile, stessa formalità, stessa coerenza. Che il suo team legga la documentazione o ci parli, la qualità del linguaggio è identica.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.rasepi.com/&quot;&gt;Esplora l&#39;API di traduzione →&lt;/a&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="architecture" />
    <category term="translation" />
    <category term="deepl" />
  </entry>
  <entry>
    <title>Smettere di mantenere cinque copie dello stesso documento</title>
    <link href="https://rasepi.com/it/blog/stop-maintaining-five-copies-of-the-same-document/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/stop-maintaining-five-copies-of-the-same-document/</id>
    <updated>2026-03-31T00:00:00Z</updated>
    <summary>La maggior parte delle aziende ha onboarding_germania, onboarding_giappone, onboarding_brasile. In Rasepi, c&#39;è solo &#39;Onboarding&#39;. Un unico documento. Fasi condivise tradotte, fasi locali per lingua. Niente più copie che si allontanano.</summary>
    <content type="html">&lt;p&gt;Apra subito il wiki aziendale e cerchi &amp;quot;onboarding&amp;quot;. Quanti risultati ottiene?&lt;/p&gt;
&lt;p&gt;Se è un&#39;azienda globale, immagino che non sia uno solo. Probabilmente si tratta di qualcosa di simile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Onboarding Guide (EN)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CODICEBLOCCO_1&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CODICEBLOCCO_2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BLOCCO_3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BLOCCO_4&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cinque documenti. Tutti riguardano più o meno la stessa cosa. Tutti leggermente diversi. Tutti mantenuti da persone diverse con tempistiche diverse. Alcuni attuali, altri in ritardo di tre mesi, uno di cui nessuno è più sicuro.&lt;/p&gt;
&lt;p&gt;Questo è ciò che accade quando la piattaforma di documentazione non è in grado di gestire correttamente i contenuti multilingue. Si finisce per copiare l&#39;intero documento per ogni mercato, e ogni copia si allontana lentamente dalle altre.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/un-documento-tutte-le-lingue.svg&quot; alt=&quot;Un documento, ogni lingua&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;La trappola del copia-e-localizza&lt;/h2&gt;
&lt;p&gt;L&#39;inizio è abbastanza innocente. Avete un&#39;ottima guida all&#39;onboarding in inglese. L&#39;ufficio di Berlino ne ha bisogno in tedesco, quindi qualcuno la copia, la traduce e aggiunge le parti specifiche per la Germania: Formazione DSGVO, informazioni Betriebsrat, iscrizione all&#39;assicurazione sanitaria locale.&lt;/p&gt;
&lt;p&gt;Poi Tokyo ne ha bisogno. Copia di nuovo. Tradurre. Aggiunga le informazioni specifiche per il Giappone: registrazione hanko, procedura per il pass dei pendolari, guida al galateo in ufficio.&lt;/p&gt;
&lt;p&gt;São Paulo è il prossimo. Stessa cosa. Copiare, tradurre, aggiungere contenuti locali sui requisiti del CLT, sui buoni pasto e sui documenti fiscali.&lt;/p&gt;
&lt;p&gt;Ora ha quattro documenti. L&#39;originale inglese viene aggiornato regolarmente. La versione tedesca è stata aggiornata lo scorso trimestre. La versione giapponese... qualcuno pensa che Tanaka-san l&#39;abbia aggiornata in ottobre. La versione brasiliana è stata creata da un appaltatore che se n&#39;è andato e nessuno l&#39;ha più toccata.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ogni copia è un onere di manutenzione.&lt;/strong&gt; E ognuna di esse contiene un mix di contenuti condivisi (le cose che sono uguali dappertutto) e di contenuti locali (le cose specifiche di quel mercato). Ma la piattaforma non conosce la differenza. Si tratta solo di testo su una pagina.&lt;/p&gt;
&lt;p&gt;Quindi, quando qualcuno aggiorna la sezione della politica di sicurezza nell&#39;originale inglese, nessuno aggiorna le altre quattro. O peggio, qualcuno aggiorna quella tedesca ma non quella giapponese. Ora avete cinque documenti che dicono tutti cose leggermente diverse sulla stessa politica aziendale.&lt;/p&gt;
&lt;h2&gt;Il vero problema: i contenuti condivisi e quelli locali sono mescolati insieme&lt;/h2&gt;
&lt;p&gt;Il fatto è che la maggior parte di questi documenti sono identici al 70-80%. Le fasi di onboarding, l&#39;impostazione degli strumenti, le politiche di sicurezza, la sezione dei valori aziendali, l&#39;elenco di &amp;quot;chi contattare&amp;quot;. Tutto ciò è identico indipendentemente dal fatto che si trovi a Berlino, Tokyo o San Paolo.&lt;/p&gt;
&lt;p&gt;Gli aspetti locali rappresentano forse il 20-30% del documento. Requisiti specifici di conformità, vantaggi locali, processi regionali, contatti del team per quell&#39;ufficio.&lt;/p&gt;
&lt;p&gt;Ma quando tutto vive in un grande documento piatto per lingua, non c&#39;è modo di capire quali parti sono condivise e quali sono locali. Un aggiornamento del contenuto condiviso significa controllare e aggiornare manualmente ogni copia. E nessuno lo fa in modo coerente. Ecco perché le copie vanno alla deriva.&lt;/p&gt;
&lt;h2&gt;Un documento. Tutto qui.&lt;/h2&gt;
&lt;p&gt;In Rasepi, la guida all&#39;onboarding è un unico documento. Non uno per lingua. Uno.&lt;/p&gt;
&lt;p&gt;Il contenuto condiviso, quel 70-80% che è uguale ovunque, viene scritto una volta in inglese e tradotto automaticamente in tutte le lingue utilizzate dal suo team. Quando qualcuno aggiorna la sezione della politica di sicurezza in inglese, viene ritradotto in tedesco, giapponese, portoghese e francese in pochi secondi. Nessuna copia manuale. Niente &amp;quot;qualcuno dovrebbe aggiornare le altre versioni&amp;quot;.&lt;/p&gt;
&lt;p&gt;I contenuti locali vivono nella rispettiva versione linguistica. La sezione di formazione DSGVO esiste solo nella versione tedesca. Il processo hanko esiste solo nella versione giapponese. I requisiti CLT esistono solo nella versione portoghese. Queste sezioni sono contrassegnate come contenuto unico, appartengono a quella lingua e non vengono mai sovrascritte dalla ritraduzione.&lt;/p&gt;
&lt;p&gt;Abbiamo spiegato esattamente come funziona nel nostro post su [come funzionano le traduzioni Rasepi] (/it/blog/how-rasepi-translations-work-and-why-they-sound-like-your-team/). La versione breve: ogni paragrafo ha la propria identità. I paragrafi condivisi vengono tradotti e monitorati. I paragrafi unici appartengono alla loro lingua e nessun altro li tocca.&lt;/p&gt;
&lt;p&gt;Il risultato? La sua ricerca su wiki di &amp;quot;onboarding&amp;quot; restituisce un solo risultato. Solo &amp;quot;Onboarding&amp;quot;. Se lo apre in inglese, vedrà la versione inglese con tutti i contenuti condivisi. Aprendolo in tedesco, vedrà lo stesso contenuto condiviso in tedesco più le sezioni specifiche per la Germania. Lo apra in giapponese, lo stesso contenuto condiviso in giapponese più le sezioni specifiche per il Giappone.&lt;/p&gt;
&lt;p&gt;Un documento. Non cinque. Non cinque documenti che marciscono lentamente a velocità diverse.&lt;/p&gt;
&lt;h2&gt;Cosa cambia in realtà&lt;/h2&gt;
&lt;p&gt;Non è solo più ordinato. Cambia radicalmente il modo in cui la sua documentazione funziona in tutti gli uffici.&lt;/p&gt;
&lt;h3&gt;Gli aggiornamenti arrivano a tutti&lt;/h3&gt;
&lt;p&gt;Quando aggiorna la parte condivisa della guida all&#39;onboarding, viene aggiornata in tutte le lingue. Non alla fine, non dopo che qualcuno si ricorda di farlo. Automaticamente. Il paragrafo modificato viene ritradotto. Tutto il resto rimane esattamente dov&#39;era.&lt;/p&gt;
&lt;p&gt;Ciò significa che l&#39;ufficio di Tokyo legge la stessa politica aziendale dell&#39;ufficio di Londra. Non la versione di sei mesi fa che nessuno ha aggiornato.&lt;/p&gt;
&lt;h3&gt;I team locali sono proprietari dei loro contenuti locali&lt;/h3&gt;
&lt;p&gt;Il suo team di Monaco può aggiungere una sezione sullo sconto della palestra locale senza preoccuparsi che venga cancellata dal prossimo aggiornamento in inglese. Il loro contenuto unico è loro. Rimane nella versione tedesca, non influenzato da eventuali modifiche alla fonte inglese.&lt;/p&gt;
&lt;p&gt;Lo stesso vale per tutti gli altri uffici. I contenuti locali sono veramente locali. Non interferisce con il contenuto condiviso, e il contenuto condiviso non interferisce con esso.&lt;/p&gt;
&lt;h3&gt;I nuovi assunti ricevono le informazioni giuste&lt;/h3&gt;
&lt;p&gt;Un nuovo assunto a San Paolo apre la guida all&#39;onboarding e vede tutto ciò di cui ha bisogno. Le sezioni condivise (strumenti, sicurezza, valori) sono in portoghese. Le sezioni specifiche per il Brasile (CLT, documenti fiscali, buoni pasto) sono lì accanto. Un unico documento, tutto nella loro lingua, niente di mancante, niente di obsoleto.&lt;/p&gt;
&lt;p&gt;Non hanno bisogno di sapere che altri tre uffici hanno sezioni locali diverse. Vedono solo la loro versione. Pulita e completa.&lt;/p&gt;
&lt;h3&gt;Il suo numero di pagine diminuisce&lt;/h3&gt;
&lt;p&gt;Questo è il semplice calcolo. Se ha 50 documenti chiave e li mantiene in 5 lingue con l&#39;approccio copia-e-localizza, ha 250 documenti. In Rasepi, ne ha 50. Ognuno con versioni linguistiche che condividono contenuti comuni e mantengono le proprie sezioni locali.&lt;/p&gt;
&lt;p&gt;250 documenti da mantenere contro 50. Si tratta di 200 pagine di spese generali di manutenzione che scompaiono.&lt;/p&gt;
&lt;h2&gt;Non si tratta solo di onboarding&lt;/h2&gt;
&lt;p&gt;L&#39;onboarding è l&#39;esempio più ovvio, perché ogni azienda globale ha questo problema. Ma lo stesso schema si presenta ovunque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Guide di distribuzione.&lt;/strong&gt; I passaggi fondamentali sono gli stessi, ma il team di Berlino utilizza un server di staging locale e Tokyo ha un processo di approvazione diverso.&lt;/li&gt;
&lt;li&gt;Documentazione sulla conformità.** Sezione GDPR per l&#39;Europa, LGPD per il Brasile, APPI per il Giappone. Tutti nello stesso documento, ognuno dei quali appare solo quando è rilevante.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Benefici e politiche HR.&lt;/strong&gt; La politica di congedo parentale è diversa in ogni Paese. I valori aziendali sono gli stessi ovunque.&lt;/li&gt;
&lt;li&gt;Il prodotto funziona allo stesso modo ovunque, ma i metodi di pagamento, gli orari di assistenza e le normative regionali variano.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ognuno di questi è un documento che la maggior parte delle aziende conserva in copie separate per ogni mercato. E ognuno di essi potrebbe essere un unico documento con contenuti condivisi e locali.&lt;/p&gt;
&lt;h2&gt;L&#39;effetto composto&lt;/h2&gt;
&lt;p&gt;Ecco dove il problema diventa reale. Un&#39;azienda con 200 documenti in 4 mercati non sta mantenendo 200 documenti. Ne sta gestendo 800. Ma il personale è impiegato per 200. Quindi, ciò che accade realmente è:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le versioni in inglese sono aggiornate&lt;/li&gt;
&lt;li&gt;Le versioni tedesche sono per lo più aggiornate&lt;/li&gt;
&lt;li&gt;Le versioni francesi sono indietro&lt;/li&gt;
&lt;li&gt;Le versioni giapponesi sono un punto interrogativo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le sembra familiare?&lt;/p&gt;
&lt;p&gt;In Rasepi, vengono gestiti 200 documenti. Il contenuto condiviso viene tradotto automaticamente. I contenuti locali vengono aggiunti dai team locali. Ogni versione è aggiornata come quella inglese, più le aggiunte locali che il team regionale ha fatto.&lt;/p&gt;
&lt;p&gt;Anche i costi di traduzione sono inferiori. Quando aggiorna un paragrafo in inglese, solo quel paragrafo viene ritradotto in tutte le lingue. Non l&#39;intero documento, né tutti i 200 documenti. Solo il paragrafo effettivamente cambiato. Abbiamo scritto in dettaglio &lt;a href=&quot;https://rasepi.com/it/blog/how-rasepi-translations-work-and-why-they-sound-like-your-team/&quot;&gt;come funziona&lt;/a&gt;, includendo il glossario e le regole di stile che fanno sì che il contenuto tradotto suoni naturale.&lt;/p&gt;
&lt;h2&gt;Un rapido controllo di base&lt;/h2&gt;
&lt;p&gt;Se gestisce un team globale, si chieda:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;**Quanti documenti duplicati ha? ** Cerchi lo stesso argomento e conti le copie specifiche della lingua.&lt;/li&gt;
&lt;li&gt;**Quanto sono aggiornate le versioni non inglesi? ** Controlli la data di ultima modifica dei documenti in tedesco, francese o giapponese. Quanto sono indietro?&lt;/li&gt;
&lt;li&gt;**I team locali aggiungono contenuti alle loro versioni? ** O hanno rinunciato perché vengono sovrascritti?&lt;/li&gt;
&lt;li&gt;**Quanto tempo impiega l&#39;onboarding negli uffici non inglesi? ** Se è più lungo, è probabile che la documentazione non li stia servendo correttamente.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Se le risposte la mettono a disagio, non è il solo. La maggior parte delle aziende non si rende conto di quante spese generali ha creato, finché non conta effettivamente le copie.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;La documentazione deve crescere con la sua azienda, non moltiplicarsi. Ogni copia che mantiene è una copia che può rimanere indietro, confondere un nuovo assunto o contraddire la versione che qualcun altro sta leggendo. Un documento per argomento, con contenuti condivisi tradotti e contenuti locali al loro posto, è il modo in cui la documentazione dovrebbe funzionare in un&#39;azienda globale.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Il suo wiki non dovrebbe avere bisogno di cinque copie dello stesso documento. Una è sufficiente. Passi condivisi tradotti, passi locali per lingua. Tutto qui.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://rasepi.com/#multilingual&quot;&gt;Vedere la pubblicazione multilingue in azione →&lt;/a&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="multilingual" />
    <category term="documentation" />
    <category term="localisation" />
  </entry>
  <entry>
    <title>Il caso commerciale della localizzazione a livello di blocco</title>
    <link href="https://rasepi.com/it/blog/why-multilingual-knowledge-is-the-key-to-business-success/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/why-multilingual-knowledge-is-the-key-to-business-success/</id>
    <updated>2026-03-24T00:00:00Z</updated>
    <summary>I team globali non hanno bisogno solo di traduzioni. Hanno bisogno di conoscenze che funzionino in ogni mercato, e ogni lingua ha la sua struttura. La localizzazione a livello di blocco rende tutto ciò pratico.</summary>
    <content type="html">&lt;p&gt;C&#39;è uno schema in ogni azienda che opera a livello transfrontaliero. La documentazione in inglese è solida. La versione tedesca è in ritardo di tre mesi. La versione giapponese è stata tradotta una volta, da un appaltatore, e nessuno l&#39;ha più toccata. La versione brasiliana in portoghese non esiste ancora, anche se San Paolo è l&#39;ufficio in più rapida crescita.&lt;/p&gt;
&lt;p&gt;Tutti concordano che si tratta di un problema. Nessuno ha una buona soluzione. Finora, la localizzazione è stata trattata come un progetto, uno sforzo una tantum che si mette in preventivo, si esegue e poi si trascura tranquillamente fino alla prossima grande revisione.&lt;/p&gt;
&lt;p&gt;Questo approccio è rotto. Ecco perché e cosa penso che funzioni davvero.&lt;/p&gt;
&lt;h2&gt;La traduzione non è localizzazione&lt;/h2&gt;
&lt;p&gt;Chiariamo la terminologia. La traduzione consiste nel prendere un testo in una lingua e produrre un testo equivalente in un&#39;altra. La localizzazione consiste nel far funzionare le conoscenze in un mercato specifico. Si sovrappongono, ma non sono la stessa cosa.&lt;/p&gt;
&lt;p&gt;Un documento tradotto si legge correttamente. Un documento localizzato si legge in modo naturale. Tiene conto del contesto culturale, delle normative regionali, degli strumenti locali e del modo in cui le persone in quel mercato lavorano.&lt;/p&gt;
&lt;p&gt;Questa distinzione è importante perché la maggior parte delle piattaforme di documentazione trattano la localizzazione come un compito di traduzione. Si scrive in inglese, si preme un pulsante e si ottiene un risultato in francese. Fatto. Solo che non è fatto, perché..:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Il team francese ha un processo di distribuzione diverso che il documento in inglese non contempla.&lt;/li&gt;
&lt;li&gt;I requisiti di conformità tedeschi aggiungono una fase di approvazione supplementare che non esiste altrove.&lt;/li&gt;
&lt;li&gt;l&#39;ufficio giapponese utilizza uno strumento interno diverso per lo stesso flusso di lavoro&lt;/li&gt;
&lt;li&gt;I lettori portoghesi brasiliani hanno bisogno di un contesto sulle norme fiscali locali che non sono rilevanti altrove.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;**Una traduzione diretta del documento inglese è tecnicamente corretta in tutti questi casi, e praticamente inutile in tutti gli altri.&lt;/p&gt;
&lt;h2&gt;Il problema della traduzione a livello di documento&lt;/h2&gt;
&lt;p&gt;La localizzazione tradizionale funziona a livello di documento. Lei ha un documento in inglese. Lo traduce interamente in tedesco. Quando la versione inglese cambia, invia l&#39;intero documento per una nuova traduzione. Questo crea tre problemi:&lt;/p&gt;
&lt;h3&gt;1. È costoso&lt;/h3&gt;
&lt;p&gt;Se la sua guida onboarding ha 15 sezioni e lei cambia un paragrafo, pagherà per ritradurre tutte e 15 le sezioni. Moltiplicando questo dato per 8 lingue, ogni modifica diventa una conversazione di bilancio.&lt;/p&gt;
&lt;h3&gt;2. È lento&lt;/h3&gt;
&lt;p&gt;Inviare documenti completi per la traduzione richiede tempo. Anche con la moderna traduzione automatica, il ciclo di revisione di un documento completo è significativamente più lungo rispetto alla revisione di una singola sezione modificata. I team in altre lingue sono sempre in ritardo.&lt;/p&gt;
&lt;h3&gt;3. Non supporta i contenuti unici&lt;/h3&gt;
&lt;p&gt;Questo è il vero problema. Se la versione tedesca ha bisogno di una sezione extra sulla conformità DSGVO, dove va a finire? In un sistema di traduzione a livello di documento, qualsiasi contenuto aggiunto alla versione tedesca viene sovrascritto la volta successiva che qualcuno ritraduce dall&#39;inglese. Il team tedesco impara in fretta: non aggiunga nulla, perché verrà cancellato.&lt;/p&gt;
&lt;h2&gt;Localizzazione a livello di blocco: un&#39;architettura diversa&lt;/h2&gt;
&lt;p&gt;Rasepi non traduce documenti. Traduce blocchi: singoli paragrafi, titoli e sezioni, ognuno dei quali viene tracciato in modo indipendente con la propria identità e hash del contenuto.&lt;/p&gt;
&lt;p&gt;Ecco cosa significa in pratica:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quando modifica un singolo paragrafo in inglese&lt;/strong&gt;, Rasepi rileva quale blocco è cambiato confrontando gli hash del contenuto SHA256. Solo quel blocco viene inviato per la traduzione tramite DeepL. Gli altri 14 blocchi del documento rimangono esattamente come erano. Il suo costo di traduzione si riduce fino al 94%.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quando il traduttore tedesco deve aggiungere una sezione DSGVO&lt;/strong&gt;, la aggiunge come nuovo blocco nella versione tedesca. Questo blocco esiste solo in tedesco. Non influisce sulla fonte inglese. Non viene sovrascritto quando l&#39;inglese cambia. È contrassegnato come contenuto unico, in modo che tutti sappiano che è intenzionale.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quando la versione giapponese ha bisogno di una struttura diversa&lt;/strong&gt;, ad esempio un elenco numerato invece di punti elenco perché è la convenzione della scrittura tecnica giapponese, il traduttore può cambiare il tipo di blocco. Il sistema tiene traccia di questo come &amp;quot;adattamento della struttura&amp;quot; e lo conserva per gli aggiornamenti futuri.&lt;/p&gt;
&lt;p&gt;Ogni versione linguistica diventa un documento di prima classe, non una copia ombra.&lt;/p&gt;
&lt;h2&gt;Come funziona, tecnicamente&lt;/h2&gt;
&lt;p&gt;Ogni blocco in Rasepi ha:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Un UUID&lt;/strong&gt; che persiste in tutte le modifiche e traduzioni&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un hash del contenuto&lt;/strong&gt; (SHA256) che cambia quando il testo viene modificato&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un indice di posizione&lt;/strong&gt;, in modo che i blocchi rimangano nel giusto ordine&lt;/li&gt;
&lt;li&gt;Un flag di cancellazione morbida**, in modo che la rimozione di un blocco in inglese non interrompa l&#39;allineamento in altre lingue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quando viene creato un blocco di traduzione, viene memorizzato l&#39;hash del contenuto del blocco sorgente. Ad ogni salvataggio, il sistema confronta gli hash. Se corrispondono, la traduzione è corrente. In caso contrario, la traduzione viene contrassegnata come obsoleta e solo quel blocco specifico necessita di attenzione.&lt;/p&gt;
&lt;p&gt;Questo è il meccanismo alla base della riduzione dei costi del 94%. La maggior parte delle modifiche cambia una o due sezioni. Il resto del documento, in tutte le lingue, non viene toccato.&lt;/p&gt;
&lt;h2&gt;Contenuto unico per lingua&lt;/h2&gt;
&lt;p&gt;Qui le cose si differenziano veramente da qualsiasi altra piattaforma.&lt;/p&gt;
&lt;p&gt;In Rasepi, ogni versione linguistica può contenere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blocchi tradotti.&lt;/strong&gt; Traduzioni dirette della lingua di partenza, monitorate per verificare l&#39;obsolescenza.&lt;/li&gt;
&lt;li&gt;Blocchi unici.** Contenuto che esiste solo in quella lingua, aggiunto dal team locale.&lt;/li&gt;
&lt;li&gt;Blocchi adattati alla struttura.** Stesso contenuto di partenza, formattazione o tipo di blocco diversi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un singolo documento potrebbe avere questo aspetto nelle varie lingue:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Blocco&lt;/th&gt;
&lt;th&gt;Inglese (sorgente)&lt;/th&gt;
&lt;th&gt;Tedesco&lt;/th&gt;
&lt;th&gt;Giapponese&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Introduzione&lt;/td&gt;
&lt;td&gt;Tradotto&lt;/td&gt;
&lt;td&gt;Tradotto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Fasi di impostazione&lt;/td&gt;
&lt;td&gt;Tradotto&lt;/td&gt;
&lt;td&gt;Struttura adattata (elenco numerato)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Conformità DSGVO (unico)&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Installazione&lt;/td&gt;
&lt;td&gt;Tradotto&lt;/td&gt;
&lt;td&gt;Tradotto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Nota sugli utensili locali (unica)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Risoluzione dei problemi&lt;/td&gt;
&lt;td&gt;Tradotto&lt;/td&gt;
&lt;td&gt;Tradotto&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ogni team riceve esattamente la documentazione di cui ha bisogno. Senza compromessi. Nessuna soluzione. Nessuna limitazione unica per tutti.&lt;/p&gt;
&lt;h2&gt;Tracciamento della freschezza nelle varie lingue&lt;/h2&gt;
&lt;p&gt;Ogni versione linguistica traccia la propria freschezza in modo indipendente. La fonte inglese potrebbe ottenere un punteggio di 94 (recensione recente, tutti i link validi, alto numero di lettori). La versione francese potrebbe ottenere un punteggio di 71 (due blocchi obsoleti, un link rotto specifico per il contenuto francese). La versione giapponese potrebbe ottenere un punteggio di 88 (tutte le traduzioni sono aggiornate, ma i lettori sono in calo).&lt;/p&gt;
&lt;p&gt;Questo monitoraggio della freschezza per lingua significa che:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sapere esattamente quali sono le lingue che necessitano di attenzione&lt;/li&gt;
&lt;li&gt;Le traduzioni obsolete vengono evidenziate automaticamente, non vengono scoperte per caso.&lt;/li&gt;
&lt;li&gt;Gli strumenti di intelligenza artificiale possono tenere conto della freschezza specifica della lingua quando servono le risposte.&lt;/li&gt;
&lt;li&gt;I dashboard mostrano la salute dei contenuti suddivisi per lingua, non solo per documento&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Il caso aziendale&lt;/h2&gt;
&lt;p&gt;Le aziende che operano in più lingue devono affrontare una semplice realtà: la sua documentazione è una risorsa o una passività in ogni mercato che serve.&lt;/p&gt;
&lt;p&gt;Se il suo team di Berlino lavora su una traduzione tedesca che è tre mesi indietro rispetto alla fonte inglese, sta prendendo decisioni basate su informazioni non aggiornate. Quando il suo ufficio di Tokyo non può aggiungere il contesto locale ai documenti condivisi perché il sistema di traduzione lo sovrascriverebbe, smette di usare il wiki e crea la propria documentazione ombra. Quando il suo team di San Paolo non dispone di documenti in portoghese, l&#39;onboarding richiede il doppio del tempo.&lt;/p&gt;
&lt;p&gt;Il costo non è solo quello della traduzione. E&#39; anche:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Minore onboarding&lt;/strong&gt; nei mercati non anglosassoni&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sforzo duplicato&lt;/strong&gt;, in quanto i team mantengono una documentazione parallela negli strumenti locali.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Silos di conoscenza&lt;/strong&gt; che si formano quando il wiki ufficiale non è utile a tutti.&lt;/li&gt;
&lt;li&gt;Rischio di conformità** quando i requisiti specifici della regione non vengono catturati.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perdita di fiducia&lt;/strong&gt; nel sistema di documentazione stesso&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La localizzazione a livello di blocco risolve tutti questi problemi, non rendendo la traduzione più economica (anche se lo fa), ma rendendo ogni versione linguistica un documento vivo, curato e affidabile.&lt;/p&gt;
&lt;h2&gt;Iniziare&lt;/h2&gt;
&lt;p&gt;Se oggi gestisce un team multilingue su una qualsiasi piattaforma di documentazione, ecco un rapido controllo di base:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Scelga il suo documento più importante.&lt;/strong&gt; Lo controlli in ogni lingua. Ogni versione è aggiornata?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chieda ai suoi team non inglesi:&lt;/strong&gt; si fidano dei documenti tradotti? Li utilizzano?&lt;/li&gt;
&lt;li&gt;**I team mantengono wiki locali, pagine Notion o messaggi appuntati su Slack perché i documenti ufficiali non li servono?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calcolare la spesa per le traduzioni.&lt;/strong&gt; Quanto paga per ogni aggiornamento, e quanta parte di questa spesa è costituita dalla ritraduzione di contenuti che non sono cambiati?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Se le risposte sono scomode, non è l&#39;unico. La maggior parte delle aziende non scopre il divario fino a quando non causa un problema reale: un problema di conformità, un&#39;implementazione sbagliata, un nuovo assunto che ha trascorso due settimane seguendo istruzioni obsolete.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;La conoscenza multilingue non è una cosa piacevole. Per qualsiasi azienda che opera a livello transfrontaliero, è la base del modo in cui i team si allineano, prendono decisioni e spediscono. La questione è se la sua piattaforma di documentazione la tratta in questo modo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ogni lingua merita di essere un cittadino di prima classe nella sua base di conoscenza. Non una copia. Non un&#39;ombra. Un documento reale, curato e affidabile.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ecco cosa offre Rasepi. Traduzione a livello di blocco, contenuti unici per lingua, monitoraggio indipendente della freschezza e una riduzione del 94% dei costi di traduzione. Tutto automatico. Tutto dal primo giorno.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://rasepi.com/#multilingual&quot;&gt;Vedere la pubblicazione multilingue in azione →&lt;/a&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="multilingual" />
    <category term="localisation" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>Freschezza dei contenuti, parte 2: oltre le date di scadenza</title>
    <link href="https://rasepi.com/it/blog/expiry-dates-are-just-not-enough/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/expiry-dates-are-just-not-enough/</id>
    <updated>2026-03-18T00:00:00Z</updated>
    <summary>Le date di scadenza risolvono la responsabilità. Ma un documento può diventare stantio in centinaia di modi tra una revisione e l&#39;altra. La Parte 2 spiega come il monitoraggio continuo della freschezza colma la lacuna.</summary>
    <content type="html">&lt;p&gt;&lt;em&gt;Questa è la parte 2 della nostra serie sulla freschezza dei contenuti. [La Parte 1] (/it/blog/perché la freschezza conta più che mai/) spiega perché la freschezza conta e cosa significa effettivamente. Questo post riprende da dove si era interrotto: perché le date di scadenza da sole non sono sufficienti e come si presenta il monitoraggio continuo.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Diciamo che lei fa una cosa responsabile. Ogni documento nel suo wiki riceve una data di revisione. Sei mesi dalla creazione, forse dodici per il materiale di riferimento stabile. Quando arriva la data, il proprietario riceve una notifica: riveda questo documento o verrà segnalato.&lt;/p&gt;
&lt;p&gt;Questo è meglio di quello che fa la maggior parte delle aziende. La maggior parte delle aziende non fa nulla. Il documento rimane lì, in lento decadimento, e nessuno se ne accorge finché qualcuno non segue le istruzioni e qualcosa si rompe.&lt;/p&gt;
&lt;p&gt;Ma ecco la scomoda verità: &lt;strong&gt;Le date di scadenza sono necessarie e del tutto insufficienti.&lt;/strong&gt; Ho visto documenti diventare pericolosamente obsoleti giorni dopo la loro ultima revisione, e una data di revisione non li cattura.&lt;/p&gt;
&lt;h2&gt;Cosa risolvono le date di scadenza&lt;/h2&gt;
&lt;p&gt;Le date di scadenza risolvono il problema della responsabilità. Rispondono alla domanda: &lt;em&gt;&amp;quot;Chi è responsabile di confermare che questo sia ancora accurato, e quando?&amp;quot;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Questo è davvero prezioso. Senza di essa, la documentazione entra in quello che chiamiamo il vuoto di proprietà, uno stato in cui tutti presumono che qualcun altro la mantenga, quindi nessuno lo fa. La definizione di una data di revisione assegna a una singola persona un singolo obbligo in una data specifica. Semplice. Chiaro. Efficace.&lt;/p&gt;
&lt;p&gt;Ecco come si presentano le date di scadenza nella pratica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Viene creato un documento con una data di revisione a 90 giorni dalla scadenza.&lt;/li&gt;
&lt;li&gt;14 giorni prima della scadenza, il proprietario riceve una notifica&lt;/li&gt;
&lt;li&gt;Alla data di scadenza, il documento viene contrassegnato come &amp;quot;da rivedere&amp;quot;.&lt;/li&gt;
&lt;li&gt;Il proprietario lo rivede, conferma che è ancora accurato e proroga la data.&lt;/li&gt;
&lt;li&gt;Oppure lo aggiorna, lo riassegna o lo archivia.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questo è un sistema solido. Cattura il lento decadimento, il documento a cui nessuno ha pensato in un anno. Crea una cadenza regolare di revisione. Rende visibile la proprietà.&lt;/p&gt;
&lt;p&gt;**Ma ha un punto cieco grande come un continente.&lt;/p&gt;
&lt;h2&gt;Cosa manca alle date di scadenza&lt;/h2&gt;
&lt;p&gt;Tra le date di revisione, un documento vive in una scatola nera. Lo ha revisionato il 15 gennaio. La prossima revisione è il 15 aprile. Il 3 febbraio, potrebbe accadere una qualsiasi di queste cose:&lt;/p&gt;
&lt;h3&gt;I link si rompono silenziosamente&lt;/h3&gt;
&lt;p&gt;Un URL esterno a cui ha fatto riferimento restituisce un 404. Un link interno punta ad un documento che è stato archiviato. Un repository di codice è stato rinominato e ogni link a GitHub nel suo documento è morto. Il suo documento è ancora valido. La data di scadenza è prevista tra due mesi. Nessuno sa che i link sono interrotti.&lt;/p&gt;
&lt;h3&gt;Modifiche ai contenuti correlati&lt;/h3&gt;
&lt;p&gt;Lei ha scritto una guida all&#39;implementazione che fa riferimento al suo documento di architettura. A febbraio, qualcuno riscrive completamente il documento di architettura. Nuovi modelli, nuove infrastrutture, nuove convenzioni. La sua guida alla distribuzione fa ancora riferimento alla vecchia architettura. Non è ancora tecnicamente sbagliata, ma sta andando alla deriva. Quando arriva la data di revisione, il divario potrebbe essere significativo.&lt;/p&gt;
&lt;h3&gt;Il numero di lettori scende a zero&lt;/h3&gt;
&lt;p&gt;Il suo documento veniva letto da 40 persone al mese. Poi un processo è cambiato e nessuno ne ha più bisogno, ma nessuno lo ha nemmeno archiviato. Rimane nei risultati di ricerca, occupando spazio e confondendo occasionalmente un nuovo assunto che non sa che è irrilevante. La data di scadenza non si preoccupa dei lettori. Il proprietario verrà contattato puntualmente, a prescindere.&lt;/p&gt;
&lt;h3&gt;Le traduzioni rimangono indietro&lt;/h3&gt;
&lt;p&gt;La fonte inglese è stata aggiornata il 10 febbraio. Le traduzioni in francese, tedesco e giapponese sono ormai obsolete. Ma la data di scadenza di queste versioni tradotte non è prima di maggio. Per tre mesi, i team non inglesi leggono contenuti obsoleti e non lo sanno.&lt;/p&gt;
&lt;h3&gt;I lettori segnalano i problemi&lt;/h3&gt;
&lt;p&gt;Un lettore lascia un commento: &amp;quot;Il passo 3 non funziona più, il flag CLI è stato deprecato&amp;quot;. Questo commento rimane lì. La data di scadenza è ancora lontana. La prossima persona che leggerà il documento potrebbe non vedere il commento. Quella successiva sicuramente no.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La scadenza è un punto di controllo programmato. Questi sono eventi non programmati. L&#39;intervallo tra i due è il punto in cui la documentazione stantia causa i danni maggiori.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Freschezza: monitoraggio continuo&lt;/h2&gt;
&lt;p&gt;Il punteggio di freschezza colma il vuoto che le date di scadenza lasciano aperto. Invece di controllare la salute di un documento una volta ogni 90 giorni, la freschezza lo monitora continuamente. Ogni giorno, in background, senza che nessuno debba fare nulla.&lt;/p&gt;
&lt;p&gt;Ecco come funziona in Rasepi:&lt;/p&gt;
&lt;p&gt;Ogni documento riceve un punteggio di freschezza in tempo reale da 0 a 100, calcolato in base a più segnali:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Segnale&lt;/th&gt;
&lt;th&gt;Cosa rileva&lt;/th&gt;
&lt;th&gt;Perché è importante&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Salute del link&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;URL rotti, reindirizzati o non raggiungibili&lt;/td&gt;
&lt;td&gt;I link rotti erodono la fiducia e fanno perdere tempo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stato di revisione&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Se il documento è stato rivisto nei tempi previsti&lt;/td&gt;
&lt;td&gt;Il controllo di responsabilità di base&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tendenze di lettura&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Se qualcuno sta effettivamente leggendo questo documento&lt;/td&gt;
&lt;td&gt;Un basso numero di lettori suggerisce che il documento potrebbe essere irrilevante&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recenza di modifica&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Quando il documento è stato modificato per l&#39;ultima volta rispetto ai contenuti correlati&lt;/td&gt;
&lt;td&gt;Rileva la deriva rispetto alla base di conoscenza circostante&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allineamento della traduzione&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Se tutte le versioni linguistiche sono aggiornate&lt;/td&gt;
&lt;td&gt;Le traduzioni obsolete significano che i team di altri mercati lavorano su informazioni vecchie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bandiere dei lettori&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Se i lettori hanno segnalato dei problemi&lt;/td&gt;
&lt;td&gt;Rilevamento di stallo da parte della folla&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Riferimenti incrociati&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Se i documenti a cui si collega sono a loro volta obsoleti&lt;/td&gt;
&lt;td&gt;La staticità è contagiosa&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ogni segnale contribuisce al punteggio complessivo. Un documento può perdere punti di freschezza per un link interrotto oggi, anche se la sua data di revisione non è prevista prima di settimane. Questo è il punto centrale.&lt;/p&gt;
&lt;h2&gt;Come le due cose lavorano insieme&lt;/h2&gt;
&lt;p&gt;Scadenza e freschezza non sono approcci in competizione. Sono livelli complementari:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le date di scadenza&lt;/strong&gt; sono il livello di governance. Creano una cadenza regolare di revisione umana. Qualcuno deve esaminare questo documento secondo un calendario e confermare che è ancora accurato. Questo cattura le cose che l&#39;automazione non può fare: se il &lt;em&gt;contenuto&lt;/em&gt; è ancora corretto, se il consiglio è ancora valido, se il processo che descrive riflette ancora la realtà.&lt;/p&gt;
&lt;p&gt;Il &lt;strong&gt;Freshness scoring&lt;/strong&gt; è il livello di monitoraggio. Cattura tutto ciò che si verifica tra le date di revisione: i collegamenti interrotti, la deriva della traduzione, i documenti abbandonati, il decadimento contestuale che si verifica quando il mondo si muove e un documento no.&lt;/p&gt;
&lt;p&gt;Insieme creano un sistema in cui:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ogni documento viene rivisto da un essere umano secondo un calendario regolare (scadenza).&lt;/li&gt;
&lt;li&gt;Tra una revisione e l&#39;altra, i segnali automatizzati colgono i problemi nel momento in cui si verificano (freschezza).&lt;/li&gt;
&lt;li&gt;Entrambi i sistemi confluiscono in un unico punteggio di fiducia che tutti possono vedere.&lt;/li&gt;
&lt;li&gt;Tale punteggio influisce sul posizionamento del documento nella ricerca e sul fatto che gli strumenti di intelligenza artificiale lo utilizzino come fonte.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;L&#39;impatto del punteggio&lt;/h2&gt;
&lt;p&gt;Qui si entra nel pratico. In Rasepi, il punteggio di freschezza di un documento influisce direttamente sulla sua visibilità:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Punteggio 80-100:&lt;/strong&gt; Visibilità completa. Appare normalmente nei risultati di ricerca. Idoneo come fonte per le risposte dell&#39;AI. Nessun flag.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Punteggio 50-79:&lt;/strong&gt; Visibilità ridotta. Appare nella ricerca con un indicatore di stallo. Gli strumenti AI possono deprioritarla come fonte. Il proprietario viene avvisato.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core inferiore a 50:&lt;/strong&gt; Segnalato. Scende significativamente nei risultati della ricerca. Escluso completamente dalle risposte dell&#39;AI. Il proprietario riceve una notifica urgente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questo crea un ciclo di feedback. Quando il punteggio di un documento si riduce, il proprietario è spinto a risolverlo, non perché è arrivata una data arbitraria, ma perché qualcosa è effettivamente cambiato. Il link rotto, la traduzione obsoleta, il calo dei lettori, sono segnali reali che richiedono attenzione ora, non tra sei settimane.&lt;/p&gt;
&lt;h2&gt;Un esempio pratico&lt;/h2&gt;
&lt;p&gt;Vediamo uno scenario:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Marzo 1:&lt;/strong&gt; Il suo &amp;quot;Incident Response Playbook&amp;quot; ha ottenuto un punteggio di 92. È stato revisionato due settimane fa, tutti i link sono validi, il numero di lettori è elevato e tutte e quattro le versioni linguistiche sono aggiornate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8 marzo:&lt;/strong&gt; Qualcuno ristruttura la pagina dello stato dell&#39;ingegneria. Tre URL del playbook ora reindirizzano. Il punteggio di freschezza scende a 78. Il proprietario riceve una notifica: &amp;quot;Rilevati 3 link non funzionanti&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10 marzo:&lt;/strong&gt; Il proprietario ripara i link. Il punteggio sale a 89.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;15 marzo:&lt;/strong&gt; La versione inglese viene aggiornata con un nuovo percorso di escalation. Le traduzioni in francese e tedesco sono ora obsolete (mancata corrispondenza dell&#39;hash del contenuto). Il punteggio scende a 74.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;17 marzo:&lt;/strong&gt; Le traduzioni vengono aggiornate. Il punteggio torna a 91.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;20 marzo:&lt;/strong&gt; I dati di lettura mostrano che la versione giapponese non viene visitata da 30 giorni. Il punteggio scende a 86. Un segnale sottile, ma tracciato.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1 aprile:&lt;/strong&gt; Arriva la data di revisione prevista. Il proprietario rivede il contenuto, ne conferma l&#39;accuratezza e proroga la scadenza al 1° luglio. Il punteggio rimane a 86 perché il segnale di lettura è ancora presente.&lt;/p&gt;
&lt;p&gt;In nessun momento il team ha atteso una data di revisione per individuare un problema. Il sistema di freschezza ha segnalato i problemi entro pochi giorni. La data di revisione ha fornito il punto di controllo della governance. Entrambi i livelli fanno il loro lavoro.&lt;/p&gt;
&lt;h2&gt;Perché &amp;quot;fissare una data di revisione&amp;quot; non è più sufficiente&lt;/h2&gt;
&lt;p&gt;Cinque anni fa, le date di scadenza potevano essere sufficienti. La documentazione veniva letta dalle persone e le persone potevano esercitare un giudizio. Se un documento sembrava un po&#39; strano, si chiedeva in giro.&lt;/p&gt;
&lt;p&gt;Oggi, la documentazione è un&#39;infrastruttura. Alimenta gli strumenti di AI, l&#39;automazione dell&#39;onboarding, i sistemi di conformità e i motori di ricerca che forniscono risultati senza contesto. Questi sistemi non esercitano il giudizio. Consumano i contenuti così come sono e li ridistribuiscono in scala.&lt;/p&gt;
&lt;p&gt;Un documento con link non funzionanti e traduzioni obsolete, a cui mancano ancora tre settimane alla data di revisione, può fare molti danni in quelle tre settimane, soprattutto se un assistente AI sta fornendo risposte sicure sulla base di esso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le date di scadenza sono l&#39;approccio minimo possibile alla governance della documentazione. Il punteggio di freschezza è ciò che serve quando la documentazione viene consumata da sistemi che non sono in grado di pensare da soli.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Iniziare&lt;/h2&gt;
&lt;p&gt;Se ha già delle date di scadenza sui suoi documenti (buon per lei, sul serio, la maggior parte dei team non lo fa nemmeno), ecco come aggiungere la freschezza:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;**Esegua un controllo dei link interrotti sui suoi 50 documenti principali. Il numero probabilmente la sorprenderà.&lt;/li&gt;
&lt;li&gt;**Se ha documenti multilingue, confronti le date di ultima modifica tra la fonte e le traduzioni. Quante sono indietro di oltre un mese?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guarda la readership.&lt;/strong&gt; Quali documenti non ricevono traffico? Sono ancora necessari o dovrebbero essere archiviati?&lt;/li&gt;
&lt;li&gt;**Se dispone di un assistente AI interno, chieda quali sono i documenti da cui attinge. Poi verifichi la freschezza di questi documenti.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Probabilmente scoprirà che i suoi documenti tecnicamente non scaduti presentano molti problemi che le date di scadenza non potranno mai individuare.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Le date di scadenza indicano se qualcuno ha controllato un documento di recente. La freschezza le dice se il documento è effettivamente sano in questo momento. Uno è un evento del calendario. L&#39;altro è un segnale vivente.&lt;/p&gt;
&lt;p&gt;Ha bisogno di entrambi. Ma se ha solo date di scadenza, vola alla cieca tra i punti di controllo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Un documento non diventa obsoleto alla data di revisione. Diventa stantio nel momento in cui qualcosa cambia e nessuno se ne accorge. Il punteggio di freschezza se ne accorge.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rasepi combina le date di scadenza obbligatorie con il monitoraggio continuo della freschezza. Ogni documento guadagna il suo punteggio di fiducia, o lo perde, in tempo reale. Nessuna attesa, nessun punto cieco, nessuna sorpresa al momento della revisione.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://rasepi.com/#freshness&quot;&gt;Guardi come funziona il punteggio di freschezza →&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;*Questa è la Parte 2 di una serie in due parti. Se non l&#39;ha ancora letta, inizi con [Parte 1: La metrica che il suo team non tiene sotto controllo](/it/blog/perché la freschezza conta più di sempre/).&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="freshness" />
    <category term="expiry" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>Freschezza dei contenuti, Parte 1: La metrica che il suo team non sta monitorando</title>
    <link href="https://rasepi.com/it/blog/why-freshness-matters-more-than-ever/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/why-freshness-matters-more-than-ever/</id>
    <updated>2026-03-16T00:00:00Z</updated>
    <summary>La sua documentazione può essere tecnicamente corretta oggi. Ma tra sei mesi, chi controllerà? La freschezza sta per diventare il segnale più importante della sua base di conoscenze.</summary>
    <content type="html">&lt;p&gt;C&#39;è un momento che ogni team di ingegneri ha vissuto. Qualcuno trova un documento sul wiki interno, segue le istruzioni e qualcosa si rompe. Manda un messaggio al canale: Nessuno lo sa. La persona che l&#39;ha scritto se n&#39;è andata otto mesi fa. Il documento dice che è stato modificato l&#39;ultima volta nel 2024.&lt;/p&gt;
&lt;p&gt;Questo è il problema della freschezza. E sta peggiorando.&lt;/p&gt;
&lt;h2&gt;Il vecchio contratto si sta rompendo&lt;/h2&gt;
&lt;p&gt;Per molto tempo, la documentazione ha avuto un contratto implicito: qualcuno la scrive, tutti si fidano e ogni tanto qualcuno la aggiorna. Forse. Questo contratto funzionava, a malapena, quando la documentazione veniva consumata solo da persone in grado di applicare il giudizio. Se una guida all&#39;installazione sembrava un po&#39; fuori luogo, un ingegnere senior si adattava al volo.&lt;/p&gt;
&lt;p&gt;Ma quel mondo è finito. Oggi la sua documentazione non viene letta solo dagli esseri umani. Viene consumata da strumenti AI, chatbot interni, automazione dell&#39;onboarding e sistemi di ricerca che trattano ogni parola come una verità equivalente. Un assistente AI non guarda un documento e pensa: &amp;quot;Questo sembra un po&#39; datato&amp;quot;, ma legge il testo, lo elabora come un dato di fatto e lo serve con piena fiducia.&lt;/p&gt;
&lt;p&gt;**Documentazione obsoleta più AI equivale a risposte sbagliate e sicure in scala.&lt;/p&gt;
&lt;h2&gt;Cosa significa freschezza&lt;/h2&gt;
&lt;p&gt;La freschezza non è solo &amp;quot;quando è stato modificato l&#39;ultima volta&amp;quot;. Un documento potrebbe essere stato modificato ieri e fare ancora riferimento a un&#39;API deprecata. La vera freschezza è un segnale composito:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stato di revisione.&lt;/strong&gt; Qualcuno ha confermato esplicitamente che questo documento è ancora accurato?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Salute dei link.&lt;/strong&gt; Gli URL all&#39;interno del documento si risolvono ancora?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lettori.&lt;/strong&gt; C&#39;è qualcuno che lo usa davvero o è stato abbandonato?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deriva contestuale.&lt;/strong&gt; I documenti correlati sono cambiati mentre questo è rimasto invariato?&lt;/li&gt;
&lt;li&gt;Allineamento della traduzione.** Se questo esiste in cinque lingue, sono tutte aggiornate?&lt;/li&gt;
&lt;li&gt;Segnali della comunità.** I lettori hanno segnalato questo documento come obsoleto?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ognuno di questi elementi le dice qualcosa di diverso. Insieme, le forniscono un punteggio di fiducia: un singolo numero che rappresenta quanta fiducia dovrebbe riporre in un contenuto in questo momento.&lt;/p&gt;
&lt;h2&gt;Perché questo è importante ora, in particolare&lt;/h2&gt;
&lt;p&gt;Tre cose sono confluite per rendere urgente la freschezza:&lt;/p&gt;
&lt;h3&gt;1. L&#39;AI sta consumando la sua base di conoscenze&lt;/h3&gt;
&lt;p&gt;Sia che abbia implementato un sistema RAG interno, che utilizzi Copilot nel suo IDE o che abbia un assistente AI che risponde alle domande dei suoi documenti, la qualità del materiale di partenza determina direttamente la qualità dell&#39;output. Garbage in, garbage out non è mai stato così letterale.&lt;/p&gt;
&lt;p&gt;Quando uno sviluppatore chiede al suo assistente AI &amp;quot;come faccio a fare il deploy in staging?&amp;quot; e questo risponde utilizzando un runbook di due anni fa che fa riferimento a un&#39;infrastruttura che nel frattempo è stata migrata, il costo non è solo una risposta sbagliata. È la perdita di fiducia nell&#39;intero sistema.&lt;/p&gt;
&lt;h3&gt;2. I team sono più distribuiti che mai&lt;/h3&gt;
&lt;p&gt;Un team a Berlino, un altro a San Paolo, un terzo a Tokyo. Tutti leggono la stessa documentazione, spesso in lingue diverse. Quando la fonte inglese diventa obsoleta, anche tutte le traduzioni costruite su di essa diventano obsolete, ma nessuno se ne accorge perché le traduzioni vengono mantenute separatamente, se non del tutto.&lt;/p&gt;
&lt;h3&gt;3. La pressione della conformità e degli audit è in aumento&lt;/h3&gt;
&lt;p&gt;I settori regolamentati iniziano a chiedere: &amp;quot;Può dimostrare che questa documentazione era aggiornata al momento in cui è stata citata?&amp;quot;. Se la sua risposta è &amp;quot;beh, probabilmente qualcuno l&#39;ha controllata&amp;quot;, non reggerà.&lt;/p&gt;
&lt;h2&gt;Come si presenta un approccio orientato alla freschezza&lt;/h2&gt;
&lt;p&gt;L&#39;idea di base è semplice: &lt;strong&gt;ogni documento deve continuamente guadagnarsi il diritto di essere considerato attendibile.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ciò significa che:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Date di revisione obbligatorie.&lt;/strong&gt; Ogni documento riceve una data di scadenza al momento della sua creazione. Senza eccezioni. Quando arriva la data, il proprietario viene informato e il documento viene contrassegnato fino a quando qualcuno non lo riapprova esplicitamente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**In background, il sistema controlla continuamente i link rotti, le tendenze dei lettori e i cambiamenti contestuali. Questi segnali confluiscono in un punteggio in tempo reale che si aggiorna senza che nessuno debba fare nulla.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**Questa è la chiave del meccanismo. Un documento con un punteggio elevato sale in cima ai risultati di ricerca e può essere utilizzato come fonte per le risposte dell&#39;AI. Un documento con un punteggio basso scende nel ranking. Se scende al di sotto di una soglia, viene escluso completamente dalle risposte dell&#39;AI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Trasparenza.&lt;/strong&gt; Tutti possono vedere perché un documento ha ottenuto il punteggio che ha ottenuto. Link rotti, revisione in ritardo, basso numero di lettori, i segnali sono visibili, non nascosti in un rapporto di backend che nessuno legge.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Il costo del non fare nulla&lt;/h2&gt;
&lt;p&gt;Ecco cosa succede quando non si tiene traccia della freschezza:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I nuovi assunti seguono documenti di onboarding obsoleti e trascorrono la prima settimana confusi.&lt;/li&gt;
&lt;li&gt;Gli strumenti di intelligenza artificiale forniscono risposte sbagliate e nessuno capisce perché.&lt;/li&gt;
&lt;li&gt;I documenti di conformità diventano silenziosamente obsoleti e creano rischi di audit.&lt;/li&gt;
&lt;li&gt;Le traduzioni non sono sincronizzate e i team in regioni diverse lavorano con versioni diverse della realtà.&lt;/li&gt;
&lt;li&gt;Gli ingegneri smettono di fidarsi completamente del wiki e tornano ai messaggi di Slack, che crea un proprio silos di conoscenza.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il costo composto della documentazione obsoleta è enorme, ma è invisibile finché non si rompe qualcosa.&lt;/p&gt;
&lt;h2&gt;Un punto di partenza pratico&lt;/h2&gt;
&lt;p&gt;Non è necessario revisionare tutto in una volta. Inizi con questi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Audit dei suoi 20 documenti più letti.&lt;/strong&gt; Quando sono stati rivisti l&#39;ultima volta? I link sono ancora validi? Il contenuto è ancora accurato?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**Anche se non fa altro, inserire una data di &amp;quot;revisione entro&amp;quot; su ogni documento crea responsabilità.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**Se dispone di un assistente AI interno, osservi quali sono i documenti da cui attinge. Questi documenti sono aggiornati?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rendere visibile la freschezza.&lt;/strong&gt; Metta il punteggio dove le persone possono vederlo, accanto al titolo del documento, nei risultati di ricerca, nella barra laterale. La visibilità crea una pressione a mantenerlo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;La freschezza della documentazione non è una caratteristica. È un cambiamento fondamentale nel modo in cui pensiamo alla conoscenza organizzativa. In un mondo in cui gli strumenti di intelligenza artificiale consumano e ridistribuiscono i documenti su scala, la domanda non è se può permettersi di preoccuparsi della freschezza. È se può permettersi di non farlo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ogni documento dovrebbe dimostrare di essere ancora degno di fiducia. Non una volta. Continuamente.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Questo è ciò che stiamo costruendo in Rasepi. Una piattaforma in cui la freschezza non è un ripensamento. È la base su cui si fonda tutto il resto. Applicazione delle recensioni, punteggio di salute in tempo reale, ricerca ponderata sulla freschezza e risposte AI che utilizzano solo fonti di cui ci si può fidare.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://rasepi.com/#freshness&quot;&gt;Guardi come funziona →&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Questa è la Parte 1 di una serie in due parti. Nella &lt;a href=&quot;https://rasepi.com/it/blog/le-date-di-scadenza-sono-solo-non-abbastanza/&quot;&gt;Parte 2: Oltre le date di scadenza&lt;/a&gt;, esploriamo come il monitoraggio continuo della freschezza colma le lacune che le date di revisione lasciano aperte.&lt;/em&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="freshness" />
    <category term="ai" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>Insegnare alla sua AI a ignorare la documentazione obsoleta</title>
    <link href="https://rasepi.com/it/blog/ai-just-fetches-everything-stop-that/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/ai-just-fetches-everything-stop-that/</id>
    <updated>2026-03-12T00:00:00Z</updated>
    <summary>Il suo assistente AI tratta un documento rivisto la settimana scorsa allo stesso modo di uno che nessuno ha toccato in due anni. La governance dei contenuti risolve questo problema.</summary>
    <content type="html">&lt;p&gt;Ecco cosa succede quando si implementa un assistente AI in cima alla sua base di conoscenza interna:&lt;/p&gt;
&lt;p&gt;Un nuovo ingegnere chiede: &amp;quot;Come faccio a configurare l&#39;ambiente di staging?&amp;quot;.&lt;/p&gt;
&lt;p&gt;L&#39;AI cerca nella sua documentazione, trova tre documenti pertinenti, sintetizza una risposta e la presenta con fiducia. L&#39;ingegnere segue le istruzioni. I primi due passaggi funzionano. Il terzo passo fa riferimento a uno strumento CLI che è stato deprecato sei mesi fa. Il quarto passo descrive una configurazione dell&#39;infrastruttura che è stata sostituita durante una migrazione che non è stata documentata.&lt;/p&gt;
&lt;p&gt;Il tecnico è bloccato. Invia un messaggio al canale del team. Qualcuno dice: &amp;quot;Oh, quel documento è molto vecchio&amp;quot;. L&#39;AI non lo sapeva. Non può saperlo. Ha semplicemente recuperato tutto ciò che ha trovato e lo ha presentato come verità.&lt;/p&gt;
&lt;p&gt;**Questo è il comportamento predefinito di ogni sistema RAG, di ogni strumento di ricerca AI e di ogni assistente LLM che lei abbia mai usato per i documenti interni. Recuperano tutto. Non fanno discriminazioni. Non sanno distinguere le cose fresche da quelle stantie.&lt;/p&gt;
&lt;p&gt;E sta distruggendo la fiducia negli strumenti di AI più velocemente di quanto questi possano costruirla.&lt;/p&gt;
&lt;h2&gt;Perché gli assistenti AI sono ciechi alla qualità&lt;/h2&gt;
&lt;p&gt;I grandi modelli linguistici e i sistemi di retrieval-augmented generation (RAG) funzionano trovando un testo semanticamente rilevante per una query, quindi utilizzando quel testo per generare una risposta. La corrispondenza di pertinenza è solitamente eccellente. La ricerca vettoriale e le incorporazioni sono davvero ottime per trovare i contenuti che si riferiscono a una domanda.&lt;/p&gt;
&lt;p&gt;Ma la pertinenza non è la stessa cosa dell&#39;affidabilità.&lt;/p&gt;
&lt;p&gt;Un documento scritto nel 2023 sul suo processo di implementazione di Kubernetes è altamente rilevante per la domanda &amp;quot;come faccio a implementare in produzione?&amp;quot;. È anche completamente sbagliato se è migrato a una piattaforma diversa nel 2024. L&#39;AI vede un testo rilevante. Non vede un documento non aggiornato da 18 mesi, con link non funzionanti e zero lettori.&lt;/p&gt;
&lt;p&gt;La maggior parte dei sistemi di intelligenza artificiale ha esattamente un segnale di ranking: &lt;strong&gt;la somiglianza semantica con la query.&lt;/strong&gt; Tutto qui. Non controllano:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quando è stato rivisto l&#39;ultima volta questo documento?&lt;/li&gt;
&lt;li&gt;I link al suo interno sono ancora validi?&lt;/li&gt;
&lt;li&gt;C&#39;è qualcuno che sta leggendo questo documento?&lt;/li&gt;
&lt;li&gt;Il contenuto è stato segnalato dai lettori come obsoleto?&lt;/li&gt;
&lt;li&gt;Si tratta di una bozza, di una pagina archiviata o di un documento attuale?&lt;/li&gt;
&lt;li&gt;Se esiste in più lingue, le traduzioni sono aggiornate?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Senza questi segnali, l&#39;AI esegue una corrispondenza di parole chiave con passaggi aggiuntivi. Una corrispondenza di parole chiave impressionante, sì, ma fondamentalmente incapace di dirle se la risposta che le sta dando è basata su contenuti di cui si può fidare.&lt;/p&gt;
&lt;h2&gt;Il problema della fiducia&lt;/h2&gt;
&lt;p&gt;Questo non sarebbe così pericoloso se gli strumenti di AI presentassero risposte incerte con avvertenze appropriate. Ma non lo fanno. Non è così che funzionano i LLM. Generano un testo fluente e sicuro, indipendentemente dal fatto che il materiale di partenza sia attuale o antico.&lt;/p&gt;
&lt;p&gt;Un umano che legge un articolo wiki potrebbe notare che sembra datato. Il layout della pagina è vecchio. Gli screenshot mostrano un&#39;interfaccia utente che non esiste più. C&#39;è un commento in fondo che dice &amp;quot;questo è obsoleto&amp;quot;. Un umano può applicare un giudizio.&lt;/p&gt;
&lt;p&gt;Un&#39;intelligenza artificiale non può farlo. Legge il testo, lo elabora come equivalente a qualsiasi altro testo e genera una risposta che sembra autorevole. L&#39;utente, soprattutto un nuovo assunto che non conosce il processo attuale, non ha motivo di dubitare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Più l&#39;IA suona sicura, più il materiale di origine stantio viene danneggiato.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Ciò di cui l&#39;AI ha effettivamente bisogno&lt;/h2&gt;
&lt;p&gt;Affinché un assistente AI fornisca risposte affidabili dalla sua base di conoscenza, ha bisogno di qualcosa di più del testo e degli embeddings. Ha bisogno di metadati che le indichino quali documenti vale la pena utilizzare come fonti. In particolare:&lt;/p&gt;
&lt;h3&gt;1. Punteggio di freschezza&lt;/h3&gt;
&lt;p&gt;Un segnale numerico che rappresenta quanto è sano un documento in questo momento. Non quando è stato modificato l&#39;ultima volta, che è solo un input. Un vero punteggio di freschezza combina lo stato delle recensioni, la salute dei link, la readership, l&#39;allineamento della traduzione e la deriva contestuale in un unico numero.&lt;/p&gt;
&lt;p&gt;Quando un documento ottiene un punteggio superiore ad una soglia (ad esempio, 70 su 100), è idoneo ad essere utilizzato come fonte per le risposte dell&#39;AI. Al di sotto di tale soglia, viene escluso. Non ci sono eccezioni.&lt;/p&gt;
&lt;p&gt;Questo unico meccanismo elimina la classe più pericolosa di errori di AI: risposte sbagliate e sicure basate su fonti obsolete.&lt;/p&gt;
&lt;h3&gt;2. Stato di scadenza&lt;/h3&gt;
&lt;p&gt;Questo documento è attualmente nella sua finestra di revisione o è scaduto senza essere riapprovato? Un documento scaduto dovrebbe essere fortemente deprivato o escluso del tutto, indipendentemente dalla rilevanza del suo contenuto per la query.&lt;/p&gt;
&lt;p&gt;In Rasepi, i documenti scaduti vengono segnalati e il loro punteggio di freschezza diminuisce automaticamente. Un sistema AI che interroga la base di conoscenza può vedere questo stato e agire di conseguenza.&lt;/p&gt;
&lt;h3&gt;3. Etichette di classificazione&lt;/h3&gt;
&lt;p&gt;Non tutti i documenti servono allo stesso scopo. Una bozza non dovrebbe essere utilizzata come fonte. Un documento archiviato non dovrebbe apparire nelle risposte dell&#39;AI. Un documento esclusivamente interno non dovrebbe apparire nelle query degli strumenti esterni.&lt;/p&gt;
&lt;p&gt;Le etichette di classificazione forniscono all&#39;AI un contesto sul tipo di documento che sta esaminando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pubblicato.&lt;/strong&gt; Attuale, approvato, sicuro da usare&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Draft.&lt;/strong&gt; Lavoro in corso, non deve essere citato&lt;/li&gt;
&lt;li&gt;In corso di revisione.** Scadenza attivata, in attesa di riapprovazione&lt;/li&gt;
&lt;li&gt;Archiviato.** Non più attivo, conservato solo per riferimento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interno&lt;/strong&gt; / &lt;strong&gt;Esterno.&lt;/strong&gt; Controlli l&#39;ambito di visibilità&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quando un assistente AI elabora una query, può filtrare in base alla classificazione prima ancora di esaminare la rilevanza del contenuto. Una bozza di documento che corrisponde perfettamente alla query non dovrebbe mai essere servita come risposta.&lt;/p&gt;
&lt;h3&gt;4. Segnali a livello di lingua&lt;/h3&gt;
&lt;p&gt;Se la sua base di conoscenza è multilingue, l&#39;AI deve sapere se la versione da cui attinge è attuale. Una traduzione francese che è tre mesi indietro rispetto alla fonte inglese è tecnicamente rilevante in francese, ma le informazioni potrebbero essere obsolete.&lt;/p&gt;
&lt;p&gt;Rasepi tiene traccia della freschezza a livello di lingua. Ogni traduzione ha il proprio punteggio in base al fatto che i blocchi di origine sono cambiati dall&#39;ultimo aggiornamento della traduzione. Un&#39;IA che interroga la base di conoscenza francese può vedere che la versione francese di un documento è obsoleta e o:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ritornare alla fonte inglese (che è aggiornata).&lt;/li&gt;
&lt;li&gt;Includere un&#39;avvertenza che la versione francese potrebbe essere obsoleta.&lt;/li&gt;
&lt;li&gt;Escludere completamente il documento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. Segnali del lettore&lt;/h3&gt;
&lt;p&gt;Se più lettori hanno segnalato un documento come obsoleto, questo segnale dovrebbe ridurre il peso del documento nelle risposte dell&#39;AI. I segnali di qualità raccolti dalla folla sono rumorosi, ma sono preziosi, soprattutto se combinati con altre metriche di freschezza.&lt;/p&gt;
&lt;h2&gt;Come funziona in pratica&lt;/h2&gt;
&lt;p&gt;Vediamo cosa succede quando un assistente AI interroga una base di conoscenza Rasepi:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; &amp;quot;Qual è il nostro processo per gestire un incidente P1 alle 2 del mattino?&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fase 1: Recupero con filtraggio.&lt;/strong&gt; Il sistema cerca documenti semanticamente rilevanti. Prima di classificare, filtra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documenti con punteggio di freschezza inferiore alla soglia&lt;/li&gt;
&lt;li&gt;Documenti scaduti che non sono stati riapprovati&lt;/li&gt;
&lt;li&gt;Bozze e contenuti archiviati&lt;/li&gt;
&lt;li&gt;Documenti la cui versione linguistica è obsoleta (se la query è in una lingua non primaria).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fase 2: Classifica ponderata per la freschezza.&lt;/strong&gt; Tra i documenti rimanenti, quelli con punteggi di freschezza più elevati si posizionano più in alto. Un documento con punteggio 94 supera uno con punteggio 72, anche se il documento con punteggio 72 ha una somiglianza semantica leggermente superiore.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fase 3: generazione della risposta.&lt;/strong&gt; L&#39;AI genera una risposta dalle fonti filtrate e classificate per freschezza. Ogni fonte è citata con il suo punteggio di freschezza visibile.&lt;/p&gt;
&lt;p&gt;**Se la migliore fonte disponibile ha un punteggio di freschezza borderline, l&#39;AI include un&#39;avvertenza: _&amp;quot;Nota: la fonte principale per questa risposta è stata rivista l&#39;ultima volta 60 giorni fa. Potrebbe voler verificare con il team&amp;quot;.&lt;/p&gt;
&lt;p&gt;Confrontiamo questo con il comportamento predefinito: trovare il testo pertinente, generare una risposta sicura, sperare per il meglio.&lt;/p&gt;
&lt;h2&gt;Cosa succede quando non lo fa&lt;/h2&gt;
&lt;p&gt;Le conseguenze dei sistemi di AI che operano su basi di conoscenza non filtrate sono prevedibili e costose:&lt;/p&gt;
&lt;p&gt;**Il caso d&#39;uso più comune dell&#39;AI per i documenti interni è l&#39;onboarding. I nuovi assunti, per definizione, non sanno cosa è attuale e cosa è obsoleto. Si fidano dell&#39;AI. L&#39;AI si fida di tutto. I documenti obsoleti vengono serviti con fiducia.&lt;/p&gt;
&lt;p&gt;**Se l&#39;assistente AI fornisce indicazioni sui processi normativi utilizzando documenti obsoleti, il consiglio potrebbe non solo essere sbagliato, ma anche non conforme. &amp;quot;L&#39;AI mi ha detto di farlo&amp;quot; non regge in un audit.&lt;/p&gt;
&lt;p&gt;**Ogni volta che l&#39;AI dà una risposta sbagliata, gli utenti si fidano un po&#39; meno. Dopo tre o quattro esperienze negative, smettono di usarla. L&#39;investimento in strumenti di IA non offre alcun valore perché il contenuto sottostante non era affidabile.&lt;/p&gt;
&lt;p&gt;**Quando le persone perdono fiducia nella base di conoscenza ufficiale (e nell&#39;AI costruita su di essa), ne creano una propria: Messaggi Slack, note personali, conoscenze tribali condivise durante le riunioni. La frammentazione che il wiki avrebbe dovuto evitare avviene comunque, ma in modo diverso.&lt;/p&gt;
&lt;h2&gt;La soluzione è alla fonte, non al modello&lt;/h2&gt;
&lt;p&gt;C&#39;è la tentazione di risolvere questo problema a livello di intelligenza artificiale: suggerimenti migliori, pipeline RAG più sofisticate, modelli perfezionati che possano in qualche modo rilevare la stasi dal solo testo. Questo è l&#39;approccio sbagliato.&lt;/p&gt;
&lt;p&gt;La soluzione è alla fonte. Se i suoi documenti contengono metadati ricchi e accurati sul loro stato attuale (punteggio di freschezza, stato di scadenza, classificazione, allineamento linguistico, segnali del lettore), qualsiasi sistema di intelligenza artificiale può utilizzare tali metadati per prendere decisioni migliori. Non le serve un modello più intelligente. Ha bisogno di documenti più intelligenti.&lt;/p&gt;
&lt;p&gt;Questo è ciò che offre Rasepi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ogni documento ha un punteggio di freschezza in tempo reale&lt;/strong&gt; che si aggiorna continuamente in base alla salute dei link, ai lettori, allo stato delle recensioni e altro ancora.&lt;/li&gt;
&lt;li&gt;Ogni documento ha una data di scadenza** che attiva la revisione al suo arrivo.&lt;/li&gt;
&lt;li&gt;Ogni documento ha una classificazione** (pubblicato, in bozza, in revisione, archiviato).&lt;/li&gt;
&lt;li&gt;Ogni versione linguistica ha un proprio segnale di freschezza**, per cui le traduzioni stantie vengono rilevate in modo indipendente.&lt;/li&gt;
&lt;li&gt;I flag del lettore e il tracciamento dei riferimenti incrociati** aggiungono ulteriori segnali di qualità.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quando un sistema AI interroga la base di conoscenza di Rasepi, tutti questi metadati sono disponibili. L&#39;AI non deve indovinare se un documento è affidabile. Il documento glielo dice.&lt;/p&gt;
&lt;h2&gt;Un punto di partenza pratico&lt;/h2&gt;
&lt;p&gt;Se oggi ha un assistente AI in esecuzione sulla sua base di conoscenza, può iniziare a valutare il problema in 30 minuti:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Porre al suo assistente AI 10 domande di cui conosce la risposta.&lt;/strong&gt; Notare quali risposte utilizzano fonti obsolete. Probabilmente scoprirà che almeno 2-3 su 10 si basano su contenuti obsoleti.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**Per ogni risposta fornita dall&#39;AI, guardi il documento di origine. Quando è stato rivisto l&#39;ultima volta? I link sono validi? Si fiderebbe se lo leggesse personalmente?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**Trova il suo documento più vecchio e trascurato che appare ancora nei risultati di ricerca. Ponga all&#39;AI una domanda che lo faccia emergere. L&#39;AI lo usa? Quasi certamente sì.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Stimare l&#39;impatto.&lt;/strong&gt; Quante query al giorno gestisce il suo assistente AI? Se il 20-30% delle risposte si basa su contenuti obsoleti, qual è il costo in termini di tempo sprecato, decisioni sbagliate e perdita di fiducia?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;Gli assistenti AI sono validi solo quanto il contenuto su cui sono costruiti. Al momento, la maggior parte di essi considera ogni documento della sua base di conoscenza come ugualmente valido. Recuperano tutto, il documento che è stato rivisto ieri e quello che nessuno ha toccato in due anni, e lo presentano con la stessa fiducia.&lt;/p&gt;
&lt;p&gt;Questo non è un problema di modello. È un problema di qualità dei dati. La soluzione è semplice: fornire ai documenti dei metadati che indichino agli strumenti di intelligenza artificiale di cosa fidarsi.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;**Il suo assistente AI non dovrebbe essere sicuro di una risposta ottenuta da un documento che nessuno ha esaminato in 18 mesi. Con i segnali giusti, non lo farà.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rasepi fa sì che ogni documento abbia il suo punteggio di fiducia: freschezza, stato di scadenza, classificazione, allineamento linguistico. Gli strumenti di AI interrogano la base di conoscenza e ottengono non solo il contenuto, ma anche il contesto. Le fonti affidabili emergono. Quelle obsolete no. Ecco come dovrebbe funzionare la documentazione alimentata dall&#39;AI.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://rasepi.com/#talk-to-docs&quot;&gt;Guardi come funziona Rasepi con gli strumenti di AI →&lt;/a&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="freshness" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>Parlare con i documenti è meglio che leggerli</title>
    <link href="https://rasepi.com/it/blog/why-talking-to-documents-feels-better-than-reading/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/why-talking-to-documents-feels-better-than-reading/</id>
    <updated>2026-03-10T00:00:00Z</updated>
    <summary>La lettura è potente, ma faticosa. La conversazione è più antica, più veloce e più naturale. Parlare con le informazioni è spesso mentalmente più leggero che scorrere pagine di testo.</summary>
    <content type="html">&lt;p&gt;C&#39;è un motivo per cui le persone dicono &amp;quot;parliamone&amp;quot; quando qualcosa è complesso.&lt;/p&gt;
&lt;p&gt;Quando cerchiamo di capire una nuova idea, di risolvere un problema o di ricordare un processo sotto pressione, spesso la conversazione è più facile della lettura. Non perché la lettura sia negativa. La lettura è uno degli strumenti più potenti che l&#39;uomo abbia mai sviluppato. Ma la lettura è un&#39;abilità appresa che si sovrappone a qualcosa di molto più antico: il linguaggio.&lt;/p&gt;
&lt;p&gt;Siamo parlatori molto prima di essere lettori.&lt;/p&gt;
&lt;p&gt;Questo è più importante di quanto si pensi, soprattutto ora che la maggior parte della conoscenza del mondo vive all&#39;interno di documenti, wiki, PDF e lunghe pagine interne che nessuno vuole aprire a meno che non sia assolutamente necessario.&lt;/p&gt;
&lt;h2&gt;La lettura si impara. La conversazione è nativa.&lt;/h2&gt;
&lt;p&gt;Gli esseri umani hanno parlato per molto tempo prima di scrivere qualcosa. I bambini imparano a capire il linguaggio parlato in modo naturale. La lettura richiede istruzioni esplicite, ripetizioni e anni di pratica.&lt;/p&gt;
&lt;p&gt;Anche per gli adulti altamente alfabetizzati, la lettura è ancora un atto più deliberato rispetto all&#39;ascolto o alla conversazione. Richiede concentrazione visiva, attenzione continua, memoria di lavoro e interpretazione della struttura sulla pagina. Si decodificano simboli, si analizzano frasi, si costruisce un contesto e si decide cosa è importante.&lt;/p&gt;
&lt;p&gt;La conversazione funziona in modo diverso. Quando le informazioni vengono fornite in forma parlata e interattiva, il cervello vive un&#39;esperienza diversa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si sente in sequenza, piuttosto che visivamente travolgente.&lt;/li&gt;
&lt;li&gt;Fornisce feedback e chiarimenti immediati&lt;/li&gt;
&lt;li&gt;Riduce la necessità di scansionare e filtrare grandi blocchi di testo.&lt;/li&gt;
&lt;li&gt;Rispecchia il modo in cui le persone chiedono aiuto nella vita reale.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quest&#39;ultimo punto è molto importante. In condizioni di incertezza, la maggior parte delle persone non vuole istintivamente leggere 1.500 parole. Vogliono chiedere: &amp;quot;Cosa devo fare dopo?&amp;quot;.&lt;/p&gt;
&lt;h2&gt;Parlare riduce l&#39;attrito cognitivo&lt;/h2&gt;
&lt;p&gt;Un documento è statico. Contiene tutto in una volta.&lt;/p&gt;
&lt;p&gt;Sembra utile, e spesso lo è. Ma crea anche attrito. Una pagina piena di titoli, richiami, link, note, esempi e casi limite costringe il lettore a decidere cosa ignorare. Questo è cognitivamente costoso.&lt;/p&gt;
&lt;p&gt;Quando si parla con un sistema informativo, di solito si ha l&#39;esperienza opposta: la rilevanza prima di tutto, i dettagli poi.&lt;/p&gt;
&lt;p&gt;Si pone una domanda. Ottiene una risposta. Poi si fa un&#39;altra domanda.&lt;/p&gt;
&lt;p&gt;Questo modello di interazione riduce il carico mentale in alcuni modi importanti:&lt;/p&gt;
&lt;h3&gt;1. Restringe lo spazio del problema&lt;/h3&gt;
&lt;p&gt;Un documento completo presenta l&#39;intero panorama. Una conversazione presenta il prossimo passo utile.&lt;/p&gt;
&lt;p&gt;Quando qualcuno chiede: &amp;quot;Come faccio ad assumere un nuovo ingegnere?&amp;quot;_ di solito non vuole l&#39;intero manuale immediatamente. Vuole un orientamento. La conversazione consente di iniziare in piccolo e di espandersi solo quando necessario.&lt;/p&gt;
&lt;h3&gt;2. Conserva la memoria di lavoro&lt;/h3&gt;
&lt;p&gt;La lettura richiede di tenere in mente più cose mentre cerca la parte pertinente. L&#39;interazione orale o conversazionale esteriorizza questo sforzo. Il sistema fa una parte maggiore del filtraggio per lei.&lt;/p&gt;
&lt;h3&gt;3. Sembra socialmente familiare&lt;/h3&gt;
&lt;p&gt;Gli esseri umani sono profondamente adattati allo scambio avanti e indietro. Chiediamo. Qualcuno risponde. Noi perfezioniamo. Loro chiariscono. Questo ciclo è una delle forme più antiche di apprendimento che abbiamo.&lt;/p&gt;
&lt;p&gt;Anche quando il &amp;quot;qualcuno&amp;quot; è un sistema, la struttura è ancora naturale.&lt;/p&gt;
&lt;h2&gt;La lettura non è passiva. È proprio questo il punto.&lt;/h2&gt;
&lt;p&gt;Uno dei motivi per cui parlare può sembrare più facile è che la lettura non è così facile come si pensa. I lettori esperti lo fanno sembrare senza sforzo, ma il processo è molto attivo.&lt;/p&gt;
&lt;p&gt;Per leggere bene, bisogna:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;identificare la struttura&lt;/li&gt;
&lt;li&gt;dedurre l&#39;importanza&lt;/li&gt;
&lt;li&gt;risolvere l&#39;ambiguità&lt;/li&gt;
&lt;li&gt;tenere a mente il contesto&lt;/li&gt;
&lt;li&gt;collegare una sezione all&#39;altra&lt;/li&gt;
&lt;li&gt;decidere quando sfogliare e quando rallentare&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questo è un vero lavoro cognitivo.&lt;/p&gt;
&lt;p&gt;In molte situazioni, questo lavoro è utile. La lettura profonda aiuta con le sfumature, la precisione e la comprensione a lungo termine. Ma in altre situazioni, soprattutto quando una persona è stanca, stressata, sovraccarica o sta semplicemente cercando di districarsi, parlare è spesso l&#39;opzione mentalmente più leggera.&lt;/p&gt;
&lt;p&gt;Questo è particolarmente vero sul posto di lavoro, dove le persone di solito non si avvicinano alla documentazione in condizioni ideali. Lo sono:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a metà dell&#39;attività&lt;/li&gt;
&lt;li&gt;interrotto&lt;/li&gt;
&lt;li&gt;cambiano contesto&lt;/li&gt;
&lt;li&gt;cercano di risolvere qualcosa in fretta&lt;/li&gt;
&lt;li&gt;spesso già leggermente frustrato&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In questo stato, l&#39;accesso &lt;em&gt;conversativo&lt;/em&gt; alle informazioni può risultare nettamente migliore rispetto all&#39;accesso alla pagina.&lt;/p&gt;
&lt;h2&gt;Parlare cambia il rapporto con le informazioni&lt;/h2&gt;
&lt;p&gt;Qui c&#39;è anche una dimensione emotiva.&lt;/p&gt;
&lt;p&gt;I documenti possono sembrare formali e distanti. Implicano: Questo può essere utile come materiale di riferimento, ma può anche creare esitazione.&lt;/p&gt;
&lt;p&gt;La conversazione è permissiva. Può essere vago. Può chiedere male. Può ammettere la confusione. Può dire: &amp;quot;Non so bene cosa sto cercando, ma ho bisogno di informazioni sulle richieste di accesso&amp;quot;.&lt;/p&gt;
&lt;p&gt;Questo è importante perché spesso le persone evitano la documentazione non perché non amano le informazioni, ma perché non amano lo sforzo e l&#39;incertezza di trovare la parte giusta.&lt;/p&gt;
&lt;p&gt;Parlare riduce questa barriera.&lt;/p&gt;
&lt;h2&gt;Perché questo è importante ora&lt;/h2&gt;
&lt;p&gt;Per molto tempo, i documenti dovevano essere letti perché non c&#39;erano alternative pratiche. La ricerca ha aiutato le persone a trovare le pagine, ma non ha cambiato il modello di interazione. Bisognava ancora aprire la pagina, scansionarla ed estrarre ciò che serviva.&lt;/p&gt;
&lt;p&gt;Questo sta cambiando.&lt;/p&gt;
&lt;p&gt;Man mano che le interfacce diventano più conversazionali, le persone si aspettano sempre più che le informazioni rispondano, anziché esistere. Vogliono chiedere ciò di cui hanno bisogno in un linguaggio semplice e ricevere qualcosa di adatto al momento.&lt;/p&gt;
&lt;p&gt;Questo non rende la lettura obsoleta. Cambia il suo ruolo.&lt;/p&gt;
&lt;p&gt;La lettura diventa il livello profondo. La conversazione diventa il livello di accesso.&lt;/p&gt;
&lt;p&gt;I migliori sistemi supporteranno entrambi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;parlare quando ha bisogno di orientamento o velocità&lt;/li&gt;
&lt;li&gt;leggere quando ha bisogno di profondità, di verifica o di un contesto completo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Il rischio di semplificare eccessivamente&lt;/h2&gt;
&lt;p&gt;C&#39;è un&#39;avvertenza importante: parlare con le informazioni è meglio solo se le risposte sono affidabili.&lt;/p&gt;
&lt;p&gt;Se un&#39;interfaccia conversazionale fornisce risposte parziali, fuorvianti o troppo sicure, l&#39;esperienza diventa peggiore della lettura, perché elimina la capacità dell&#39;utente di ispezionare direttamente il materiale di partenza.&lt;/p&gt;
&lt;p&gt;Quindi il futuro non è &amp;quot;sostituire tutti i documenti con la voce&amp;quot;. Il futuro è offrire alle persone un modo più umano di accedere ai documenti, senza perdere la profondità e la precisione che la conoscenza scritta offre.&lt;/p&gt;
&lt;p&gt;Questo equilibrio è importante. La conversazione è più facile, ma i documenti mantengono la struttura durevole, i dettagli e la responsabilità di cui le organizzazioni hanno bisogno.&lt;/p&gt;
&lt;h2&gt;Un&#39;interfaccia più umana per la conoscenza&lt;/h2&gt;
&lt;p&gt;Il punto più profondo è semplice: le persone non pensano naturalmente per pagine. Pensano per domande, storie, frammenti e dialoghi.&lt;/p&gt;
&lt;p&gt;Noi chiediamo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Che cosa significa?&lt;/li&gt;
&lt;li&gt;Cosa devo fare prima?&lt;/li&gt;
&lt;li&gt;Qual è la parte importante?&lt;/li&gt;
&lt;li&gt;Può spiegarlo in modo diverso?&lt;/li&gt;
&lt;li&gt;Cosa è cambiato?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Queste sono mosse di conversazione, non di lettura.&lt;/p&gt;
&lt;p&gt;Quindi, quando parlare con le informazioni è mentalmente più facile che leggerle, non è un segno di pigrizia intellettuale. Di solito è un segno che l&#39;interfaccia corrisponde al modo in cui il cervello preferisce affrontare l&#39;incertezza.&lt;/p&gt;
&lt;p&gt;La lettura rimane essenziale. Ma come punto di accesso alla conoscenza, la conversazione è spesso migliore perché è più vicina a ciò che siamo per natura.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Non siamo prima di tutto lettori. Siamo prima di tutto dei parlatori. I sistemi di conoscenza più intuitivi lo ricorderanno.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="voice" />
    <category term="knowledge" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>Piattaforme di documentazione costruite per un&#39;altra epoca</title>
    <link href="https://rasepi.com/it/blog/why-confluence-and-notion-are-struggling-in-the-ai-era/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/why-confluence-and-notion-are-struggling-in-the-ai-era/</id>
    <updated>2026-03-08T00:00:00Z</updated>
    <summary>Confluence e Notion sono stati costruiti per un modello di documentazione pre-AI. Possono evolvere, ma le piattaforme consolidate hanno un bagaglio strutturale. I sistemi più recenti possono progettare per l&#39;AI fin dal primo giorno.</summary>
    <content type="html">&lt;p&gt;Confluence e Notion non sono prodotti scadenti. Questo deve essere detto chiaramente all&#39;inizio.&lt;/p&gt;
&lt;p&gt;Hanno avuto successo per buone ragioni. Confluence è diventato la &lt;a href=&quot;https://www.atlassian.com/software/confluence&quot;&gt;casa predefinita per la documentazione interna&lt;/a&gt; in molte aziende, perché ha dato ai team un luogo centrale per scrivere, organizzare e condividere le conoscenze. Notion &lt;a href=&quot;https://www.notion.com/about&quot;&gt;ha conquistato le persone&lt;/a&gt; con flessibilità, esperienze di scrittura più pulite e una superficie del prodotto più moderna.&lt;/p&gt;
&lt;p&gt;Entrambe le piattaforme hanno risolto problemi reali nell&#39;epoca per cui sono state costruite.&lt;/p&gt;
&lt;p&gt;Il problema ora è che il mondo intorno a loro è cambiato più velocemente delle loro fondamenta.&lt;/p&gt;
&lt;p&gt;Non siamo più in un mondo in cui la documentazione deve solo essere scritta, archiviata e ricercata. Siamo in un mondo in cui ci si aspetta che la documentazione sia sempre più:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;leggibile dalla macchina&lt;/li&gt;
&lt;li&gt;consapevole della freschezza&lt;/li&gt;
&lt;li&gt;sicura per il recupero da parte dell&#39;AI&lt;/li&gt;
&lt;li&gt;sufficientemente strutturata per l&#39;automazione&lt;/li&gt;
&lt;li&gt;dinamico tra le varie lingue e i vari tipi di pubblico&lt;/li&gt;
&lt;li&gt;continuamente affidabile, non solo disponibile&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questa è una barra diversa.&lt;/p&gt;
&lt;h2&gt;Sono stati costruiti per un modello di conoscenza precedente all&#39;Intelligenza Artificiale.&lt;/h2&gt;
&lt;p&gt;Le piattaforme di documentazione tradizionali sono state progettate sulla base di un semplice presupposto: se la pagina esiste ed è ricercabile, il problema è per lo più risolto.&lt;/p&gt;
&lt;p&gt;Questo era sufficiente quando l&#39;utente principale era un essere umano che apriva un wiki, sfogliava la pagina e applicava un giudizio. In quel modello, il compito della piattaforma era quello di facilitare la scrittura e la navigazione.&lt;/p&gt;
&lt;p&gt;L&#39;intelligenza artificiale cambia la descrizione del lavoro.&lt;/p&gt;
&lt;p&gt;Ora la piattaforma non si limita ad archiviare la conoscenza per le persone. Sta producendo materiale di partenza per i sistemi che recuperano, classificano, riassumono e rispondono automaticamente alle domande.&lt;/p&gt;
&lt;p&gt;Ciò introduce nuovi requisiti che le architetture precedenti non consideravano prioritari:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quali contenuti sono affidabili in questo momento?&lt;/li&gt;
&lt;li&gt;Quali pagine sono obsolete ma ancora ricercabili?&lt;/li&gt;
&lt;li&gt;Quali sezioni sono state modificate di recente?&lt;/li&gt;
&lt;li&gt;Quale versione linguistica è attuale?&lt;/li&gt;
&lt;li&gt;Quali contenuti sono in bozza, archiviati, specifici di una regione o a bassa affidabilità?&lt;/li&gt;
&lt;li&gt;Quali documenti dovrebbero essere esclusi completamente dalle risposte dell&#39;AI?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una piattaforma che non è stata costruita intorno a queste domande deve adattarle a posteriori. Questo è sempre più difficile che progettare per loro fin dall&#39;inizio.&lt;/p&gt;
&lt;h2&gt;La forza dell&#39;eredità diventa un freno all&#39;eredità&lt;/h2&gt;
&lt;p&gt;I prodotti consolidati hanno dei vantaggi: distribuzione, ecosistema, marchio, familiarità con i clienti, integrazioni e team che sanno come spedire. Ma questi stessi punti di forza possono rallentare il cambiamento strutturale.&lt;/p&gt;
&lt;p&gt;Perché? Perché le piattaforme mature comportano degli impegni.&lt;/p&gt;
&lt;p&gt;Hanno:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;anni di decisioni accumulate sui prodotti&lt;/li&gt;
&lt;li&gt;enormi basi installate con flussi di lavoro esistenti&lt;/li&gt;
&lt;li&gt;aspettative di retrocompatibilità&lt;/li&gt;
&lt;li&gt;plugin ed estensioni che dipendono dal vecchio comportamento&lt;/li&gt;
&lt;li&gt;modelli di dati ottimizzati per i casi d&#39;uso di ieri&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quando una piattaforma come Confluence o Notion vuole aggiungere una funzionalità veramente nuova, spesso deve adattarla al sistema esistente, piuttosto che utilizzarla.&lt;/p&gt;
&lt;p&gt;Questa è la sfida dell&#39;incumbency: non solo si costruisce il futuro, ma si trascina con sé il passato.&lt;/p&gt;
&lt;h2&gt;Aggiungere funzionalità di AI non significa diventare nativi di AI&lt;/h2&gt;
&lt;p&gt;Molte piattaforme consolidate stanno ora sovrapponendo l&#39;AI. Riassunti. Assistenza alla scrittura. Miglioramenti nella ricerca. Interfacce Q&amp;amp;A. Confluence ha &lt;a href=&quot;https://www.atlassian.com/platform/intelligence&quot;&gt;Atlassian Intelligence&lt;/a&gt;, Notion ha lanciato &lt;a href=&quot;https://www.notion.com/product/ai&quot;&gt;Notion AI&lt;/a&gt;, e GitBook ha aggiunto &lt;a href=&quot;https://docs.gitbook.com/product-tour/searching-your-content/gitbook-ai&quot;&gt;AI-powered search&lt;/a&gt;. Si tratta di funzionalità utili. Alcune sono buone.&lt;/p&gt;
&lt;p&gt;Ma c&#39;è una differenza significativa tra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aggiungere funzionalità AI a un prodotto di documentazione&lt;/li&gt;
&lt;li&gt;costruire un prodotto di documentazione la cui architettura di base presuppone il consumo di IA fin dal primo giorno.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il primo approccio spesso porta a funzioni di assistenza ai margini. Il secondo cambia le fondamenta.&lt;/p&gt;
&lt;p&gt;Una piattaforma di conoscenza nativa dell&#39;AI pone domande di progettazione diverse fin dall&#39;inizio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;come devono essere strutturati i documenti in modo che i sistemi possano ragionare su di essi in modo sicuro?&lt;/li&gt;
&lt;li&gt;come deve essere rappresentata la fiducia?&lt;/li&gt;
&lt;li&gt;quali metadati devono essere di prima classe, non opzionali?&lt;/li&gt;
&lt;li&gt;in che modo i contenuti obsoleti dovrebbero degradare la loro visibilità?&lt;/li&gt;
&lt;li&gt;come limitare le risposte quando le fonti sottostanti sono deboli?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Queste sono domande di architettura, non di funzionalità.&lt;/p&gt;
&lt;h2&gt;Le piattaforme fresche hanno un vantaggio temporaneo&lt;/h2&gt;
&lt;p&gt;Qui è dove le piattaforme più recenti possono vincere, almeno per un po&#39;.&lt;/p&gt;
&lt;p&gt;Una nuova piattaforma ha la libertà di progettare intorno ai vincoli di oggi, invece che alle abitudini di ieri. Non deve conservare un decennio di presupposti su cosa sia un documento o su come debba comportarsi un wiki. Può fare scelte diverse in anticipo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trattare la freschezza come un concetto di prima classe&lt;/li&gt;
&lt;li&gt;rendere visibile la fiducia nella fonte sia agli esseri umani che alle macchine&lt;/li&gt;
&lt;li&gt;memorizzare metadati più ricchi sullo stato dei contenuti&lt;/li&gt;
&lt;li&gt;integrare i flussi di lavoro multilingue nel modello principale, anziché aggiungerli in un secondo momento&lt;/li&gt;
&lt;li&gt;decidere che la ricerca e il reperimento dell&#39;intelligenza artificiale debbano essere classificati in base alla fiducia, non solo alla pertinenza&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Che la libertà è importante.&lt;/p&gt;
&lt;p&gt;Nella tecnologia, gli operatori storici sono spesso più forti nei periodi di stabilità. I nuovi operatori sono spesso più forti quando il modello stesso si sta spostando.&lt;/p&gt;
&lt;p&gt;L&#39;era dell&#39;AI è uno di questi cambiamenti.&lt;/p&gt;
&lt;h2&gt;Perché questo è particolarmente difficile per Confluence&lt;/h2&gt;
&lt;p&gt;Confluence è potente, ma proviene da una visione del mondo più vecchia. È stato costruito intorno a &lt;a href=&quot;https://support.atlassian.com/confluence-cloud/docs/use-spaces-to-organize-your-work/&quot;&gt;spazi per i team, pagine, navigazione gerarchica&lt;/a&gt; e a un &lt;a href=&quot;https://marketplace.atlassian.com/&quot;&gt;modello aziendale ricco di plugin&lt;/a&gt;. Queste scelte avevano senso. Hanno ancora senso per molte organizzazioni.&lt;/p&gt;
&lt;p&gt;Ma significano anche che il prodotto è molto complesso. Le piattaforme aziendali raramente possono reinventarsi in modo pulito. Devono negoziare con la propria storia.&lt;/p&gt;
&lt;p&gt;Questo rende la modernizzazione più lenta. Non è impossibile. Solo più lenta.&lt;/p&gt;
&lt;p&gt;Quando i requisiti dell&#39;era dell&#39;Intelligenza Artificiale richiedono metadati più puliti, una modellazione della fiducia più esplicita o una governance dei contenuti più basata sulle opinioni, un sistema costruito per ottenere la massima flessibilità attraverso anni di estensioni può faticare a muoversi in modo coerente.&lt;/p&gt;
&lt;h2&gt;Perché questo è particolarmente complicato per Notion&lt;/h2&gt;
&lt;p&gt;Notion ha un problema diverso. Sembra più nuovo, più leggero e più flessibile. Ma la flessibilità può anche giocare a suo sfavore.&lt;/p&gt;
&lt;p&gt;Il punto di forza di Notion è che &lt;a href=&quot;https://www.notion.com/product&quot;&gt;quasi tutto può diventare una pagina, un database, una nota, un documento leggero o uno spazio collaborativo&lt;/a&gt;. Questa flessibilità è ottima per i team. Non lo è altrettanto quando si ha bisogno di forti garanzie sul significato del contenuto, sullo stato in cui si trova e sul fatto che debba essere utilizzato come fonte attendibile da un sistema di intelligenza artificiale.&lt;/p&gt;
&lt;p&gt;Più una piattaforma è libera, più è difficile imporre una semantica affidabile in seguito.&lt;/p&gt;
&lt;p&gt;I sistemi di AI prosperano grazie alla struttura, ai metadati espliciti e ai segnali di fiducia. Gli spazi di lavoro flessibili e generici spesso necessitano di molte interpretazioni prima che il loro contenuto sia sicuro per questo tipo di utilizzo.&lt;/p&gt;
&lt;h2&gt;Niente di tutto questo significa che siano condannati.&lt;/h2&gt;
&lt;p&gt;Sarebbe un&#39;analisi pigra dire che Confluence e Notion non possono adattarsi. Certo che possono.&lt;/p&gt;
&lt;p&gt;Hanno team intelligenti, risorse significative e forti incentivi. Invieranno più funzionalità di intelligenza artificiale. Miglioreranno il reperimento, l&#39;assistenza all&#39;autore, i sommari, la governance e i flussi di lavoro strutturati. Nel tempo, potrebbero colmare gran parte del divario.&lt;/p&gt;
&lt;p&gt;Ma la tempistica è importante.&lt;/p&gt;
&lt;p&gt;Quando si verifica un cambiamento di questo tipo, il vantaggio spesso appartiene a chi è disposto a ricostruire le ipotesi più velocemente. Le piattaforme più recenti possono muoversi con maggiore coerenza, perché non sono in fase di retrofitting. Questo dà loro una finestra.&lt;/p&gt;
&lt;p&gt;Potrebbe non essere una finestra permanente. Ma è reale.&lt;/p&gt;
&lt;h2&gt;La prossima fase delle piattaforme di documentazione&lt;/h2&gt;
&lt;p&gt;La prossima generazione di strumenti di documentazione sarà probabilmente giudicata meno per la capacità di far scrivere pagine alle persone e più per la capacità di gestire la conoscenza come un sistema affidabile.&lt;/p&gt;
&lt;p&gt;Ciò significa che i vincitori faranno probabilmente bene cinque cose:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Modelleranno la fiducia in modo esplicito.&lt;/li&gt;
&lt;li&gt;Distingueranno le conoscenze attuali da quelle obsolete.&lt;/li&gt;
&lt;li&gt;Gestiranno il recupero dell&#39;intelligenza artificiale come una superficie del prodotto principale, non come un componente aggiuntivo.&lt;/li&gt;
&lt;li&gt;Supporteranno la conoscenza multilingue e specifica del pubblico senza frammentazione.&lt;/li&gt;
&lt;li&gt;Offriranno ai team un maggiore controllo su quali informazioni vengono visualizzate, a chi e in quali condizioni.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si tratta di una categoria diversa dal classico wiki.&lt;/p&gt;
&lt;h2&gt;Perché i nuovi inizi sono importanti&lt;/h2&gt;
&lt;p&gt;Ci sono dei momenti nel software in cui un prodotto pulito ha un vantaggio non perché gli operatori storici sono incompetenti, ma perché la storia è costosa.&lt;/p&gt;
&lt;p&gt;Questo è uno di quei momenti.&lt;/p&gt;
&lt;p&gt;Una nuova piattaforma può decidere, fin dal primo giorno, che i documenti non sono solo pagine. Sono fonti attive per gli esseri umani, gli agenti, i sistemi di ricerca e gli assistenti AI. Questo presupposto cambia tutto a valle.&lt;/p&gt;
&lt;p&gt;Confluence e Notion possono arrivarci. Ma il percorso è più lungo, perché devono trasformare sistemi ottimizzati per un&#39;altra epoca.&lt;/p&gt;
&lt;p&gt;Questa trasformazione richiede tempo. Nel frattempo, le piattaforme più recenti hanno lo spazio per definire come dovrebbe essere la moderna infrastruttura della conoscenza.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Il più grande vantaggio di una piattaforma nuova non è la novità. È la libertà dai vecchi presupposti, proprio nel momento in cui questi presupposti smettono di funzionare.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Questo è un pezzo di prospettiva. Le affermazioni sui prodotti concorrenti si basano sulla documentazione e sugli annunci dei prodotti disponibili al pubblico al marzo 2026. Nutriamo un sincero rispetto sia per Confluence che per Notion: sono prodotti eccellenti che servono bene a milioni di team.&lt;/em&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="platforms" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>All&#39;interno dell&#39;architettura Rasepi: Plugin, protezioni d&#39;azione e pipeline</title>
    <link href="https://rasepi.com/it/blog/how-plugin-guardrail-and-pipeline-systems-work/" rel="alternate" type="text/html" />
    <id>https://rasepi.com/it/blog/how-plugin-guardrail-and-pipeline-systems-work/</id>
    <updated>2026-03-06T00:00:00Z</updated>
    <summary>Un approfondimento tecnico su come funzionano il sistema di plugin, la pipeline di action guard e il motore di traduzione a livello di blocco di Rasepi, con codice reale tratto dalla base di codice.</summary>
    <content type="html">&lt;p&gt;La maggior parte delle piattaforme di documentazione parla di &amp;quot;estensibilità&amp;quot; come le compagnie aeree parlano di &amp;quot;spazio per le gambe&amp;quot;. Tecnicamente presente, praticamente deludente. Volevo che l&#39;architettura di Rasepi fosse veramente estensibile senza diventare imprevedibile, quindi abbiamo costruito tre sistemi interconnessi: &lt;strong&gt;plugins&lt;/strong&gt; per le capacità, &lt;strong&gt;action guards&lt;/strong&gt; per il controllo e &lt;strong&gt;pipelines&lt;/strong&gt; per l&#39;esecuzione deterministica.&lt;/p&gt;
&lt;p&gt;Questo post illustra il funzionamento di ciascuno di essi nella nostra base di codice reale.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/architecture-pipeline.svg&quot; alt=&quot;Architettura Rasepi: Plugin, Guardie e Pipeline che lavorano insieme&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Il sistema di plugin: modulare per design&lt;/h2&gt;
&lt;p&gt;Ogni plugin in Rasepi implementa &lt;code&gt;IPluginModule&lt;/code&gt;, un&#39;unica interfaccia che dichiara che cos&#39;è il plugin, di quali servizi ha bisogno e quali percorsi espone:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IPluginModule
{
    PluginManifest Manifest { get; }
    void RegisterServices(IServiceCollection services);
    void MapRoutes(IEndpointRouteBuilder routes);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il &lt;code&gt;PluginManifest&lt;/code&gt; è un dato puro. Descrive il plugin senza eseguire nulla:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class PluginManifest
{
    public required string Id { get; init; }
    public required string Name { get; init; }
    public required string Version { get; init; }
    public string Description { get; init; }
    public string Category { get; init; }
    public IReadOnlyDictionary&amp;lt;string, string&amp;gt; UiContributions { get; init; }
    public bool HasSettings { get; init; }
    public bool HasEndpoints { get; init; }
    public IReadOnlyList&amp;lt;string&amp;gt; Dependencies { get; init; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notare &lt;code&gt;UiContributions&lt;/code&gt;. Questo dizionario mappa i punti di estensione del frontend con i nomi dei componenti, in modo che il frontend Vue sappia quali componenti dell&#39;interfaccia utente contribuisce a ciascun plugin (un pulsante della barra degli strumenti, un pannello della barra laterale, una pagina di impostazioni).&lt;/p&gt;
&lt;h3&gt;La registrazione è una riga per ogni plugin&lt;/h3&gt;
&lt;p&gt;All&#39;avvio, registriamo i plugin attraverso un&#39;API fluente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var pluginRegistry = new PluginRegistry();

pluginRegistry
    .AddPlugin&amp;lt;WorkflowPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;RulesPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;RetentionPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;ClassificationPluginModule&amp;gt;(builder.Services);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ogni chiamata istanzia il modulo, lo memorizza nel registro e chiama &lt;code&gt;RegisterServices()&lt;/code&gt; per collegare le sue dipendenze. Dopo la creazione dell&#39;applicazione, una singola riga mappa tutti i percorsi dei plugin:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;app.MapPluginRoutes(pluginRegistry);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sotto il cofano, ogni plugin riceve un gruppo di rotte con scopa in &lt;code&gt;/api/plugins/{pluginId}/&lt;/code&gt; con l&#39;autorizzazione applicata automaticamente.&lt;/p&gt;
&lt;h3&gt;Esempio reale: il plugin Workflow&lt;/h3&gt;
&lt;p&gt;Ecco come appare un plugin reale, il modulo Workflow &amp;amp; Approvals:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class WorkflowPluginModule : IPluginModule
{
    public const string PluginId = &amp;quot;workflow&amp;quot;;

    public PluginManifest Manifest { get; } = new()
    {
        Id = PluginId,
        Name = &amp;quot;Workflow &amp;amp; Approvals&amp;quot;,
        Version = &amp;quot;1.0.0&amp;quot;,
        Description = &amp;quot;Adds approval workflows to entry publishing.&amp;quot;,
        Category = &amp;quot;Workflow&amp;quot;,
        HasSettings = true,
        HasEndpoints = true,
        UiContributions = new Dictionary&amp;lt;string, string&amp;gt;
        {
            [&amp;quot;entry.toolbar.publish&amp;quot;] = &amp;quot;WorkflowPublishButton&amp;quot;,
            [&amp;quot;entry.sidebar.status&amp;quot;]  = &amp;quot;WorkflowStatusPanel&amp;quot;,
            [&amp;quot;hub.admin.settings&amp;quot;]    = &amp;quot;WorkflowHubSettings&amp;quot;,
        }
    };

    public void RegisterServices(IServiceCollection services)
    {
        services.AddScoped&amp;lt;IWorkflowService, WorkflowService&amp;gt;();
        services.AddScoped&amp;lt;IActionGuard, WorkflowPublishGuard&amp;gt;();
    }

    public void MapRoutes(IEndpointRouteBuilder routes)
    {
        WorkflowEndpoints.Map(routes);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La piattaforma principale non fa mai riferimento a &lt;code&gt;WorkflowService&lt;/code&gt; o &lt;code&gt;WorkflowPublishGuard&lt;/code&gt; direttamente. Li scopre attraverso il contenitore DI. Questa è la chiave per azzerare l&#39;accoppiamento. L&#39;applicazione principale non tocca mai il codice dei plugin.&lt;/p&gt;
&lt;h2&gt;Guardie d&#39;azione: il livello di controllo&lt;/h2&gt;
&lt;p&gt;I plugin aggiungono capacità. Le guardie d&#39;azione decidono se questa capacità, o qualsiasi azione del nucleo, può procedere. Sono validatori sincroni che intercettano le operazioni prima dell&#39;esecuzione.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/action-guard-flow.svg&quot; alt=&quot;Flusso di valutazione delle guardie d&#39;azione&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L&#39;interfaccia è volutamente minimale:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IActionGuard
{
    string PluginId { get; }
    string? ActionName { get; }  // null means guard ALL actions

    Task&amp;lt;ActionGuardResult&amp;gt; EvaluateAsync(
        ActionGuardContext context,
        IServiceProvider services,
        CancellationToken ct = default);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando &lt;code&gt;ActionName&lt;/code&gt; è &lt;code&gt;null&lt;/code&gt;, la guardia viene eseguita per ogni azione. Quando è impostato su qualcosa come &lt;code&gt;&amp;quot;Entry.Publish&amp;quot;&lt;/code&gt;, intercetta solo quell&#39;azione specifica.&lt;/p&gt;
&lt;h3&gt;I contratti di contesto e di risultato&lt;/h3&gt;
&lt;p&gt;Ogni guardia riceve un contesto tipizzato con il nome dell&#39;azione, il tenant, l&#39;utente, l&#39;entità e un bagaglio di proprietà:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed record ActionGuardContext(
    string ActionName,
    Guid TenantId,
    Guid UserId,
    Guid EntityId,
    IReadOnlyDictionary&amp;lt;string, object?&amp;gt; Properties)
{
    public T? Get&amp;lt;T&amp;gt;(string key) =&amp;gt;
        Properties.TryGetValue(key, out var v) &amp;amp;&amp;amp; v is T typed
            ? typed : default;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E ogni guardia restituisce un risultato prevedibile: allow, deny o allow-with-modifications:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed record ActionGuardResult
{
    public bool IsAllowed { get; init; }
    public string? ReasonCode { get; init; }
    public string? Message { get; init; }
    public IReadOnlyDictionary&amp;lt;string, object?&amp;gt;? Modifications { get; init; }

    public static ActionGuardResult Allow() =&amp;gt;
        new() { IsAllowed = true };

    public static ActionGuardResult Deny(
        string reasonCode, string message) =&amp;gt;
        new() { IsAllowed = false, ReasonCode = reasonCode, Message = message };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il campo &lt;code&gt;Modifications&lt;/code&gt; è importante. Un guardiano può approvare un&#39;azione ma riscrivere parte del contenuto (ad esempio, redigere i segreti prima della pubblicazione).&lt;/p&gt;
&lt;h3&gt;Nomi canonici delle azioni&lt;/h3&gt;
&lt;p&gt;Definiamo tutte le azioni intercettabili come costanti di stringa, in modo che non ci siano ambiguità su ciò che un guardiano può indirizzare:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public static class ActionNames
{
    public static class Entry
    {
        public const string Create  = &amp;quot;Entry.Create&amp;quot;;
        public const string Save    = &amp;quot;Entry.Save&amp;quot;;
        public const string Publish = &amp;quot;Entry.Publish&amp;quot;;
        public const string Delete  = &amp;quot;Entry.Delete&amp;quot;;
        public const string Archive = &amp;quot;Entry.Archive&amp;quot;;
        public const string Renew   = &amp;quot;Entry.Renew&amp;quot;;
    }

    public static class Hub
    {
        public const string Create = &amp;quot;Hub.Create&amp;quot;;
        public const string Delete = &amp;quot;Hub.Delete&amp;quot;;
        public const string TransferOwnership = &amp;quot;Hub.TransferOwnership&amp;quot;;
    }

    public static class Translation
    {
        public const string Create  = &amp;quot;Translation.Create&amp;quot;;
        public const string Publish = &amp;quot;Translation.Publish&amp;quot;;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Esempio reale: bloccare la pubblicazione senza approvazione&lt;/h3&gt;
&lt;p&gt;Il plugin Workflow registra una guardia che intercetta &lt;code&gt;Entry.Publish&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class WorkflowPublishGuard : IActionGuard
{
    public string PluginId =&amp;gt; WorkflowPluginModule.PluginId;
    public string? ActionName =&amp;gt; ActionNames.Entry.Publish;

    public async Task&amp;lt;ActionGuardResult&amp;gt; EvaluateAsync(
        ActionGuardContext context,
        IServiceProvider services,
        CancellationToken ct = default)
    {
        var db = services.GetRequiredService&amp;lt;RasepiDbContext&amp;gt;();
        var entry = await db.Entries
            .AsNoTracking()
            .FirstOrDefaultAsync(e =&amp;gt; e.Id == context.EntityId, ct);

        if (entry is null)
            return ActionGuardResult.Allow();

        var workflowService = services.GetRequiredService&amp;lt;IWorkflowService&amp;gt;();
        var check = await workflowService
            .CheckPublishAllowedAsync(entry.Id, entry.HubId);

        if (check.IsAllowed)
            return ActionGuardResult.Allow();

        return ActionGuardResult.Deny(
            &amp;quot;workflow.approval_required&amp;quot;,
            check.Message ?? &amp;quot;Approval required before publishing.&amp;quot;);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La piattaforma principale non sa nulla dei flussi di lavoro di approvazione. Chiama semplicemente &lt;code&gt;Entry.Publish&lt;/code&gt; attraverso la pipeline e la guardia lo blocca se il flusso di lavoro non è stato completato.&lt;/p&gt;
&lt;h2&gt;La pipeline di azione: dove tutto converge&lt;/h2&gt;
&lt;p&gt;Il &lt;code&gt;ActionPipeline&lt;/code&gt; è il percorso di esecuzione unico per tutte le operazioni protette. Risolve quali protezioni si applicano, le valuta e blocca o esegue l&#39;azione.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class ActionPipeline : IActionPipeline
{
    public async Task&amp;lt;ActionPipelineResult&amp;gt; ExecuteAsync(
        string actionName,
        ActionGuardContext context,
        Func&amp;lt;Task&amp;gt; action,
        CancellationToken ct = default)
    {
        var result = await EvaluateAsync(actionName, context, ct);
        if (!result.IsAllowed) return result;

        await action();  // All guards passed — execute

        return result;   // Return modifications for caller
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il metodo &lt;code&gt;EvaluateAsync&lt;/code&gt; fa il lavoro pesante:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;ActionPipelineResult&amp;gt; EvaluateAsync(
    string actionName,
    ActionGuardContext context,
    CancellationToken ct = default)
{
    // 1. Which plugins are enabled for this tenant?
    var enabledPlugins = await _resolver.GetEnabledPluginIdsAsync();

    // 2. Which guards match this action?
    var applicable = _guards
        .Where(g =&amp;gt; enabledPlugins.Contains(g.PluginId))
        .Where(g =&amp;gt; g.ActionName == null || g.ActionName == actionName)
        .ToList();

    // 3. Evaluate each guard
    var denials = new List&amp;lt;ActionGuardResult&amp;gt;();
    var modifications = new List&amp;lt;ActionGuardResult&amp;gt;();

    foreach (var guard in applicable)
    {
        try
        {
            var guardResult = await guard.EvaluateAsync(context, _services, ct);
            if (!guardResult.IsAllowed)
                denials.Add(guardResult);
            else if (guardResult.Modifications?.Count &amp;gt; 0)
                modifications.Add(guardResult);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, &amp;quot;Guard threw. Treating as Allow.&amp;quot;);
        }
    }

    // 4. Any denial blocks the whole action
    if (denials.Count &amp;gt; 0)
        return ActionPipelineResult.Blocked(denials);

    return modifications.Count &amp;gt; 0
        ? ActionPipelineResult.Allowed(modifications)
        : ActionPipelineResult.Allowed();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Qui ci sono tre importanti decisioni di progettazione:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Risoluzione per inquilino.&lt;/strong&gt; Il &lt;code&gt;TenantPluginResolver&lt;/code&gt; controlla quali plugin ogni inquilino ha installato e abilitato. Una protezione per un plugin disabilitato non viene mai eseguita.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tutti devono passare.&lt;/strong&gt; Se una guardia nega, l&#39;azione viene bloccata. Si tratta di una posizione di sicurezza intenzionale.&lt;/li&gt;
&lt;li&gt;**Se una guardia lancia un&#39;eccezione, viene registrata e trattata come &lt;code&gt;Allow()&lt;/code&gt;. Questo impedisce a un plugin non funzionante di bloccare l&#39;intera piattaforma.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Risoluzione dei plugin per inquilino&lt;/h3&gt;
&lt;p&gt;Il resolver interroga la tabella &lt;code&gt;TenantPluginInstallations&lt;/code&gt; (automaticamente ottimizzata per il tenant corrente dai filtri di interrogazione globale EF):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class TenantPluginResolver : ITenantPluginResolver
{
    public async Task&amp;lt;IReadOnlySet&amp;lt;string&amp;gt;&amp;gt; GetEnabledPluginIdsAsync(
        CancellationToken ct = default)
    {
        if (_cache is not null) return _cache;

        var ids = await _db.TenantPluginInstallations
            .Where(i =&amp;gt; i.IsEnabled)
            .Select(i =&amp;gt; i.PluginId)
            .ToListAsync(ct);

        _cache = ids.ToHashSet();
        return _cache;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Effetti collaterali guidati dagli eventi&lt;/h2&gt;
&lt;p&gt;Le azioni sono sincrone. Gli effetti collaterali non lo sono. Dopo il completamento di un&#39;azione, il servizio pubblica un evento di dominio:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;await _eventPublisher.PublishAsync(
    EventNames.Entry.Created, entry.Id, new { entry.OriginalLanguage });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gli eventi vengono inseriti in un canale in memoria ed elaborati da un &lt;code&gt;EventConsumerWorker&lt;/code&gt; in background. Il worker instrada gli eventi a più sistemi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tracciamento dell&#39;attività.&lt;/strong&gt; Registra chi ha fatto cosa, quando&lt;/li&gt;
&lt;li&gt;Fatturazione delle traduzioni.** Traccia i costi per ogni fornitore&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestori di eventi dei plugin.&lt;/strong&gt; Qualsiasi plugin può sottoscrivere gli eventi del dominio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I gestori di eventi dei plugin implementano &lt;code&gt;IPluginEventHandler&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IPluginEventHandler
{
    string PluginId { get; }
    IReadOnlyList&amp;lt;string&amp;gt; SubscribedEvents { get; }

    Task HandleAsync(
        string eventName, Guid entityId,
        Guid? tenantId, Guid? userId,
        string payloadJson, IServiceProvider services,
        CancellationToken ct = default);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il worker invoca solo i gestori il cui plugin è abilitato per il tenant. Ciò significa che gli effetti collaterali del plugin A non si disperdono in un inquilino che ha installato solo il plugin B.&lt;/p&gt;
&lt;h2&gt;Il motore di traduzione a livello di blocco&lt;/h2&gt;
&lt;p&gt;Questo è il punto in cui l&#39;architettura dà i suoi frutti in modo più evidente.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rasepi.com/it/blog/img/block-translation.svg&quot; alt=&quot;Traduzione a livello di blocco: solo i blocchi modificati vengono ritradotti&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le piattaforme tradizionali traducono interi documenti. Noi traduciamo singoli &lt;strong&gt;blocchi&lt;/strong&gt;: paragrafi, intestazioni, voci di elenco. Quando un utente modifica un paragrafo in un documento di 50 blocchi, solo quel paragrafo deve essere ritradotto. Questa è la fonte del nostro 94% di risparmio sui costi.&lt;/p&gt;
&lt;h3&gt;Come vengono creati i blocchi da TipTap JSON&lt;/h3&gt;
&lt;p&gt;Quando un utente salva un documento, l&#39;editor TipTap invia JSON come questo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;type&amp;quot;: &amp;quot;doc&amp;quot;,
  &amp;quot;content&amp;quot;: [
    {
      &amp;quot;type&amp;quot;: &amp;quot;paragraph&amp;quot;,
      &amp;quot;attrs&amp;quot;: { &amp;quot;blockId&amp;quot;: &amp;quot;a1b2c3d4-...&amp;quot; },
      &amp;quot;content&amp;quot;: [{ &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Hello world&amp;quot; }]
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il &lt;code&gt;BlockTranslationService&lt;/code&gt; analizza questo JSON e crea singoli record &lt;code&gt;EntryBlock&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;List&amp;lt;EntryBlock&amp;gt;&amp;gt; CreateBlocksFromDocumentAsync(
    Guid entryId, string language, string contentJson,
    int version, Guid userId)
{
    var doc = JsonDocument.Parse(contentJson);
    var content = doc.RootElement.GetProperty(&amp;quot;content&amp;quot;);

    int position = 0;
    foreach (var node in content.EnumerateArray())
    {
        var blockType = node.GetProperty(&amp;quot;type&amp;quot;).GetString();
        var blockJson = JsonSerializer.Serialize(node);

        // Strip metadata attrs before hashing
        var hashInput = StripBlockMetaAttrs(blockJson);

        var block = new EntryBlock
        {
            Id = ExtractOrGenerateBlockId(node),
            EntryId = entryId,
            Language = language,
            Position = position++,
            BlockType = blockType,
            ContentJson = blockJson,
            ContentHash = CalculateContentHash(hashInput),
            IsNoTranslate = ExtractNoTranslateFlag(node),
            Version = version,
        };

        _context.EntryBlocks.Add(block);
    }

    await _context.SaveChangesAsync();
    return blocks;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Hashing SHA256 per il rilevamento delle stalle&lt;/h3&gt;
&lt;p&gt;L&#39;hash del contenuto è il cuore del rilevamento delle stalle. Eseguiamo l&#39;hash del contenuto del blocco (dopo aver eliminato gli attributi dei metadati come &lt;code&gt;blockId&lt;/code&gt; e &lt;code&gt;deleted&lt;/code&gt;) utilizzando SHA256:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;private string CalculateContentHash(string content)
{
    using var sha256 = SHA256.Create();
    var hashBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(content));
    return Convert.ToHexString(hashBytes);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando un blocco sorgente cambia, il suo hash cambia. Il sistema confronta quindi il &lt;code&gt;SourceContentHash&lt;/code&gt; di ogni blocco di traduzione con l&#39;hash corrente della sorgente, e le discrepanze vengono contrassegnate con &lt;code&gt;Stale&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task MarkTranslationsAsStaleAsync(List&amp;lt;Guid&amp;gt; changedBlockIds)
{
    var affected = await _context.TranslationBlocks
        .Where(t =&amp;gt; changedBlockIds.Contains(t.SourceBlockId))
        .ToListAsync();

    foreach (var translation in affected)
    {
        translation.Status = TranslationStatus.Stale;
        translation.UpdatedAt = DateTime.UtcNow;
    }

    await _context.SaveChangesAsync();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Adattamento della struttura&lt;/h3&gt;
&lt;p&gt;I traduttori possono cambiare i tipi di blocco tra le varie lingue. Un elenco puntato inglese potrebbe diventare un elenco numerato tedesco, una preferenza culturale. Il sistema ne tiene traccia:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var translation = new TranslationBlock
{
    SourceBlockId = sourceBlockId,
    Language = targetLanguage,
    BlockType = translatedBlockType,
    SourceBlockType = sourceBlock.BlockType,
    IsStructureAdapted = translatedBlockType != sourceBlock.BlockType,
    SourceContentHash = sourceBlock.ContentHash,
    Status = TranslationStatus.UpToDate,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Fornitori di traduzione come plugin&lt;/h3&gt;
&lt;p&gt;I servizi di traduzione esterni (DeepL, Google Translate, ecc.) si collegano tramite &lt;code&gt;ITranslationProviderPlugin&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface ITranslationProviderPlugin : IRasepiPlugin
{
    string[] GetSupportedLanguages();

    Task&amp;lt;string&amp;gt; TranslateAsync(
        string text, string sourceLanguage, string targetLanguage);

    Task&amp;lt;TranslationBatchResult&amp;gt; TranslateBatchAsync(
        Dictionary&amp;lt;string, string&amp;gt; texts,
        string sourceLanguage, string targetLanguage);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il metodo batch riceve un dizionario di ID di blocchi da contenere, li traduce tutti e restituisce le traduzioni con un conteggio di caratteri. Dato che inviamo solo i blocchi non completi, e non l&#39;intero documento, i costi rimangono minimi.&lt;/p&gt;
&lt;h2&gt;Isolamento degli inquilini: la rete di sicurezza invisibile&lt;/h2&gt;
&lt;p&gt;Tutti i sistemi sopra descritti funzionano all&#39;interno di un rigoroso isolamento degli inquilini.&lt;/p&gt;
&lt;p&gt;Il &lt;code&gt;TenantContextMiddleware&lt;/code&gt; risolve l&#39;inquilino dal JWT su ogni richiesta e verifica l&#39;appartenenza:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task InvokeAsync(
    HttpContext context, TenantContext tenantContext, RasepiDbContext db)
{
    var tenantIdClaim = context.User.FindFirstValue(&amp;quot;tenant_id&amp;quot;);
    var userIdClaim = context.User.FindFirstValue(ClaimTypes.NameIdentifier);

    // Populate scoped context
    tenantContext.TenantId = Guid.Parse(tenantIdClaim);
    tenantContext.UserId = Guid.Parse(userIdClaim);

    // Verify membership — fail closed
    var membership = await db.TenantMemberships
        .Where(m =&amp;gt; m.TenantId == tenantContext.TenantId
                  &amp;amp;&amp;amp; m.UserId == tenantContext.UserId)
        .FirstOrDefaultAsync();

    if (membership == null)
    {
        context.Response.StatusCode = 401;
        return;  // No membership = no access
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I filtri globali delle query di Entity Framework assicurano che, anche se uno sviluppatore dimentica di filtrare per tenant, il livello del database lo faccia automaticamente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;modelBuilder.Entity&amp;lt;Hub&amp;gt;()
    .HasQueryFilter(h =&amp;gt; h.TenantId == _tenantContext.TenantId);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il risultato: &lt;code&gt;db.Hubs.ToListAsync()&lt;/code&gt; restituisce sempre solo gli hub del tenant corrente. Le fughe di dati richiedono l&#39;aggiramento attivo del filtro di query, che è vietato nella nostra base di codice.&lt;/p&gt;
&lt;h2&gt;Il quadro completo&lt;/h2&gt;
&lt;p&gt;Quando un utente fa clic su &amp;quot;Pubblica&amp;quot; su una voce, ecco cosa succede:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;**L&#39;autenticazione convalida il JWT, &lt;code&gt;TenantContextMiddleware&lt;/code&gt; risolve e verifica l&#39;inquilino.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Il controllore chiama la pipeline.&lt;/strong&gt; &lt;code&gt;IActionPipeline.ExecuteAsync(&amp;quot;Entry.Publish&amp;quot;, context, action)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La pipeline risolve le guardie.&lt;/strong&gt; Interroga i plugin abilitati dall&#39;inquilino e seleziona le guardie applicabili.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le guardie valutano.&lt;/strong&gt; La guardia del flusso di lavoro verifica le approvazioni, la guardia della conservazione verifica i criteri, la guardia delle regole convalida il contenuto. Tutti passano? La voce viene pubblicata.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gli eventi si attivano.&lt;/strong&gt; L&#39;evento &lt;code&gt;Entry.Published&lt;/code&gt; viene richiesto. Un lavoratore in background registra l&#39;attività, aggiorna la fatturazione delle traduzioni e chiama i gestori di eventi del plugin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifica delle traduzioni dei blocchi.&lt;/strong&gt; I blocchi obsoleti vengono identificati per essere ritradotti.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ogni livello svolge il proprio lavoro. Nessun livello si inserisce in un altro. Questa è l&#39;architettura.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Non abbiamo costruito questo perché l&#39;estensibilità è di moda. L&#39;abbiamo costruita perché una piattaforma di documentazione che non può adattarsi al flusso di lavoro di ogni team, alla fine sarà sostituita da una che può farlo. E una piattaforma che si adatta senza guardrail finirà per rompere qualcosa di importante.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="architecture" />
    <category term="plugins" />
    <category term="ai" />
  </entry>
</feed>
