feat(content): refonte conseils (kits par phénomène), à-propos, mentions, sitemap
All checks were successful
Deploy info-canicule / deploy (push) Successful in 1m28s

- /conseils : cards par phénomène (couleur d'impact + glyphe), bloc registre canicule mis en avant, numéros d'urgence
- /conseils/[slug] : nouvelle route SSR par phénomène — kit imprimable, share natif, cross-link, advice.ts réutilisé
- /conseils/registre-canicule : reskin nouveau design, contenu existant conservé + TL;DR coloré
- /a-propos : reskin + sections "engagement accessibilité" et "à venir"
- /mentions-legales : reskin en cards (contenu inchangé)
- Sitemap : custom serialize avec priority/changefreq par type d'URL, customPages pour les 102 départements + 7 kits (117 URLs au total). Suppression du custom sitemap-departements.xml redondant

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Florian 2026-05-27 19:02:38 +02:00
parent 72b3785499
commit 0723ee10e3
7 changed files with 719 additions and 359 deletions

View file

@ -3,9 +3,17 @@ import node from '@astrojs/node';
import tailwind from '@astrojs/tailwind';
import sitemap from '@astrojs/sitemap';
import sentry from '@sentry/astro';
import { DEPARTEMENTS } from './src/lib/departements.ts';
import { PHENOMENA } from './src/lib/phenomena.ts';
const sentryDsn = process.env.SENTRY_DSN;
const release = process.env.GIT_COMMIT_SHA || 'dev';
const SITE = 'https://info-canicule.nocleus.com';
// URLs dynamiques (SSR) listées explicitement pour le sitemap — sinon @astrojs/sitemap
// ne les voit pas (il n'énumère que les routes statiques au build).
const deptUrls = DEPARTEMENTS.map((d) => `${SITE}/departement/${d.code}`);
const kitUrls = Object.values(PHENOMENA).map((p) => `${SITE}/conseils/${p.slug}`);
export default defineConfig({
output: 'server',
@ -13,12 +21,36 @@ export default defineConfig({
integrations: [
tailwind({ applyBaseStyles: false }),
sitemap({
filter: (page) =>
!page.includes('/api/') &&
!page.includes('/departement/'),
// /departement/* est dynamique pour les 96 dépts — généré dans /sitemap-departements.xml.ts à part.
filter: (page) => !page.includes('/api/'),
customPages: [...deptUrls, ...kitUrls],
// Priorités SEO selon le type d'URL.
// Home > carte dept > conseils par phénomène > conseils index > pages info.
serialize(item) {
const url = item.url;
// Home — priorité max, change toutes les ~15 min côté contenu mais l'URL ne bouge pas.
if (url === `${SITE}/` || url === SITE) {
return { ...item, priority: 1.0, changefreq: 'hourly' };
}
// Pages département (96) — coeur du SEO long-tail, contenu live.
if (url.includes('/departement/')) {
return { ...item, priority: 0.9, changefreq: 'hourly' };
}
// Kits par phénomène — contenu durable, fort potentiel SEO.
if (url.includes('/conseils/') && url !== `${SITE}/conseils/` && !url.includes('registre-canicule')) {
return { ...item, priority: 0.8, changefreq: 'monthly' };
}
// Index conseils + registre canicule — repères durables.
if (url.includes('/conseils')) {
return { ...item, priority: 0.8, changefreq: 'monthly' };
}
// Embed — utile pour intégrations tierces.
if (url.includes('/embed')) {
return { ...item, priority: 0.5, changefreq: 'monthly' };
}
// Pages info (à-propos, mentions, etc.)
return { ...item, priority: 0.4, changefreq: 'yearly' };
},
}),
// Sentry / GlitchTip — opt-in via env. Si SENTRY_DSN absent, intégration omise (no-op).
...(sentryDsn
? [
sentry({
@ -26,14 +58,13 @@ export default defineConfig({
environment: process.env.NODE_ENV ?? 'production',
release,
tracesSampleRate: 0.1,
// GlitchTip est OK avec source maps mais on les omet pour éviter le upload.
sourceMapsUploadOptions: { enabled: false },
}),
]
: []),
],
server: { host: '0.0.0.0', port: 4321 },
site: 'https://info-canicule.nocleus.com',
site: SITE,
vite: {
ssr: {
noExternal: ['ioredis'],