/**
 * 数据导入类型定义
 */

export interface ImportTask {
  id: string;
  name: string;                    // 任务名称
  type: ImportType;                // 导入类型
  status: ImportStatus;            // 状态
  total: number;                   // 总数
  success: number;                 // 成功数
  failed: number;                  // 失败数
  progress: number;                // 进度 0-100
  fileName: string;                // 文件名
  fileSize: string;                // 文件大小
  errorFile?: string;              // 错误文件下载地址
  creatorId: string;
  creatorName: string;
  startTime: string;
  endTime?: string;
  createTime: string;
}

export type ImportType = 'user' | 'product' | 'order' | 'category' | 'banner' | 'config' | 'custom';

export type ImportStatus = 'pending' | 'uploading' | 'parsing' | 'validating' | 'importing' | 'completed' | 'failed' | 'cancelled';

export interface ImportTemplate {
  id: string;
  name: string;                    // 模板名称
  type: ImportType;                // 导入类型
  description: string;             // 说明
  downloadUrl: string;             // 模板下载
  fields: ImportField[];           // 字段定义
  rules: ImportRule[];             // 导入规则
  exampleUrl?: string;             // 示例下载
  createTime: string;
}

export interface ImportField {
  key: string;                     // 字段名
  name: string;                     // 显示名
  type: 'string' | 'number' | 'date' | 'boolean' | 'select' | 'multi-select';
  required: boolean;               // 是否必填
  defaultValue?: string;           // 默认值
  options?: string[];              // 选项(for select)
  maxLength?: number;              // 最大长度
  pattern?: string;                // 正则校验
  example?: string;               // 示例
}

export interface ImportRule {
  field: string;
  rule: 'unique' | 'required' | 'max-length' | 'pattern' | 'range' | 'custom';
  message: string;
  params?: any;
}

export interface ImportError {
  row: number;                      // 行号
  field: string;                    // 字段
  value: string;                    // 值
  error: string;                   // 错误信息
  suggestion?: string;              // 建议
}

export interface ExportTask {
  id: string;
  name: string;                    // 任务名称
  type: ExportType;                // 导出类型
  status: ExportStatus;            // 状态
  format: ExportFormat;            // 格式
  filters: Record<string, any>;   // 筛选条件
  total: number;                   // 总数
  fileName?: string;               // 文件名
  fileSize?: string;               // 文件大小
  downloadUrl?: string;            // 下载地址
  expiresAt?: string;              // 过期时间
  creatorId: string;
  creatorName: string;
  createTime: string;
  completeTime?: string;
}

export type ExportType = 'user' | 'order' | 'product' | 'bill' | 'log' | 'custom';

export type ExportStatus = 'pending' | 'processing' | 'completed' | 'failed';

export type ExportFormat = 'xlsx' | 'csv' | 'json' | 'pdf';
