from pathlib import Path from typing import Any from fastapi import UploadFile from app.config import get_settings from app.core.logging import logger settings = get_settings() async def upload_dataset(file: UploadFile) -> dict[str, Any]: """保存上传文件并检测格式。""" upload_dir = settings.uploads_dir upload_dir.mkdir(parents=True, exist_ok=True) file_path = upload_dir / file.filename content = await file.read() file_path.write_bytes(content) fmt = _detect_format(file.filename or "") logger.info(f"Uploaded dataset: {file_path} (format={fmt})") return {"path": str(file_path), "format": fmt, "size": len(content)} def _detect_format(filename: str) -> str: ext = Path(filename).suffix.lower().lstrip(".") if ext in ("jsonl", "csv", "parquet", "json"): return ext return "unknown"