import { CloseOutlined, ExpandOutlined, ReloadOutlined } from '@ant-design/icons'; import { Alert, Button, Empty, Space, Spin, Tag, Typography } from 'antd'; import { PreviewerUI } from '../../../components/previewer'; import type { ErrorLogItem } from '../errorLogApi'; import { buildErrorListPreviewLine, buildErrorMetaRows, buildErrorReferenceSummary, formatErrorLogTime, formatErrorSummary, getErrorResourceKindLabel, getErrorSourceColor, getErrorSourceLabel, renderErrorTabs, } from './errorLogUtils'; import type { ErrorReferenceResource, ErrorReferenceSummary } from './types'; const { Paragraph, Text } = Typography; type ErrorLogViewerProps = { errorLogs: ErrorLogItem[]; selectedErrorLog: ErrorLogItem | null; selectedErrorLogReferenceSummary: ErrorReferenceSummary | null; activeErrorResource: ErrorReferenceResource | null; isErrorDetailExpanded: boolean; isLoadingErrorLogs: boolean; errorLogLoadError: string; errorSourceSummary: Record; onRefresh: () => void; onSelectErrorLog: (id: number) => void; onSelectResource: (url: string) => void; onToggleExpanded: (expanded: boolean) => void; }; function ErrorDetailContent({ selectedErrorLog, selectedErrorLogReferenceSummary, activeErrorResource, onSelectResource, }: { selectedErrorLog: ErrorLogItem; selectedErrorLogReferenceSummary: ErrorReferenceSummary | null; activeErrorResource: ErrorReferenceResource | null; onSelectResource: (url: string) => void; }) { return ( <> {selectedErrorLogReferenceSummary ? (
preview {selectedErrorLogReferenceSummary.previewCount}
image {selectedErrorLogReferenceSummary.imageCount}
link {selectedErrorLogReferenceSummary.linkCount}
참조 합계 {selectedErrorLogReferenceSummary.resources.length}
) : null} {selectedErrorLogReferenceSummary?.resources.length ? (
{selectedErrorLogReferenceSummary.resources.map((resource, index) => ( ))}
{activeErrorResource ? (
{activeErrorResource.label}
{getErrorResourceKindLabel(activeErrorResource.kind)} · {activeErrorResource.sourcePath}
종류 {getErrorResourceKindLabel(activeErrorResource.kind)}
추출 경로 {activeErrorResource.sourcePath}
URL {activeErrorResource.url}
{activeErrorResource.kind === 'image' ? ( ) : activeErrorResource.kind === 'preview' ? (