dataset_service.py 861 B

1234567891011121314151617181920212223242526272829
  1. from pathlib import Path
  2. from typing import Any
  3. from fastapi import UploadFile
  4. from app.config import get_settings
  5. from app.core.logging import logger
  6. settings = get_settings()
  7. async def upload_dataset(file: UploadFile) -> dict[str, Any]:
  8. """保存上传文件并检测格式。"""
  9. upload_dir = settings.uploads_dir
  10. upload_dir.mkdir(parents=True, exist_ok=True)
  11. file_path = upload_dir / file.filename
  12. content = await file.read()
  13. file_path.write_bytes(content)
  14. fmt = _detect_format(file.filename or "")
  15. logger.info(f"Uploaded dataset: {file_path} (format={fmt})")
  16. return {"path": str(file_path), "format": fmt, "size": len(content)}
  17. def _detect_format(filename: str) -> str:
  18. ext = Path(filename).suffix.lower().lstrip(".")
  19. if ext in ("jsonl", "csv", "parquet", "json"):
  20. return ext
  21. return "unknown"