re-structure

This commit is contained in:
Yaojia Wang
2026-02-01 22:55:31 +01:00
parent 400b12a967
commit b602d0a340
176 changed files with 856 additions and 853 deletions

View File

@@ -82,7 +82,7 @@ def mock_inference_service():
@pytest.fixture
def mock_storage_config(temp_storage_dir):
"""Create mock storage configuration."""
from inference.web.config import StorageConfig
from backend.web.config import StorageConfig
return StorageConfig(
upload_dir=temp_storage_dir["uploads"],
@@ -104,13 +104,13 @@ def mock_storage_helper(temp_storage_dir):
@pytest.fixture
def test_app(mock_inference_service, mock_storage_config, mock_storage_helper):
"""Create a test FastAPI application with mocked storage."""
from inference.web.api.v1.public.inference import create_inference_router
from backend.web.api.v1.public.inference import create_inference_router
app = FastAPI()
# Patch get_storage_helper to return our mock
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
inference_router = create_inference_router(mock_inference_service, mock_storage_config)
@@ -123,7 +123,7 @@ def test_app(mock_inference_service, mock_storage_config, mock_storage_helper):
def client(test_app, mock_storage_helper):
"""Create a test client with storage helper patched."""
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
yield TestClient(test_app)
@@ -151,7 +151,7 @@ class TestInferenceEndpoint:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -171,7 +171,7 @@ class TestInferenceEndpoint:
png_header = b"\x89PNG\r\n\x1a\n" + b"\x00" * 100
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -186,7 +186,7 @@ class TestInferenceEndpoint:
def test_infer_invalid_file_type(self, client, mock_storage_helper):
"""Test rejection of invalid file types."""
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -199,7 +199,7 @@ class TestInferenceEndpoint:
def test_infer_no_file(self, client, mock_storage_helper):
"""Test rejection when no file provided."""
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post("/api/v1/infer")
@@ -211,7 +211,7 @@ class TestInferenceEndpoint:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -238,7 +238,7 @@ class TestInferenceResultFormat:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -258,7 +258,7 @@ class TestInferenceResultFormat:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -282,7 +282,7 @@ class TestErrorHandling:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -297,7 +297,7 @@ class TestErrorHandling:
"""Test handling of empty files."""
# Empty file still has valid content type
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -318,7 +318,7 @@ class TestResponseFormat:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -338,7 +338,7 @@ class TestResponseFormat:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -359,7 +359,7 @@ class TestDocumentIdGeneration:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(
@@ -376,7 +376,7 @@ class TestDocumentIdGeneration:
pdf_content = b"%PDF-1.4\n%test\n"
with patch(
"inference.web.api.v1.public.inference.get_storage_helper",
"backend.web.api.v1.public.inference.get_storage_helper",
return_value=mock_storage_helper,
):
response = client.post(

View File

@@ -11,7 +11,7 @@ import pytest
from fastapi import FastAPI
from fastapi.testclient import TestClient
from inference.data.admin_models import (
from backend.data.admin_models import (
AdminAnnotation,
AdminDocument,
AdminToken,
@@ -20,8 +20,8 @@ from inference.data.admin_models import (
TrainingDataset,
TrainingTask,
)
from inference.web.api.v1.admin.dashboard import create_dashboard_router
from inference.web.core.auth import get_admin_token_dep
from backend.web.api.v1.admin.dashboard import create_dashboard_router
from backend.web.core.auth import validate_admin_token
def create_test_app(override_token_dep):
@@ -31,7 +31,7 @@ def create_test_app(override_token_dep):
app.include_router(router)
# Override auth dependency
app.dependency_overrides[get_admin_token_dep] = lambda: override_token_dep
app.dependency_overrides[validate_admin_token] = lambda: override_token_dep
return app

View File

@@ -26,7 +26,7 @@ from uuid import uuid4
import pytest
from sqlmodel import Session, SQLModel, create_engine
from inference.data.admin_models import (
from backend.data.admin_models import (
AdminAnnotation,
AdminDocument,
AdminToken,
@@ -170,15 +170,15 @@ def patched_session(db_session):
# All modules that import get_session_context
patch_targets = [
"inference.data.database.get_session_context",
"inference.data.repositories.document_repository.get_session_context",
"inference.data.repositories.annotation_repository.get_session_context",
"inference.data.repositories.dataset_repository.get_session_context",
"inference.data.repositories.training_task_repository.get_session_context",
"inference.data.repositories.model_version_repository.get_session_context",
"inference.data.repositories.batch_upload_repository.get_session_context",
"inference.data.repositories.token_repository.get_session_context",
"inference.web.services.dashboard_service.get_session_context",
"backend.data.database.get_session_context",
"backend.data.repositories.document_repository.get_session_context",
"backend.data.repositories.annotation_repository.get_session_context",
"backend.data.repositories.dataset_repository.get_session_context",
"backend.data.repositories.training_task_repository.get_session_context",
"backend.data.repositories.model_version_repository.get_session_context",
"backend.data.repositories.batch_upload_repository.get_session_context",
"backend.data.repositories.token_repository.get_session_context",
"backend.web.services.dashboard_service.get_session_context",
]
with ExitStack() as stack:

View File

@@ -14,13 +14,13 @@ from unittest.mock import MagicMock, patch
import pytest
import numpy as np
from inference.pipeline.pipeline import (
from backend.pipeline.pipeline import (
InferencePipeline,
InferenceResult,
CrossValidationResult,
)
from inference.pipeline.yolo_detector import Detection
from inference.pipeline.field_extractor import ExtractedField
from backend.pipeline.yolo_detector import Detection
from backend.pipeline.field_extractor import ExtractedField
@pytest.fixture

View File

@@ -8,7 +8,7 @@ from uuid import uuid4
import pytest
from inference.data.repositories.annotation_repository import AnnotationRepository
from backend.data.repositories.annotation_repository import AnnotationRepository
class TestAnnotationRepositoryCreate:

View File

@@ -9,7 +9,7 @@ from uuid import uuid4
import pytest
from inference.data.repositories.batch_upload_repository import BatchUploadRepository
from backend.data.repositories.batch_upload_repository import BatchUploadRepository
class TestBatchUploadCreate:

View File

@@ -8,7 +8,7 @@ from uuid import uuid4
import pytest
from inference.data.repositories.dataset_repository import DatasetRepository
from backend.data.repositories.dataset_repository import DatasetRepository
class TestDatasetRepositoryCreate:
@@ -300,7 +300,7 @@ class TestActiveTrainingTasks:
repo = DatasetRepository()
# Update task to running
from inference.data.repositories.training_task_repository import TrainingTaskRepository
from backend.data.repositories.training_task_repository import TrainingTaskRepository
task_repo = TrainingTaskRepository()
task_repo.update_status(str(sample_training_task.task_id), "running")

View File

@@ -10,8 +10,8 @@ from uuid import uuid4
import pytest
from sqlmodel import select
from inference.data.admin_models import AdminAnnotation, AdminDocument
from inference.data.repositories.document_repository import DocumentRepository
from backend.data.admin_models import AdminAnnotation, AdminDocument
from backend.data.repositories.document_repository import DocumentRepository
def ensure_utc(dt: datetime | None) -> datetime | None:
@@ -243,7 +243,7 @@ class TestDocumentRepositoryDelete:
assert result is True
# Verify annotation is also deleted
from inference.data.repositories.annotation_repository import AnnotationRepository
from backend.data.repositories.annotation_repository import AnnotationRepository
ann_repo = AnnotationRepository()
annotations = ann_repo.get_for_document(str(sample_document.document_id))

View File

@@ -9,7 +9,7 @@ from uuid import uuid4
import pytest
from inference.data.repositories.model_version_repository import ModelVersionRepository
from backend.data.repositories.model_version_repository import ModelVersionRepository
class TestModelVersionCreate:

View File

@@ -8,7 +8,7 @@ from datetime import datetime, timezone, timedelta
import pytest
from inference.data.repositories.token_repository import TokenRepository
from backend.data.repositories.token_repository import TokenRepository
class TestTokenCreate:

View File

@@ -9,7 +9,7 @@ from uuid import uuid4
import pytest
from inference.data.repositories.training_task_repository import TrainingTaskRepository
from backend.data.repositories.training_task_repository import TrainingTaskRepository
class TestTrainingTaskCreate:

View File

@@ -9,7 +9,7 @@ from uuid import uuid4
import pytest
from inference.data.admin_models import (
from backend.data.admin_models import (
AdminAnnotation,
AdminDocument,
AnnotationHistory,
@@ -17,7 +17,7 @@ from inference.data.admin_models import (
TrainingDataset,
TrainingTask,
)
from inference.web.services.dashboard_service import (
from backend.web.services.dashboard_service import (
DashboardStatsService,
DashboardActivityService,
is_annotation_complete,

View File

@@ -12,11 +12,11 @@ from uuid import uuid4
import pytest
import yaml
from inference.data.admin_models import AdminAnnotation, AdminDocument
from inference.data.repositories.annotation_repository import AnnotationRepository
from inference.data.repositories.dataset_repository import DatasetRepository
from inference.data.repositories.document_repository import DocumentRepository
from inference.web.services.dataset_builder import DatasetBuilder
from backend.data.admin_models import AdminAnnotation, AdminDocument
from backend.data.repositories.annotation_repository import AnnotationRepository
from backend.data.repositories.dataset_repository import DatasetRepository
from backend.data.repositories.document_repository import DocumentRepository
from backend.web.services.dataset_builder import DatasetBuilder
@pytest.fixture

View File

@@ -9,7 +9,7 @@ from unittest.mock import MagicMock
import pytest
from inference.web.services.document_service import DocumentService, DocumentResult
from backend.web.services.document_service import DocumentService, DocumentResult
class MockStorageBackend:

View File

@@ -7,7 +7,7 @@ Tests for database connection, session management, and basic operations.
import pytest
from sqlmodel import Session, select
from inference.data.admin_models import AdminDocument, AdminToken
from backend.data.admin_models import AdminDocument, AdminToken
class TestDatabaseConnection: