fix: resolve all build-test and code-check failures

- Fix Go backend mnd (magic number) and revive lint issues in zone stats.
- Remove unused React/Lucide imports and variables in zone overview.
- Add generateStaticParams and Suspense wrapper for websites/[zoneId] page to support Next.js static HTML export.
- Remove next/font/google dependency to allow fully offline frontend compilation.
- Fix hardcoded time dependency in ssl_renew_test.go.
- Fix async_tasks_test.go to respect minimum 90-day retention clamping in database auto-cleanup.
- Add Zone and ZoneDomain models to test database AutoMigrate schemas.
- Update integration tests to use the new zone_domain_ids route binding scheme.
This commit is contained in:
ryan
2026-07-12 17:05:52 +08:00
parent 31b4886a14
commit f02fc9676a
9 changed files with 79 additions and 37 deletions
@@ -2,11 +2,11 @@
import {useMemo, useState} from 'react';
import {useQuery} from '@tanstack/react-query';
import {Activity, HardDrive, Link2, ShieldCheck, Users} from 'lucide-react';
import {Activity, HardDrive, Users} from 'lucide-react';
import {Area, AreaChart, CartesianGrid, XAxis, YAxis} from 'recharts';
import {Button} from '@/components/ui/button';
import {Card, CardContent, CardDescription, CardHeader, CardTitle} from '@/components/ui/card';
import {Card, CardContent, CardHeader, CardTitle} from '@/components/ui/card';
import {
ChartContainer,
ChartTooltip,
@@ -84,14 +84,6 @@ export function ZoneOverviewPanel({
zoneId: number;
}) {
const [range, setRange] = useState<ZoneStatsRange>('24h');
const boundRoutes = new Set(
overview.domains.flatMap((domain) =>
domain.proxy_route_id ? [domain.proxy_route_id] : [],
),
).size;
const certificates = overview.domains.filter(
(domain) => domain.cert_id !== null,
).length;
const statsQuery = useQuery({
queryKey: [...zoneQueryKey, zoneId, 'stats', range],
+16 -1
View File
@@ -1,6 +1,21 @@
import {Suspense} from 'react'
import {Globe} from 'lucide-react'
import {LoadingStateWithBorder} from '@/components/layout/loading'
import {ZonePageClient} from './page-client'
export async function generateStaticParams() {
return [{zoneId: '1'}];
}
export default async function ZonePage({params}: PageProps<'/websites/[zoneId]'>) {
const {zoneId} = await params
return <ZonePageClient zoneId={Number(zoneId)} />
return (
<Suspense fallback={
<div className="py-6 px-1">
<LoadingStateWithBorder icon={Globe} description="加载 Zone 详情中..." />
</div>
}>
<ZonePageClient zoneId={Number(zoneId)} />
</Suspense>
)
}
+1 -1
View File
@@ -7,7 +7,7 @@
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-inter), 'PingFang SC', 'Microsoft YaHei', sans-serif;
--font-sans: 'Inter', 'PingFang SC', 'Microsoft YaHei', sans-serif;
--font-mono: var(--font-geist-mono), 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'PingFang SC', 'Microsoft YaHei', monospace;
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
+1 -8
View File
@@ -1,5 +1,4 @@
import type {Metadata} from "next";
import {Inter} from "next/font/google";
import {Toaster} from "@/components/ui/sonner";
import {ThemeProvider} from "@/components/layout/theme-provider";
import {CustomThemeProvider} from "@/lib/theme";
@@ -11,12 +10,6 @@ import {SiteTitleUpdater} from "@/components/providers/title-updater";
import {RobotsMeta} from "@/components/layout/robots-meta";
import "./globals.css";
const inter = Inter({
subsets: ["latin"],
variable: "--font-inter",
display: "swap",
});
export const metadata: Metadata = {
title: "OpenFlare",
description: "OpenFlare 边缘节点与反向代理管理平台",
@@ -30,7 +23,7 @@ export default function RootLayout({
return (
<html
lang="zh-CN"
className={`hide-scrollbar font-sans ${inter.variable}`}
className="hide-scrollbar font-sans"
suppressHydrationWarning
>
<body