import type { Metadata } from 'next'; import { notFound } from 'next/navigation'; import { publicApi } from '@/lib/services'; import { ManualLayout } from '@/components/front/ManualLayout'; export const revalidate = 60; interface PageProps { params: { id: string }; } export async function generateMetadata({ params }: PageProps): Promise { try { const doc = await publicApi.getManualDetail(Number(params.id)); return { title: doc.title, description: doc.title }; } catch { return { title: '使用手册' }; } } export default async function ManualDetailPage({ params }: PageProps) { const id = Number(params.id); if (!Number.isFinite(id)) notFound(); // 并行拉取树形菜单 + 当前文档详情 const [tree, doc] = await Promise.all([ publicApi.getManualTree(), publicApi.getManualDetail(id).catch(() => null), ]); if (!doc) notFound(); return ; }