import type { MetadataRoute } from "next"; import { fetchPosts, fetchAnnouncementsPage, fetchPublishedSitePages, } from "@/lib/api"; export default async function sitemap(): Promise { const baseUrl = "http://localhost:3000"; const entries: MetadataRoute.Sitemap = [ { url: `${baseUrl}/`, lastModified: new Date(), changeFrequency: "daily", priority: 1 }, { url: `${baseUrl}/announcements`, lastModified: new Date(), changeFrequency: "daily", priority: 0.7, }, { url: `${baseUrl}/about`, lastModified: new Date(), changeFrequency: "monthly", priority: 0.6, }, ]; try { const { posts } = await fetchPosts(1, 100); for (const post of posts) { entries.push({ url: `${baseUrl}/post/${post.id}`, lastModified: new Date(post.created_at), changeFrequency: "weekly", priority: 0.6, }); } } catch { /* 忽略 API 错误 */ } try { const { announcements } = await fetchAnnouncementsPage(1, 100); for (const a of announcements) { entries.push({ url: `${baseUrl}/announcement/${a.id}`, lastModified: new Date(a.updated_at || a.created_at), changeFrequency: "weekly", priority: 0.5, }); } } catch { /* 忽略 */ } try { const { pages } = await fetchPublishedSitePages(); for (const p of pages) { entries.push({ url: `${baseUrl}/p/${p.slug}`, lastModified: new Date(p.updated_at || p.created_at), changeFrequency: "monthly", priority: 0.4, }); } } catch { /* 忽略 */ } return entries; }