Bottone «Prenota una consulenza conoscitiva gratuita» accanto a Contattaci #22

Open
opened 2026-09-29 20:29:08 +00:00 by Adriano · 6 comments
Owner

RIF: richiesta di Donata via Adriano 2026-09-29.
COSA: accanto a Contattaci un bottone che apre la pagina di prenotazione Google di Nicola (https://calendar.app.google/nWXMGD2S5g2pVeeD7) in nuova scheda. Consulenza conoscitiva gratuita, 30-45 minuti con Nicola.
FASE 1: anteprima solo su /services/reformer-class. Altre pagine (servizi di Nicola + /contact) dopo risposta di Donata su pagine e modalità (sede/telefono/video).
CRITERIO DI FATTO: anteprima con schermate desktop e mobile, OK di Adriano, deploy.

RIF: richiesta di Donata via Adriano 2026-09-29. COSA: accanto a Contattaci un bottone che apre la pagina di prenotazione Google di Nicola (https://calendar.app.google/nWXMGD2S5g2pVeeD7) in nuova scheda. Consulenza conoscitiva gratuita, 30-45 minuti con Nicola. FASE 1: anteprima solo su /services/reformer-class. Altre pagine (servizi di Nicola + /contact) dopo risposta di Donata su pagine e modalità (sede/telefono/video). CRITERIO DI FATTO: anteprima con schermate desktop e mobile, OK di Adriano, deploy.
Adriano added the sviluppoassegnata:goldrake labels 2026-09-29 20:29:19 +00:00
Author
Owner

🤖 goldrake — preso in carico 2026-09-29T20:29:19Z
ramo: lavoro/goldrake · capacità: docker, pubblica, sempre-accesa, systemd

🤖 goldrake — **preso in carico** 2026-09-29T20:29:19Z ramo: `lavoro/goldrake` · capacità: docker, pubblica, sempre-accesa, systemd
Author
Owner

ANALISI (passo 1, Opus)
RIF: gitea:Adriano/InsanityLab-web#22, ramo consulenza-conoscitiva da main 9126af2, cartella ~/lavoro/InsanityLab-web (goldrake)
COSA: bottone di prenotazione accanto a Contattaci su /services/reformer-class, link e testi modificabili dal pannello contenuti.
FILE:

  1. src/data/consulenza.ts (nuovo): CONSULENZA_URL_DEFAULT = 'https://calendar.app.google/nWXMGD2S5g2pVeeD7'; PAGINE_CON_CONSULENZA = ['reformer-class']; linkConsulenza(valore: string): string → valore trim se inizia con 'https://', altrimenti CONSULENZA_URL_DEFAULT (il tag è modificabile da admin: niente javascript:, http:, vuoto).
  2. src/data/content-seed.ts, accanto a service.contact-cta (riga ~272): T('service.consulenza-cta', 'Prenota una consulenza conoscitiva gratuita', []), T('service.consulenza-note', '30-45 minuti con Nicola', []), T('global.consulenza.url', CONSULENZA_URL_DEFAULT, []).
  3. src/pages/services/[slug].astro: il blocco {slug === 'reformer-class' &&

    …Contattaci…

    } diventa: Contattaci resta se slug === 'reformer-class' (invariato); se PAGINE_CON_CONSULENZA.includes(slug) si aggiunge <a class="btn btn--consulenza" href={linkConsulenza(t('global.consulenza.url'))} target="_blank" rel="noopener noreferrer">{t('service.consulenza-cta')} nello stesso contenitore, e sotto . Contenitore .prog__cta: display flex, flex-wrap wrap, gap 12px. .btn--consulenza: background #6b5d5b (taupe, stesso del bottone calendario), hover var(--c-accent-dark). .prog__cta-note: font-size .8rem, color var(--c-text-light), margin-top -20px o quanto serve a stare sotto i bottoni. Sotto 600px i bottoni a larghezza piena (justify-content center).
    TEST: tests/consulenza.test.ts: linkConsulenza con https valido → invariato; 'javascript:alert(1)', 'http://x', '', ' ' → default; seed contiene i 3 tag con i valori sopra; PAGINE_CON_CONSULENZA contiene 'reformer-class' e ogni slug esiste in services con page !== false. Comandi: npx vitest run (baseline 149 verdi), npx tsc --noEmit se presente nel progetto, npm run build.
    NON TOCCARE: Contattaci e pricing buy-cta esistenti; bottone calendario .prog__calendario; altri servizi; /contact; produzione /opt/docker/insanitylab; main (solo ramo consulenza-conoscitiva).
ANALISI (passo 1, Opus) RIF: gitea:Adriano/InsanityLab-web#22, ramo consulenza-conoscitiva da main 9126af2, cartella ~/lavoro/InsanityLab-web (goldrake) COSA: bottone di prenotazione accanto a Contattaci su /services/reformer-class, link e testi modificabili dal pannello contenuti. FILE: 1. src/data/consulenza.ts (nuovo): CONSULENZA_URL_DEFAULT = 'https://calendar.app.google/nWXMGD2S5g2pVeeD7'; PAGINE_CON_CONSULENZA = ['reformer-class']; linkConsulenza(valore: string): string → valore trim se inizia con 'https://', altrimenti CONSULENZA_URL_DEFAULT (il tag è modificabile da admin: niente javascript:, http:, vuoto). 2. src/data/content-seed.ts, accanto a service.contact-cta (riga ~272): T('service.consulenza-cta', 'Prenota una consulenza conoscitiva gratuita', []), T('service.consulenza-note', '30-45 minuti con Nicola', []), T('global.consulenza.url', CONSULENZA_URL_DEFAULT, []). 3. src/pages/services/[slug].astro: il blocco {slug === 'reformer-class' && <p class="prog__cta">…Contattaci…</p>} diventa: Contattaci resta se slug === 'reformer-class' (invariato); se PAGINE_CON_CONSULENZA.includes(slug) si aggiunge <a class="btn btn--consulenza" href={linkConsulenza(t('global.consulenza.url'))} target="_blank" rel="noopener noreferrer">{t('service.consulenza-cta')}</a> nello stesso contenitore, e sotto <T tag="service.consulenza-note" as="p" class="prog__cta-note" />. Contenitore .prog__cta: display flex, flex-wrap wrap, gap 12px. .btn--consulenza: background #6b5d5b (taupe, stesso del bottone calendario), hover var(--c-accent-dark). .prog__cta-note: font-size .8rem, color var(--c-text-light), margin-top -20px o quanto serve a stare sotto i bottoni. Sotto 600px i bottoni a larghezza piena (justify-content center). TEST: tests/consulenza.test.ts: linkConsulenza con https valido → invariato; 'javascript:alert(1)', 'http://x', '', ' ' → default; seed contiene i 3 tag con i valori sopra; PAGINE_CON_CONSULENZA contiene 'reformer-class' e ogni slug esiste in services con page !== false. Comandi: npx vitest run (baseline 149 verdi), npx tsc --noEmit se presente nel progetto, npm run build. NON TOCCARE: Contattaci e pricing buy-cta esistenti; bottone calendario .prog__calendario; altri servizi; /contact; produzione /opt/docker/insanitylab; main (solo ramo consulenza-conoscitiva).
Author
Owner

ESITO: richiesta
COSA: anteprima pronta. Ramo consulenza-conoscitiva: 67dc554 (Sonnet) + c65effb (nota con sede: via Leandro Alberti 76, primo piano) + ultimo commit (:global sulla nota, lo stile scoped non raggiungeva il componente T). Immagine insanitylab-website:consulenza, container il-consulenza-prev su 127.0.0.1:4399 con copia DB nello scratchpad.
CONTROLLO OPUS (passo 3): diff conforme all'analisi; unica deviazione di Sonnet: larghezza piena sotto 600px vale per entrambi i bottoni del blocco (accettata).
PROVA: vitest 156/156, build ok; schermate wasabi:adp-work/_output/2026-09-29_consulenza-{desktop,mobile}.png
MANCA: OK di Adriano; risposta di Donata sulle altre pagine; riga privacy (dati a Google).
PROSSIMO: a OK: merge consulenza-conoscitiva in main, deploy come #19, docker rm -f il-consulenza-prev, docker rmi insanitylab-website:consulenza.

ESITO: richiesta COSA: anteprima pronta. Ramo consulenza-conoscitiva: 67dc554 (Sonnet) + c65effb (nota con sede: via Leandro Alberti 76, primo piano) + ultimo commit (:global sulla nota, lo stile scoped non raggiungeva il componente T). Immagine insanitylab-website:consulenza, container il-consulenza-prev su 127.0.0.1:4399 con copia DB nello scratchpad. CONTROLLO OPUS (passo 3): diff conforme all'analisi; unica deviazione di Sonnet: larghezza piena sotto 600px vale per entrambi i bottoni del blocco (accettata). PROVA: vitest 156/156, build ok; schermate wasabi:adp-work/_output/2026-09-29_consulenza-{desktop,mobile}.png MANCA: OK di Adriano; risposta di Donata sulle altre pagine; riga privacy (dati a Google). PROSSIMO: a OK: merge consulenza-conoscitiva in main, deploy come #19, docker rm -f il-consulenza-prev, docker rmi insanitylab-website:consulenza.
Adriano added the attesa:cliente label 2026-09-29 20:41:51 +00:00
Author
Owner

ESITO: bloccato
COSA: anteprima approvata nella forma da Adriano; nota sede spostata sotto il bottone consulenza (desktop). Ramo consulenza-conoscitiva @5c39b04, pushato, non fuso. Schermate wasabi:adp-work/_output/2026-09-29_consulenza-v2-{desktop,mobile}.png.
ATTESA: attesa:cliente — conferma di Donata su testo e pagine (quali servizi oltre reformer-class, /contact). Adriano 2026-09-29 20:41 UTC: issue aperta finché Donata non conferma.
PROSSIMO: a conferma: aggiungere slug in src/data/consulenza.ts PAGINE_CON_CONSULENZA (+ /contact se richiesto), riga privacy, merge in main, deploy come #19. Anteprima ricreabile: docker run da immagine insanitylab-website:consulenza (container il-consulenza-prev rimosso).

ESITO: bloccato COSA: anteprima approvata nella forma da Adriano; nota sede spostata sotto il bottone consulenza (desktop). Ramo consulenza-conoscitiva @5c39b04, pushato, non fuso. Schermate wasabi:adp-work/_output/2026-09-29_consulenza-v2-{desktop,mobile}.png. ATTESA: attesa:cliente — conferma di Donata su testo e pagine (quali servizi oltre reformer-class, /contact). Adriano 2026-09-29 20:41 UTC: issue aperta finché Donata non conferma. PROSSIMO: a conferma: aggiungere slug in src/data/consulenza.ts PAGINE_CON_CONSULENZA (+ /contact se richiesto), riga privacy, merge in main, deploy come #19. Anteprima ricreabile: docker run da immagine insanitylab-website:consulenza (container il-consulenza-prev rimosso).
Adriano removed the assegnata:goldrake label 2026-09-29 20:41:51 +00:00
Author
Owner

🤖 goldrake — rilasciata 2026-09-29T20:41:51Z

🤖 goldrake — **rilasciata** 2026-09-29T20:41:51Z
Author
Owner

RICHIESTA: Adriano 30/09 (vocale): consulenza con Nicola va messa a livello generale del sito, non solo sulla pagina Reformer Class.
MANCA: dove — bottone nel menu in alto su ogni pagina, fascia in home, o su tutte le pagine servizio. Da chiedere ad Adriano.
FILE: src/data/consulenza.ts (PAGINE_CON_CONSULENZA), src/components/Header.astro

RICHIESTA: Adriano 30/09 (vocale): consulenza con Nicola va messa a livello generale del sito, non solo sulla pagina Reformer Class. MANCA: dove — bottone nel menu in alto su ogni pagina, fascia in home, o su tutte le pagine servizio. Da chiedere ad Adriano. FILE: src/data/consulenza.ts (PAGINE_CON_CONSULENZA), src/components/Header.astro
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Adriano/InsanityLab-web#22