78 lines
2.7 KiB
JavaScript
78 lines
2.7 KiB
JavaScript
|
|
'use client';
|
|||
|
|
|
|||
|
|
import { Box, Typography, Chip, Tooltip, alpha, CircularProgress } from '@mui/material';
|
|||
|
|
import { useTranslation } from 'react-i18next';
|
|||
|
|
import { useTheme } from '@mui/material/styles';
|
|||
|
|
import { useState } from 'react';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 数据集元数据展示组件
|
|||
|
|
*/
|
|||
|
|
export default function DatasetMetadata({ currentDataset, onViewChunk }) {
|
|||
|
|
const { t } = useTranslation();
|
|||
|
|
const theme = useTheme();
|
|||
|
|
|
|||
|
|
return (
|
|||
|
|
<Box sx={{ mb: 3 }}>
|
|||
|
|
<Typography variant="subtitle1" color="text.secondary" sx={{ mb: 1 }}>
|
|||
|
|
{t('datasets.metadata')}
|
|||
|
|
</Typography>
|
|||
|
|
<Box sx={{ display: 'flex', gap: 2, flexWrap: 'wrap' }}>
|
|||
|
|
<Chip label={`${t('datasets.model')}: ${currentDataset.model}`} variant="outlined" />
|
|||
|
|
{currentDataset.questionLabel && (
|
|||
|
|
<Chip label={`${t('common.label')}: ${currentDataset.questionLabel}`} color="primary" variant="outlined" />
|
|||
|
|
)}
|
|||
|
|
<Chip
|
|||
|
|
label={`${t('datasets.createdAt')}: ${new Date(currentDataset.createAt).toLocaleString('zh-CN')}`}
|
|||
|
|
variant="outlined"
|
|||
|
|
/>
|
|||
|
|
<Tooltip title={t('textSplit.viewChunk')}>
|
|||
|
|
<Chip
|
|||
|
|
label={`${t('datasets.chunkId')}: ${currentDataset.chunkName}`}
|
|||
|
|
variant="outlined"
|
|||
|
|
color="info"
|
|||
|
|
onClick={async () => {
|
|||
|
|
try {
|
|||
|
|
// 使用新API接口获取文本块内容
|
|||
|
|
const response = await fetch(
|
|||
|
|
`/api/projects/${currentDataset.projectId}/chunks/name?chunkName=${encodeURIComponent(currentDataset.chunkName)}`
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
if (!response.ok) {
|
|||
|
|
throw new Error(`获取文本块失败: ${response.statusText}`);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const chunkData = await response.json();
|
|||
|
|
|
|||
|
|
// 调用父组件的方法显示文本块
|
|||
|
|
onViewChunk({
|
|||
|
|
name: currentDataset.chunkName,
|
|||
|
|
content: chunkData.content
|
|||
|
|
});
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('获取文本块内容失败:', error);
|
|||
|
|
// 即使API请求失败,也尝试调用查看方法
|
|||
|
|
onViewChunk({
|
|||
|
|
name: currentDataset.chunkName,
|
|||
|
|
content: '内容加载失败,请重试'
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}}
|
|||
|
|
sx={{ cursor: 'pointer' }}
|
|||
|
|
/>
|
|||
|
|
</Tooltip>
|
|||
|
|
{currentDataset.confirmed && (
|
|||
|
|
<Chip
|
|||
|
|
label={t('datasets.confirmed')}
|
|||
|
|
sx={{
|
|||
|
|
backgroundColor: alpha(theme.palette.success.main, 0.1),
|
|||
|
|
color: theme.palette.success.dark,
|
|||
|
|
fontWeight: 'medium'
|
|||
|
|
}}
|
|||
|
|
/>
|
|||
|
|
)}
|
|||
|
|
</Box>
|
|||
|
|
</Box>
|
|||
|
|
);
|
|||
|
|
}
|