longevity: grafico della progressione con il cambio di versione dichiarato #5
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
COSA: seconda pagina del cliente: andamento degli score per sessione; un marker dove cambia quest_version o model_version (confermato da Nicola il 22/08, spec §6).
FATTO QUANDO: pagina con la serie dagli score congelati, marker visibile, test.
🤖 goldrake — preso in carico 2026-09-26T12:53:29Z
ramo:
lavoro/goldrake· capacità: docker, pubblica, sempre-accesa, systemdESITO: richiesta
RIF: gitea:Adriano/InsanityLab-web#5
COSA: analisi (passo 1). Pagina del cliente con l'andamento degli score per sessione e un segno dove cambia la versione del questionario o del modello.
RAMO: lavoro/goldrake-i5 — worktree goldrake:~/lavoro/InsanityLab-web-i5 da
af8afeb(#1 incluso). Si fonde in lavoro/goldrake dopo il controllo.Stato verificato
score(lib/longevity/db.ts): righe per sessione conquest_version,model_version;leggiScore(motore/index.ts) prende per ogni elemento la riga con MAX(id) della sessione. Le sessionicheckuphannoquest_versionNULL.pages/longevity/io.astro: referto dell'ultima sessione; codice cliente dacodicePerUtenteLoggato./longevity/*è aperto a cliente, trainer, admin (auth.ts RULES).components/longevity/Radar.tsx: colori come costanti esadecimali (recharts vuole attributi SVG), copiati dai token del sito.Modifiche
lib/longevity/progressione.ts:progressioneDi(db, clientCode): PuntoProgressione[], sessioni del cliente in ordine data ASC, id ASC, solo quelle con righe inscore. Per sessione:sessioneId,data,tipo,questVersion(null per i check-up),modelVersion,assi: Record<nome, number|null>,macro: Record<nome, number|null>,fitnessAge: number|null— valori daleggiScore,nullquando lo stato è insufficiente. Mai un ricalcolo.cambioVersione: string | nullsul punto: testo del cambio rispetto al punto precedente, semodelVersionè diversa, o sequestVersionnon nulla è diversa dall'ultimaquestVersionnon nulla vista prima. Es. «questionario v1.0 → v1.1». Primo punto: null.components/longevity/Progressione.tsx(rechartsLineChart): una serie per macro-score (PERFORMANCE, ENERGY, RECOVERY), asse X = data, Y 0-100;connectNulls={false}(un valore mancante è un buco, non una linea inventata); unaReferenceLineverticale tratteggiata con etichetta su ogni punto concambioVersione. Sotto, una tabella per asse (righe = 7 assi, colonne = date, «—» dove null). Colori: solo le costanti già usate in Radar.tsx; serie distinte per tratteggio e spessore, non per colori nuovi.pages/longevity/progressione.astro: stesso modello di io.astro (codice dacodicePerUtenteLoggato, nessuna query diretta), layoutLongevityvariante referto. Meno di due punti: messaggio «serve almeno un secondo check-up o questionario per vedere un andamento» e niente grafico.pages/longevity/io.astro: link «Andamento nel tempo» a/longevity/progressione.TEST
tests/longevity/progressione.test.ts: due questionari (salvaDalForm) e un check-up → tre punti in ordine; valori uguali aleggiScore; asse insufficiente → null;cambioVersionenull se le versioni non cambiano; cambio diquest_version(UPDATE diretto in tabellasessioni/scorenella fixture) → testo presente; un check-up (quest null) fra due questionari v1.0 non produce un cambio; sessione senza righe inscoreesclusa.tests/longevity/pagine.test.tsesteso: progressione.astro non contiene.prepare(, usacodicePerUtenteLoggato, non contieneIdentity.npx tsc --noEmit -p .0 errori.NON TOCCARE
motore, registro, db.ts, anagrafica.ts, auth.ts, API del questionario,
styles/longevity.csssalvo classi nuovelg-*con i soli colori ammessi dal test di pagine.test.ts,apps/sito/.ESITO: fatto, in attesa di merge
RIF: gitea:Adriano/InsanityLab-web#5
COMMIT:
4cd9110progressioneDi ·5dc6b85pagina /longevity/progressione, componente Progressione.tsx, link da io.astro — ramo lavoro/goldrake-i5 (pushato)PROVA: npx vitest run → 221 passed (212 + 9); tsc 0 errori
CONTROLLO FINALE (Opus): conforme all'analisi; versioni lette dall'ultima riga di score della sessione (coerente con leggiScore).
Soluzione
Progressione nel tempo: lib/longevity/progressione.ts progressioneDi (con cambioVersione), components/longevity/Progressione.tsx, pages/longevity/progressione.astro, link da io.astro, test progressione.test.ts. Commit
4cd9110,5dc6b85, merge6cbb205. Stato: sul ramo lavoro/goldrake (commit2c9a74f), NON ancora in main né in produzione. PROVA: vitest 259/259, tsc 0 errori, build ok.ESITO: fatto
COSA: in produzione su piattaforme.tielogic.xyz, 2026-09-26 13:17 UTC. main
12b2e91.PROVA: docker compose up -d --build → container Up; migra() → colonne verifica/verificata_da/verificata_at presenti; registro_test f_ = 24; misure 20 prima e dopo.
BACKUP: /opt/docker/insanitylab-platforms/backup/*-pre-gestionale (sqlite3 .backup, integrity ok).