import type { Metadata, Viewport } from 'next' import './globals.css' import Providers from './providers' import { prisma } from '@/lib/prisma' export const viewport: Viewport = { width: 'device-width', initialScale: 1, viewportFit: 'cover', } async function getSystemSettings() { try { // 直接从数据库查询,避免网络请求超时问题 const settings = await prisma.systemSettings.findFirst({ select: { siteName: true, } }) return settings } catch (error) { console.error('Failed to fetch system settings:', error) } return null } export async function generateMetadata(): Promise { const settings = await getSystemSettings() return { title: settings?.siteName || '由壹点3D素材', description: '3D素材分享平台', icons: { icon: '/api/favicon', shortcut: '/api/favicon', apple: '/api/favicon', }, } } export default function RootLayout({ children, }: { children: React.ReactNode }) { return ( {/* 禁用浏览器缓存,确保用户总是获取最新代码 */} {/* 允许 blob URL 在 HTTP 页面上使用(解决 HTTPS 警告) */} {/* 注意:frame-ancestors 只能通过 HTTP 响应头设置,不能通过 meta 标签 */}