feat: rebuild work queue api with fastapi and postgres
Some checks failed
ci / build-test-push (push) Failing after 1m42s
Some checks failed
ci / build-test-push (push) Failing after 1m42s
This commit is contained in:
76
app/models.py
Normal file
76
app/models.py
Normal file
@@ -0,0 +1,76 @@
|
||||
from datetime import datetime
|
||||
from typing import Any, Literal
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
Status = Literal["queued", "dispatched", "in_progress", "blocked", "failed", "completed", "cancelled"]
|
||||
Outcome = Literal["success", "failed", "cancelled"]
|
||||
|
||||
|
||||
class ProjectCreate(BaseModel):
|
||||
name: str
|
||||
external_ref: str | None = None
|
||||
|
||||
|
||||
class ProjectUpdate(BaseModel):
|
||||
name: str | None = None
|
||||
external_ref: str | None = None
|
||||
|
||||
|
||||
class Project(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: UUID
|
||||
name: str
|
||||
external_ref: str | None = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
class WorkCreate(BaseModel):
|
||||
project_id: UUID | None = None
|
||||
type: str
|
||||
description: str
|
||||
payload: dict[str, Any] | None = None
|
||||
priority: int = Field(default=3, ge=1, le=5)
|
||||
assigned_agent: str | None = None
|
||||
created_by: str | None = None
|
||||
|
||||
|
||||
class WorkUpdate(BaseModel):
|
||||
status: Status | None = None
|
||||
outcome: Outcome | None = None
|
||||
notes: str | None = None
|
||||
assigned_agent: str | None = None
|
||||
|
||||
|
||||
class DispatchLog(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: UUID
|
||||
work_item_id: UUID
|
||||
dispatched_at: datetime
|
||||
agent: str
|
||||
completed_at: datetime | None = None
|
||||
outcome: Outcome | None = None
|
||||
|
||||
|
||||
class WorkItem(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: UUID
|
||||
project_id: UUID | None = None
|
||||
type: str
|
||||
description: str
|
||||
payload: dict[str, Any] | None = None
|
||||
priority: int
|
||||
status: Status
|
||||
assigned_agent: str | None = None
|
||||
created_by: str | None = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
completed_at: datetime | None = None
|
||||
outcome: Outcome | None = None
|
||||
notes: str | None = None
|
||||
dispatch_log: list[DispatchLog] = []
|
||||
Reference in New Issue
Block a user