Repository Public
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// Sitemap des pages : statiques + 1 097 municipalités + pages municipalité×type.3// Les 3,7 M de fiches sont dans /estimation/sitemap/[id].xml (voir sitemap-index.xml).4import type { MetadataRoute } from "next";5import { allMunicipalities, allMunTypePairs } from "@/lib/municipalites";6import { SITE_URL, TYPE_SLUGS, slugify } from "@/lib/seo";7import stats from "@/data/stats.json";89export const dynamic = "force-dynamic";1011const LASTMOD = new Date((stats as { generated: string }).generated);1213export default function sitemap(): MetadataRoute.Sitemap {14 const statics: MetadataRoute.Sitemap = [15 { url: `${SITE_URL}/`, lastModified: LASTMOD, changeFrequency: "weekly", priority: 1 },16 { url: `${SITE_URL}/municipalites`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.9 },17 { url: `${SITE_URL}/a-vendre`, lastModified: LASTMOD, changeFrequency: "daily", priority: 0.9 },18 { url: `${SITE_URL}/ventes`, lastModified: LASTMOD, changeFrequency: "daily", priority: 0.9 },19 { url: `${SITE_URL}/cout`, lastModified: LASTMOD, changeFrequency: "daily", priority: 0.9 },20 { url: `${SITE_URL}/cout/assemblage`, lastModified: LASTMOD, changeFrequency: "weekly", priority: 0.7 },21 { url: `${SITE_URL}/carte`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.8 },22 { url: `${SITE_URL}/stats`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.8 },23 { url: `${SITE_URL}/stats/marche`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.7 },24 { url: `${SITE_URL}/ka`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.7 },25 { url: `${SITE_URL}/parc`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.6 },26 { url: `${SITE_URL}/methodologie`, lastModified: LASTMOD, changeFrequency: "monthly", priority: 0.7 },27 { url: `${SITE_URL}/conditions`, lastModified: LASTMOD, changeFrequency: "yearly", priority: 0.2 },28 { url: `${SITE_URL}/confidentialite`, lastModified: LASTMOD, changeFrequency: "yearly", priority: 0.2 },29 ];30 const munis: MetadataRoute.Sitemap = allMunicipalities().map((m) => ({31 url: `${SITE_URL}/municipalite/${m.slug}`,32 lastModified: LASTMOD,33 changeFrequency: "monthly",34 priority: 0.8,35 }));36 const types: MetadataRoute.Sitemap = allMunTypePairs().map((p) => ({37 url: `${SITE_URL}/municipalite/${slugify(p.nom)}/${TYPE_SLUGS[p.type] ?? p.type}`,38 lastModified: LASTMOD,39 changeFrequency: "monthly",40 priority: 0.6,41 }));42 return [...statics, ...munis, ...types];43}44