first-update

This commit is contained in:
2026-03-17 14:36:31 +08:00
parent 72f08aee7c
commit 4eddf05e79
516 changed files with 115270 additions and 1 deletions

View File

@@ -0,0 +1,127 @@
'use client';
import React, { useState } from 'react';
import { useTranslation } from 'react-i18next';
import {
Dialog,
DialogTitle,
DialogContent,
DialogActions,
Button,
FormControl,
FormLabel,
RadioGroup,
FormControlLabel,
Radio,
Checkbox,
TextField,
Box,
Typography,
Alert
} from '@mui/material';
const ExportImageDatasetDialog = ({ open, onClose, onExport }) => {
const { t } = useTranslation();
const [formatType, setFormatType] = useState('raw');
const [exportImages, setExportImages] = useState(false);
const [includeImagePath, setIncludeImagePath] = useState(true);
const [systemPrompt, setSystemPrompt] = useState('');
const [confirmedOnly, setConfirmedOnly] = useState(false);
const handleExport = () => {
onExport({
formatType,
exportImages,
includeImagePath,
systemPrompt,
confirmedOnly
});
};
const handleClose = () => {
onClose();
};
return (
<Dialog
open={open}
onClose={handleClose}
maxWidth="sm"
fullWidth
PaperProps={{
sx: {
borderRadius: 2
}
}}
>
<DialogTitle>{t('imageDatasets.exportTitle', '导出图片数据集')}</DialogTitle>
<DialogContent>
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, pt: 2 }}>
{/* 导出格式选择 */}
<FormControl component="fieldset">
<FormLabel component="legend">{t('imageDatasets.exportFormat', '导出格式')}</FormLabel>
<RadioGroup value={formatType} onChange={e => setFormatType(e.target.value)}>
<FormControlLabel value="raw" control={<Radio />} label={t('imageDatasets.rawFormat', '原始格式')} />
<FormControlLabel value="sharegpt" control={<Radio />} label="ShareGPT (OpenAI)" />
<FormControlLabel value="alpaca" control={<Radio />} label="Alpaca" />
</RadioGroup>
</FormControl>
{/* 图片导出选项 */}
<Box>
<FormControlLabel
control={<Checkbox checked={exportImages} onChange={e => setExportImages(e.target.checked)} />}
label={t('imageDatasets.exportImagesOption', '导出图片文件')}
/>
<Typography variant="caption" color="text.secondary" sx={{ display: 'block', ml: 4 }}>
{t('imageDatasets.exportImagesDesc', '将所有图片打包成 ZIP 压缩包一起下载')}
</Typography>
</Box>
{/* 图片路径选项 */}
<Box>
<FormControlLabel
control={<Checkbox checked={includeImagePath} onChange={e => setIncludeImagePath(e.target.checked)} />}
label={t('imageDatasets.includeImagePath', '在数据集中包含图片路径')}
/>
<Typography variant="caption" color="text.secondary" sx={{ display: 'block', ml: 4 }}>
{t('imageDatasets.includeImagePathDesc', '在问题或答案中添加图片路径(格式:/images/图片名称)')}
</Typography>
</Box>
{/* 系统提示词 */}
<TextField
label={t('imageDatasets.systemPrompt', '系统提示词(可选)')}
multiline
rows={3}
value={systemPrompt}
onChange={e => setSystemPrompt(e.target.value)}
placeholder={t('imageDatasets.systemPromptPlaceholder', '输入系统提示词...')}
fullWidth
/>
{/* 仅导出已确认 */}
<FormControlLabel
control={<Checkbox checked={confirmedOnly} onChange={e => setConfirmedOnly(e.target.checked)} />}
label={t('imageDatasets.confirmedOnly', '仅导出已确认的数据集')}
/>
{/* 提示信息 */}
<Alert severity="info" sx={{ mt: 1 }}>
{t('imageDatasets.exportTip', '标签格式的答案将自动解析为文本(逗号分隔)')}
</Alert>
</Box>
</DialogContent>
<DialogActions sx={{ px: 3, pb: 2 }}>
<Button onClick={handleClose} variant="outlined">
{t('common.cancel', '取消')}
</Button>
<Button onClick={handleExport} variant="contained">
{t('export.title', '导出')}
</Button>
</DialogActions>
</Dialog>
);
};
export default ExportImageDatasetDialog;