99 lines
2.4 KiB
Python
99 lines
2.4 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class DetectionModelCapability(BaseModel):
|
|
model_id: str
|
|
display_name: str
|
|
framework: str
|
|
task_type: str
|
|
supported_classes: list[str]
|
|
configured: bool
|
|
status: str
|
|
limitation_message: str
|
|
version: str | None = None
|
|
|
|
|
|
class DetectionModelsResponse(BaseModel):
|
|
models: list[DetectionModelCapability]
|
|
|
|
|
|
class DetectionRunRequest(BaseModel):
|
|
project_id: UUID
|
|
dataset_id: UUID
|
|
model_id: str
|
|
confidence_threshold: float = Field(default=0.5, ge=0.0, le=1.0)
|
|
class_filter: list[str] | None = None
|
|
tile_manifest_path: str | None = None
|
|
parameters_json: dict = Field(default_factory=dict)
|
|
|
|
|
|
class DetectionQaRequest(BaseModel):
|
|
reference_dataset_id: UUID
|
|
iou_threshold: float = Field(default=0.5, ge=0.0, le=1.0)
|
|
class_name: str | None = None
|
|
min_confidence: float | None = Field(default=None, ge=0.0, le=1.0)
|
|
|
|
|
|
class DetectionRunResponse(BaseModel):
|
|
analysis_run_id: UUID
|
|
job_id: UUID
|
|
project_id: UUID
|
|
dataset_id: UUID
|
|
model_id: str
|
|
status: str
|
|
detection_count: int
|
|
error_code: str | None = None
|
|
message: str
|
|
|
|
|
|
class DetectionRunRead(BaseModel):
|
|
id: UUID
|
|
project_id: UUID
|
|
dataset_id: UUID | None = None
|
|
job_id: UUID | None = None
|
|
analysis_type: str
|
|
status: str
|
|
model_name: str | None = None
|
|
model_version: str | None = None
|
|
parameters_json: dict
|
|
result_json: dict | None = None
|
|
error_message: str | None = None
|
|
created_at: datetime | None = None
|
|
started_at: datetime | None = None
|
|
finished_at: datetime | None = None
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DetectionRunListResponse(BaseModel):
|
|
items: list[DetectionRunRead]
|
|
total: int
|
|
|
|
|
|
class DetectionRead(BaseModel):
|
|
id: UUID
|
|
project_id: UUID
|
|
dataset_id: UUID | None = None
|
|
analysis_run_id: UUID | None = None
|
|
job_id: UUID | None = None
|
|
model_name: str
|
|
model_version: str | None = None
|
|
class_name: str
|
|
confidence: float
|
|
bbox_json: dict | None = None
|
|
source_tile_path: str | None = None
|
|
properties_json: dict | None = None
|
|
created_at: datetime | None = None
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DetectionListResponse(BaseModel):
|
|
items: list[DetectionRead]
|
|
total: int
|