--- // Il referto del cliente: il radar a sette assi, la Fitness Age, le carte dei macro-score. // La pagina non interroga il database da sola (c'è un test che lo verifica): il codice // cliente arriva da codicePerUtenteLoggato (anagrafica.ts, l'unico modulo autorizzato a // toccare identity), la sessione più recente e il referto stesso da vista.ts. import Longevity from '../../layouts/Longevity.astro'; import Radar from '../../components/longevity/Radar'; import MacroScore from '../../components/longevity/MacroScore.astro'; import { getLongevityDb } from '../../lib/longevity/db'; import { codicePerUtenteLoggato } from '../../lib/longevity/anagrafica'; import { refertoDi, ultimaSessioneDi } from '../../lib/longevity/vista'; import { formattaNumero } from '../../lib/longevity/formato'; export const prerender = false; const user = Astro.locals.user!; const codice = codicePerUtenteLoggato(user.id); const db = getLongevityDb(); const sessioneId = codice ? ultimaSessioneDi(db, codice) : null; const referto = sessioneId !== null ? refertoDi(db, sessioneId) : null; --- {!codice && (

Nessun fascicolo è ancora collegato al tuo account. Contatta lo staff InsanityLab.

)} {codice && !referto && (

Non hai ancora compilato il questionario: senza quello non c'è ancora un referto da mostrare.

Comincia da qui.

)} {referto && (

Fitness Age

{referto.fitnessAge !== null ? formattaNumero(referto.fitnessAge) : '—'} {referto.fitnessAge !== null && anni}

Copertura dati: {Math.round(referto.fitnessAgeCopertura * 100)}% {referto.fitnessAge === null && ' — non ancora sufficiente per un numero.'}

Il tuo radar

{referto.macro.map((m) => ( ))}

InsanityLab Longevity monitora il tuo percorso nel tempo: più compilazioni raccontano come cambi, non solo come stai oggi. Compila di nuovo il questionario.

)}