export enum DatasetType { TEXT = "TEXT", IMAGE = "IMAGE", AUDIO = "AUDIO", VIDEO = "VIDEO", } export enum DatasetSubType { TEXT_DOCUMENT = "TEXT_DOCUMENT", TEXT_WEB = "TEXT_WEB", TEXT_DIALOG = "TEXT_DIALOG", IMAGE_IMAGE = "IMAGE_IMAGE", IMAGE_CAPTION = "IMAGE_CAPTION", AUDIO_AUDIO = "AUDIO_AUDIO", AUDIO_JSONL = "AUDIO_JSONL", VIDEO_VIDEO = "VIDEO_VIDEO", VIDEO_JSONL = "VIDEO_JSONL", } export enum DatasetStatus { ACTIVE = "ACTIVE", INACTIVE = "INACTIVE", PROCESSING = "PROCESSING", DRAFT = "DRAFT", } export enum DataSource { UPLOAD = "UPLOAD", COLLECTION = "COLLECTION", DATABASE = "DATABASE", NAS = "NAS", OBS = "OBS", } export interface DatasetFile { id: string; datasetId?: string; fileName: string; size: string; uploadDate: string; path: string; filePath?: string; } export interface Dataset { id: string; name: string; description: string; parentDatasetId?: string; datasetType: DatasetType; status: DatasetStatus; size?: string; itemCount?: number; fileCount?: number; createdBy: string; createdAt: string; updatedAt: string; tags: string[]; targetLocation?: string; distribution?: Record>; } export interface DatasetImportConfig { source?: DataSource | string; target?: DataSource | string; dataSource?: string; splitByLine?: boolean; hasArchive?: boolean; [key: string]: string | number | boolean | null | undefined; } export interface TagItem { id: string; name: string; color: string; description: string; } export interface ScheduleConfig { type: "immediate" | "scheduled"; scheduleType?: "daily" | "weekly" | "monthly" | "custom"; time?: string; dayOfWeek?: string; dayOfMonth?: string; cronExpression?: string; maxExecutions?: number; executionCount?: number; } export interface DatasetTask { id: string; name: string; description: string; type: string; status: "importing" | "waiting" | "completed" | "failed"; progress: number; createdAt: string; importConfig: DatasetImportConfig; scheduleConfig: ScheduleConfig; nextExecution?: string; lastExecution?: string; executionHistory?: { time: string; status: string }[]; } export interface StreamUploadInfo { currentFile: string; fileIndex: number; totalFiles: number; uploadedLines: number; } export interface TaskItem { key: string; title: string; percent: number; reqId: number; isCancel?: boolean; controller: AbortController; cancelFn?: () => void; updateEvent?: string; size?: number; hasArchive?: boolean; prefix?: string; streamUploadInfo?: StreamUploadInfo; }