chore: first commit
This commit is contained in:
@@ -8,20 +8,14 @@ from datetime import datetime
|
||||
from typing import Literal
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import Field
|
||||
from pydantic import Field, model_validator
|
||||
|
||||
from cpv3.common.schemas import Schema
|
||||
from cpv3.modules.jobs.schemas import JobStatusEnum, JobTypeEnum
|
||||
|
||||
|
||||
TaskTypeEnum = Literal[
|
||||
"MEDIA_PROBE",
|
||||
"SILENCE_REMOVE",
|
||||
"MEDIA_CONVERT",
|
||||
"TRANSCRIPTION_GENERATE",
|
||||
"CAPTIONS_GENERATE",
|
||||
]
|
||||
|
||||
TaskStatusEnum = Literal["PENDING", "RUNNING", "FAILED", "CANCELLED", "DONE"]
|
||||
TaskTypeEnum = JobTypeEnum
|
||||
TaskStatusEnum = JobStatusEnum
|
||||
|
||||
|
||||
# --- Request schemas ---
|
||||
@@ -104,3 +98,33 @@ class TaskStatusResponse(Schema):
|
||||
output_data: dict | None = None
|
||||
started_at: datetime | None = None
|
||||
finished_at: datetime | None = None
|
||||
|
||||
|
||||
class TaskWebhookEvent(Schema):
|
||||
"""Webhook event payload for task updates."""
|
||||
|
||||
status: TaskStatusEnum | None = None
|
||||
progress_pct: float | None = None
|
||||
current_message: str | None = None
|
||||
error_message: str | None = None
|
||||
output_data: dict | None = None
|
||||
started_at: datetime | None = None
|
||||
finished_at: datetime | None = None
|
||||
|
||||
@model_validator(mode="after")
|
||||
def validate_has_update(self) -> "TaskWebhookEvent":
|
||||
has_update = any(
|
||||
value is not None
|
||||
for value in (
|
||||
self.status,
|
||||
self.progress_pct,
|
||||
self.current_message,
|
||||
self.error_message,
|
||||
self.output_data,
|
||||
self.started_at,
|
||||
self.finished_at,
|
||||
)
|
||||
)
|
||||
if not has_update:
|
||||
raise ValueError("Webhook event must include at least one update field.")
|
||||
return self
|
||||
|
||||
Reference in New Issue
Block a user