Redesign dataset workbench management

This commit is contained in:
2026-07-01 11:43:30 +08:00
parent 9d66f65212
commit b1c0c982b8
6 changed files with 740 additions and 75 deletions

View File

@@ -4,9 +4,10 @@ import zipfile
import cv2
import numpy as np
import pytest
from fastapi import UploadFile
from app.modules.dataset.service import create_dataset, describe_dataset, generate_yolo_dataset_yaml, save_upload, validate_dataset
from app.modules.dataset.service import copy_dataset, create_dataset, delete_dataset, describe_dataset, generate_yolo_dataset_yaml, save_upload, validate_dataset
def test_create_dataset_layout(tmp_path, monkeypatch):
@@ -19,6 +20,32 @@ def test_create_dataset_layout(tmp_path, monkeypatch):
assert created["counts"] == {"images": 0, "labels": 0, "masks": 0}
described = describe_dataset("case_01")
assert described["layout"]["images"].endswith("images")
assert described["files"]["images"] == []
with pytest.raises(ValueError, match="already exists"):
create_dataset("case 01", "duplicate")
def test_copy_and_delete_dataset(tmp_path, monkeypatch):
from types import SimpleNamespace
from app.modules.dataset import service
monkeypatch.setattr(service, "settings", SimpleNamespace(project_root=tmp_path))
create_dataset("case base", "demo")
root = service.dataset_dir("case_base")
(root / "images" / "sample.png").write_bytes(b"image")
copied = copy_dataset("case_base", "case copy", "copy")
assert copied["name"] == "case_copy"
assert copied["description"] == "copy"
assert copied["counts"]["images"] == 1
with pytest.raises(ValueError, match="already exists"):
copy_dataset("case_base", "case_copy")
deleted = delete_dataset("case_copy")
assert deleted == {"deleted": True, "name": "case_copy"}
assert not service.dataset_dir("case_copy").exists()
def test_validate_dataset_and_generate_yolo_yaml(tmp_path, monkeypatch):