Features: - Image generation (OpenAI, Gemini, Leonardo, Bria, Stability, Flux) - Nano Banana iterative editing - Video generation and upscaling - Audio TTS, STT, sound effects (ElevenLabs) - Text prompt studio and alt text - User authentication with JWT/cookies - Admin panel with voice management - Job queue with Celery - PostgreSQL + Redis backend - Next.js 15 + FastAPI architecture 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
"""Job Schemas"""
|
|
from pydantic import BaseModel
|
|
from typing import Optional, List, Dict, Any
|
|
from datetime import datetime
|
|
from uuid import UUID
|
|
|
|
|
|
class JobBase(BaseModel):
|
|
module: str
|
|
action: str
|
|
priority: int = 5
|
|
input_data: Dict[str, Any]
|
|
|
|
|
|
class JobCreate(JobBase):
|
|
user_id: Optional[UUID] = None
|
|
project_id: Optional[UUID] = None
|
|
input_asset_ids: Optional[List[UUID]] = None
|
|
|
|
|
|
class JobUpdate(BaseModel):
|
|
status: Optional[str] = None
|
|
progress: Optional[int] = None
|
|
output_data: Optional[Dict[str, Any]] = None
|
|
output_asset_ids: Optional[List[UUID]] = None
|
|
error_message: Optional[str] = None
|
|
|
|
|
|
class JobResponse(JobBase):
|
|
id: UUID
|
|
user_id: Optional[UUID] = None
|
|
project_id: Optional[UUID] = None
|
|
status: str
|
|
progress: int
|
|
output_data: Optional[Dict[str, Any]] = None
|
|
input_asset_ids: Optional[List[UUID]] = None
|
|
output_asset_ids: Optional[List[UUID]] = None
|
|
error_message: Optional[str] = None
|
|
api_provider: Optional[str] = None
|
|
api_model: Optional[str] = None
|
|
queued_at: Optional[datetime] = None
|
|
started_at: Optional[datetime] = None
|
|
completed_at: Optional[datetime] = None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|