'use client'; import {Badge} from '@/components/ui/badge'; import type {LatestReleaseInfo} from '@/lib/services/openflare'; function formatLogTimestamp(value: string) { const date = new Date(value); if (Number.isNaN(date.getTime())) { return '0000-00-00 00:00:00.000'; } const year = date.getFullYear(); const month = `${date.getMonth() + 1}`.padStart(2, '0'); const day = `${date.getDate()}`.padStart(2, '0'); const hour = `${date.getHours()}`.padStart(2, '0'); const minute = `${date.getMinutes()}`.padStart(2, '0'); const second = `${date.getSeconds()}`.padStart(2, '0'); const millisecond = `${date.getMilliseconds()}`.padStart(3, '0'); return `${year}-${month}-${day} ${hour}:${minute}:${second}.${millisecond}`; } function formatLogLevel(level: string) { return (level || 'info').toUpperCase().padEnd(8, ' '); } function getUpgradeStatusBadge(release: LatestReleaseInfo) { if (release.upgrade_status === 'failed') { return { label: '升级失败', variant: 'destructive' as const }; } if (release.upgrade_status === 'succeeded') { return { label: '准备重启', variant: 'default' as const }; } if (release.in_progress) { return { label: '升级中', variant: 'secondary' as const }; } return { label: '空闲', variant: 'outline' as const }; } export function UpgradeLogPanel({release}: {release: LatestReleaseInfo}) { const statusBadge = getUpgradeStatusBadge(release); const upgradeLogs = release.upgrade_logs ?? []; if (upgradeLogs.length === 0) { return (
暂无升级日志
); } return (
{statusBadge.label}
{upgradeLogs.map((log, index) => (
            {formatLogTimestamp(log.created_at)}
             | 
            {formatLogLevel(log.level)}
             | 
            {log.message}
          
))}
); }