active|sync alle 03:00 e alle 15:00|attività estratta: 392/392 · pipeline in corsoarchivio pubblico
Project 02 · 2025 · Active

Lessons Pipeline

Il materiale esisteva già. Quello che mancava era il tragitto.

01 Problem

Ogni passaggio fra la fine della lezione e la classe è un passaggio che, durante l’anno, non si fa.

Gli appunti esistono già: sono scritti a mano sul tablet durante l’ora, ed è l’unica parte del lavoro che ha un motivo per esistere. Tutto il resto — esportarli, caricarli da qualche parte, ordinarli, dire alla classe dove sono — non è difficile: è quotidiano. E un gesto quotidiano che si può rimandare si rimanda, finché l’archivio non è più un archivio ma una cartella dove nessuno entra.

Anche quando i file ci sono, rispondere a «cosa abbiamo fatto giovedì?» vuol dire aprire Drive e leggere i nomi uno per uno. Nessuno lo fa. L’archivio esiste e non serve a niente.

02 Idea

Se il tragitto dal file alla pagina non chiede nessun gesto, l’archivio si aggiorna perché le lezioni si fanno — non perché qualcuno si ricorda di pubblicarle.

Il nome del file dice già quasi tutto: classe, settimana, data. Quello che non dice sta scritto dentro il PDF, e un modello sa leggerlo. Non serviva costruire un archivio nuovo: serviva togliere di mezzo il tragitto verso quello che c’era già.

03 Solution

Due volte al giorno un servizio elenca le cartelle Drive delle classi e tiene lo stato in uno sqlite. Le pagine si generano da lì, insieme al resto del sito.

  • Il sync legge la cartella, non il disco: i PDF restano su Drive e quello che entra nell’archivio è il link. Data e codice della settimana vengono dal nome del file.
  • Se il nome non porta la data, la prende dalla data di creazione del file su Drive. È l’unica cosa che il sync deduce: tutto il resto, se non c’è, resta vuoto.
  • Di notte, poche lezioni per volta, Haiku apre i PDF che non hanno ancora un riassunto e ne ricava l’attività svolta, in stile registro di classe.
  • Un quality gate pulisce l’output di Haiku: se trova commenti sul procedimento invece di un riassunto, lo rifiuta, ritenta una volta e non pubblica testo incoerente.
  • Finito il giro, il sito si ricostruisce e legge l’archivio in sola lettura. Se il sync fallisce non si pubblica niente: quello che è online resta online.

Quello che il nome del file non dice, la pipeline non lo inventa: le lezioni senza data o senza codice restano in elenco così come sono, e finiscono in un file di controllo con scritto cosa non ha capito.

04 Result
392
PDF nell’archivio
0
gesti per pubblicarli
392/392
attività estratta

L’archivio è pubblico e si aggiorna da solo: le lezioni, una riga per PDF, con l’attività svolta dove la lettura notturna è già passata.

Il rapporto attività estratta è uno stato di avanzamento, non un risultato finale: il numeratore cresce mentre la pipeline legge i PDF, e il denominatore resta il totale dei file presenti nell’archivio.

Il costo per pubblicare una lezione è zero, perché nessuno la pubblica. A mano resta il nome del file — L1, L2, uno per lezione, scritto quando la si comincia — e il registro elettronico della scuola, che è un’altra macchina e si compila ancora a mano.

05 Demo — una lezione vera, dal nome alla riga
00

In classe

Gli appunti si scrivono durante l'ora, sul tablet, e finiscono nella cartella della classe.

Da qui in poi non si preme niente: quello che segue succede da solo.

lezione
01

Il nome del file — l'unica cosa che scrivi tu

L10 codice 14 Ottobre 2024 data Velocità Di Fuga E Buchi Neri argomento .pdf

02

Il sync guarda dentro la cartella Drive

quello che vede su Drive
cartella
4F_Fisica_AS_24-25
PDF dentro
66
id del file
1YIk3WVJwxpnYx…
permesso
chiunque abbia il link
quello che ricava dal nome
codice
L10
data
14.10.2024
argomento
Velocità Di Fuga E Buchi Neri

Il PDF non si copia: resta su Drive, e quello che entra nell'archivio è il link. Quello che il nome non dice, il sync non lo inventa.

03

Haiku apre il PDF e scrive l'attività svolta

  • Definizione e formula della velocità di fuga da un pianeta; dimostrazione mediante conservazione dell'energia cinetica e potenziale.
  • Velocità di fuga della Terra (11.2 km/s), velocità della luce (300.000 km/s) e suo ruolo fisico come velocità massima raggiungibile.
  • Introduzione ai buchi neri: corpi con velocità di fuga superiore a quella della luce; raggio di Schwarzschild e implicazioni relativistiche.

Testo vero, quello che sta adesso nell'archivio. Nessuno lo ha riscritto: se la lezione è stata un'ora di esercizi, dice che è stata un'ora di esercizi.

Tre lezioni vere, prese dall'archivio quando il sito si ricostruisce. Cambiando linguetta il nome del file dice sempre meno — e la riga pubblicata continua a dire la stessa cosa, perché a quel punto a parlare è il PDF.

06 Under the hood

Python · Google Drive API · SQLite · Claude Haiku · systemd · Astro

Lo sqlite è l’unica verità: il sito lo legge in sola lettura quando si ricostruisce, e non ne tiene una copia. Se la pipeline è ferma, le pagine restano quelle dell’ultimo giro invece di mostrare numeri inventati. Vale anche per la demo qui sopra — non è un esempio scritto a mano, sono tre lezioni vere lette dallo stesso archivio al momento del build.

Il service account di Drive legge le cartelle e dà ai PDF delle lezioni il permesso «chiunque abbia il link», che è quello che rende apribile la riga: non è un accesso in sola lettura, ed è la ragione per cui le cartelle degli anni chiusi hanno un filtro. Verifiche e consegne stanno nelle stesse cartelle e non devono diventare pubbliche: sono lezioni solo i PDF che portano un codice nel nome, il resto il sync non lo tocca — e il filtro sta prima del permesso, non dopo.

Le correzioni a mano stanno in due file di testo — uno per gli argomenti di una classe, uno per il singolo file — che il sync rispetta senza sovrascriverli. Finora non sono serviti: sono lì per il giorno in cui un nome sarà sbagliato.