571f58bff8
Il push era rimasto bloccato e la riga delle fonti diceva ancora "non in prod". Ora e' vero il contrario, ma "in produzione" da solo sarebbe fuorviante: i cinque moduli sono deployati e nessuna route li chiama. La riga dice entrambe le cose, perche' confondere *deployato* con *funzionante* e' il modo piu' rapido per credere di avere una feature che non esiste. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
100 lines
5.7 KiB
Markdown
100 lines
5.7 KiB
Markdown
---
|
||
gsd_state_version: 1.0
|
||
milestone: v2.5
|
||
milestone_name: Audit
|
||
status: executing
|
||
stopped_at: "Phase 27 a metà: schema in prod, fonti scritte e provate sul campo. Prossimo: src/lib/audit/schema.ts + agents/."
|
||
last_updated: "2026-08-19T13:20:00.000Z"
|
||
last_activity: 2026-08-19 -- v2.5 pushata su main e deployata (8000d56); motore ancora non richiamato da nessuna route
|
||
progress:
|
||
total_phases: 4
|
||
completed_phases: 0
|
||
total_plans: 4
|
||
completed_plans: 0
|
||
percent: 25
|
||
---
|
||
|
||
# Project State
|
||
|
||
> **Digest breve, per orientarsi.** Narrativa e lezioni → **`STATUS.md`** (root);
|
||
> requisiti → **`REQUIREMENTS.md`**; tutte le fasi → **`ROADMAP.md`**.
|
||
> Questo file resta sotto le 100 righe: lo impone il template GSD.
|
||
|
||
## Project Reference
|
||
|
||
See: .planning/PROJECT.md · **Core value:** il cliente apre il link e vede a che punto è
|
||
il suo progetto, senza scrivere email. · **Current focus:** milestone **v2.5 "Audit"** —
|
||
il servizio di analisi sito diventa un documento privato su `/audit/[slug]`.
|
||
|
||
## Current Position
|
||
|
||
Phase: 27 of 30 — Motore di analisi
|
||
Plan: schema e fonti fatti; agent, sintetizzatore e pipeline da scrivere
|
||
Status: nessun bloccante — prossimo passo `src/lib/audit/schema.ts` + `agents/`
|
||
Last activity: 2026-08-18 — `src/lib/audit/sources/` scritto e provato su giojello.com
|
||
|
||
Progress: [███░░░░░░░] 25%
|
||
|
||
## Dove sta cosa
|
||
|
||
| Cosa | Dove | Stato |
|
||
|---|---|---|
|
||
| Schema audit (7 tabelle) | `src/db/migrations/0017_audits.sql` + `src/db/schema.ts` | **in produzione** |
|
||
| Rubrica del motore, 264 voci | tabella `checklist_items`, sorgente `scripts/data/checklist.json` | **in produzione** |
|
||
| Fonti del motore (5 moduli) | `src/lib/audit/sources/` | **in produzione ma inerte**: deployato, nessuna route lo chiama |
|
||
| Agent, sintetizzatore, pipeline | `src/lib/audit/{schema,agents,pipeline}.ts` | **da scrivere** |
|
||
| Editor admin e pagina pubblica | `src/app/admin/audit/`, `src/app/audit/[slug]/` | **da scrivere** |
|
||
| L'unico audit prodotto finora | `spike-audit-giojello.com.json` (root, **gitignorato**) | spike del 2026-08-16, **zero rilevazioni** |
|
||
| I due piani della milestone | `~/.claude/plans/` — `…woolly-puddle.md` (documento) + `…radiant-valley.md` (motore) | **fuori dal repo** |
|
||
|
||
## Come funziona il motore
|
||
|
||
Si incolla un URL. Nessun browser headless da nessuna parte.
|
||
|
||
1. **Raccolta in parallelo** (`sources/`, nessun LLM): PageSpeed, CrUX, Wayback, RDAP, robots/sitemap/JSON-LD, header. Ogni fonte fallisce in modo non fatale e dice *perché*.
|
||
2. **Quattro sub-agent in parallelo** (`agents/`): checklist, visivo, storico, tecnico. Producono osservazioni, non finding.
|
||
3. **Sintetizzatore** che le **incrocia**: quattro osservazioni deboli su temi diversi diventano un finding solo con quattro evidenze indipendenti. Massimo 10, per impatto.
|
||
4. **Editor admin** per rifinire, poi consegna su `/audit/[slug]`.
|
||
|
||
Vincolo che regge tutto: **un numero entra solo se misurato**, e dev'essere rintracciabile in `audit_runs.raw`.
|
||
|
||
## Performance Metrics
|
||
|
||
**Velocity:** 21 plans completati (v2.1–v2.4). Phase 27: spike ~1h, schema ~1h, fonti ~2h.
|
||
|
||
## Accumulated Context
|
||
|
||
### Decisions
|
||
|
||
Log completo in `PROJECT.md`. Vive per il lavoro corrente:
|
||
|
||
- **[2026-08-18] Il documento usa il design system dell'area admin** — token semantici, Plus Jakarta Sans, Geist Mono per metriche e date, `StatusBadge` per gli impatti. Sostituisce la deroga tipografica del piano; i font sono già self-hostati da `next/font/google`, quindi la CSP è soddisfatta senza lavoro.
|
||
- **[2026-08-18] Nessun renderer headless** — PageSpeed dà 153 audit sul DOM renderizzato, cioè le osservazioni visive che prima richiedevano screenshot a mano.
|
||
- **[2026-08-18] Laboratorio ≠ campo, e la differenza è il risultato** — Lighthouse dà 7 ms di risposta server, CrUX dà TTFB p75 3.553 ms. Da qui il nome `risposta_server_ms`: con lo stesso nome il sintetizzatore li tratterebbe come un numero solo.
|
||
- **[2026-08-17] Il VPS non regge Chromium** — RAM, non disco. È la ragione per cui l'opzione headless non torna.
|
||
- **[2026-08-16] La checklist alimenta il MOTORE, non il documento** — se diventa il rendering della checklist, torna a sembrare un audit automatico gratuito.
|
||
- **[2026-08-16] Immagini** — le due del redesign le carica l'utente, le due dello stato di fatto le scrive la pipeline. Emenda LOCKED #5 solo per gli asset di audit.
|
||
|
||
### Pending Todos — nessuno (`.planning/todos/` non esiste)
|
||
|
||
### Blockers/Concerns
|
||
|
||
- **Il copy fisso del template v1 non ha una fonte nel repo** — il prototipo Giojello non c'è. Lo *stile* ora viene dal design system, ma testi e gerarchia dei blocchi vanno recuperati prima di Phase 30.
|
||
- **Il caso "zero dati CrUX" non è ancora stato visto** su un sito vero (test 5 del piano).
|
||
- **Il 52% della checklist non è verificabile da HTML statico** — quanto ne recuperino gli audit Lighthouse non è ancora misurato (test 3 del piano).
|
||
- **Whitelist portale vuota per 3 clienti su 4** — si popola da `/admin/clients/<id>`.
|
||
- **`.env.local` punta al DB di PRODUZIONE**, non allineato a Coolify per `ADMIN_PASSWORD` / `NEXTAUTH_SECRET`.
|
||
- **Ogni fase con schema**: migration applicata a prod **prima** del push del codice.
|
||
- **Debito design (DEBT-01)** — ~40 file, ~450 occorrenze. Dettaglio in `STATUS.md`.
|
||
|
||
## Deferred Items
|
||
|
||
Vedi `REQUIREMENTS.md` § Backlog e § Rinviati esplicitamente da v2.5.
|
||
|
||
## Session Continuity
|
||
|
||
Last session: 2026-08-18
|
||
Stopped at: `src/lib/audit/sources/` (5 moduli) scritto e **provato sul campo su giojello.com** — giro completo 73 s, tutte le fonti hanno risposto. Build e lint puliti.
|
||
Next: (1) `src/lib/audit/schema.ts` + `agents/` con validazione Zod dura; (2) `pipeline.ts` con heartbeat su `audit_runs`; (3) volume Coolify prima del deploy; (4) editor e pagina.
|
||
Resume file: None
|