GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s
76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.schemas.operations import VectorSelectionBBox
|
|
|
|
|
|
class AoiOperationCreate(BaseModel):
|
|
area_id: UUID | None = None
|
|
bbox: VectorSelectionBBox | None = None
|
|
operation_type: str = Field(min_length=1, max_length=128)
|
|
provider_key: str = Field(min_length=1, max_length=120)
|
|
product_key: str = Field(min_length=1, max_length=120)
|
|
coverage_zone: str | None = Field(default=None, max_length=64)
|
|
max_partition_side_m: float | None = Field(default=None, gt=0, le=60_000)
|
|
max_attempts: int = Field(default=3, ge=1, le=10)
|
|
parameters_json: dict = Field(default_factory=dict)
|
|
|
|
|
|
class AoiPartitionRead(BaseModel):
|
|
id: UUID
|
|
partition_key: str
|
|
provider_key: str
|
|
product_key: str
|
|
ordinal: int
|
|
status: str
|
|
attempt_count: int
|
|
max_attempts: int
|
|
checkpoint_json: dict | None = None
|
|
result_json: dict | None = None
|
|
error_message: str | None = None
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class AoiOperationRead(BaseModel):
|
|
id: UUID
|
|
project_id: UUID
|
|
area_id: UUID | None = None
|
|
parent_job_id: UUID | None = None
|
|
operation_type: str
|
|
status: str
|
|
request_json: dict
|
|
plan_json: dict
|
|
result_json: dict | None = None
|
|
error_message: str | None = None
|
|
progress: float
|
|
partition_counts: dict[str, int]
|
|
partitions: list[AoiPartitionRead] = Field(default_factory=list)
|
|
created_at: datetime | None = None
|
|
started_at: datetime | None = None
|
|
finished_at: datetime | None = None
|
|
|
|
|
|
class AoiOperationList(BaseModel):
|
|
items: list[AoiOperationRead]
|
|
total: int
|
|
|
|
|
|
class AoiPartitionCheckpoint(BaseModel):
|
|
checkpoint_json: dict = Field(default_factory=dict)
|
|
|
|
|
|
class AoiPartitionComplete(BaseModel):
|
|
result_json: dict = Field(default_factory=dict)
|
|
skipped: bool = False
|
|
|
|
|
|
class AoiPartitionFail(BaseModel):
|
|
error_message: str = Field(min_length=1, max_length=4000)
|
|
retryable: bool = True
|
|
details: dict = Field(default_factory=dict)
|