import type { MetadataRoute } from 'next'; import { getAllPublishedSlugs } from '@/lib/cms/data-server'; const BASE_URL = 'https://www.novalon.cn'; export default async function sitemap(): Promise { const staticPages: MetadataRoute.Sitemap = [ { url: `${BASE_URL}/`, lastModified: new Date(), changeFrequency: 'daily', priority: 1 }, { url: `${BASE_URL}/about`, lastModified: new Date(), changeFrequency: 'monthly', priority: 0.8 }, { url: `${BASE_URL}/services`, lastModified: new Date(), changeFrequency: 'weekly', priority: 0.9 }, { url: `${BASE_URL}/products`, lastModified: new Date(), changeFrequency: 'weekly', priority: 0.9 }, { url: `${BASE_URL}/solutions`, lastModified: new Date(), changeFrequency: 'weekly', priority: 0.9 }, { url: `${BASE_URL}/cases`, lastModified: new Date(), changeFrequency: 'weekly', priority: 0.8 }, { url: `${BASE_URL}/news`, lastModified: new Date(), changeFrequency: 'daily', priority: 0.7 }, { url: `${BASE_URL}/team`, lastModified: new Date(), changeFrequency: 'monthly', priority: 0.6 }, { url: `${BASE_URL}/contact`, lastModified: new Date(), changeFrequency: 'monthly', priority: 0.7 }, ]; try { // 从 CMS 获取动态页面 slug const [caseSlugs, newsSlugs, serviceSlugs, productSlugs, solutionSlugs] = await Promise.all([ getAllPublishedSlugs('case-study'), getAllPublishedSlugs('news'), getAllPublishedSlugs('service'), getAllPublishedSlugs('product'), getAllPublishedSlugs('solution'), ]); const casePages: MetadataRoute.Sitemap = caseSlugs.map(({ slug }) => ({ url: `${BASE_URL}/cases/${slug}`, lastModified: new Date(), changeFrequency: 'monthly' as const, priority: 0.8, })); const newsPages: MetadataRoute.Sitemap = newsSlugs.map(({ slug }) => ({ url: `${BASE_URL}/news/${slug}`, lastModified: new Date(), changeFrequency: 'monthly' as const, priority: 0.6, })); const servicePages: MetadataRoute.Sitemap = serviceSlugs.map(({ slug }) => ({ url: `${BASE_URL}/services/${slug}`, lastModified: new Date(), changeFrequency: 'monthly' as const, priority: 0.8, })); const productPages: MetadataRoute.Sitemap = productSlugs.map(({ slug }) => ({ url: `${BASE_URL}/products/${slug}`, lastModified: new Date(), changeFrequency: 'monthly' as const, priority: 0.8, })); const solutionPages: MetadataRoute.Sitemap = solutionSlugs.map(({ slug }) => ({ url: `${BASE_URL}/solutions/${slug}`, lastModified: new Date(), changeFrequency: 'monthly' as const, priority: 0.8, })); return [ ...staticPages, ...casePages, ...newsPages, ...servicePages, ...productPages, ...solutionPages, ]; } catch { // 数据库不可用时返回静态页面 return staticPages; } }