""" Django ORM Models - GENERATED FILE Do not edit directly. Regenerate using modelgen. """ import uuid from django.db import models class AssetStatus(models.TextChoices): PENDING = "pending", "Pending" READY = "ready", "Ready" ERROR = "error", "Error" class JobStatus(models.TextChoices): PENDING = "pending", "Pending" RUNNING = "running", "Running" PAUSED = "paused", "Paused" COMPLETED = "completed", "Completed" FAILED = "failed", "Failed" CANCELLED = "cancelled", "Cancelled" class RunType(models.TextChoices): INITIAL = "initial", "Initial" REPLAY = "replay", "Replay" RETRY = "retry", "Retry" class BrandSource(models.TextChoices): OCR = "ocr", "Ocr" VLM = "local_vlm", "Vlm" CLOUD = "cloud_llm", "Cloud" MANUAL = "manual", "Manual" class SourceType(models.TextChoices): CHUNK_JOB = "chunk_job", "Chunk Job" UPLOAD = "upload", "Upload" DEVICE = "device", "Device" STREAM = "stream", "Stream" class MediaAsset(models.Model): """A video/audio file registered in the system.""" id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) filename = models.CharField(max_length=500) file_path = models.CharField(max_length=1000) status = models.CharField(max_length=20, choices=AssetStatus.choices, default=AssetStatus.PENDING) error_message = models.TextField(blank=True, default='') file_size = models.BigIntegerField(null=True, blank=True) duration = models.FloatField(null=True, blank=True, default=None) video_codec = models.CharField(max_length=255, null=True, blank=True) audio_codec = models.CharField(max_length=255, null=True, blank=True) width = models.IntegerField(null=True, blank=True, default=None) height = models.IntegerField(null=True, blank=True, default=None) framerate = models.FloatField(null=True, blank=True, default=None) bitrate = models.BigIntegerField(null=True, blank=True) properties = models.JSONField(default=dict, blank=True) comments = models.TextField(blank=True, default='') tags = models.JSONField(default=list, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: ordering = ["-created_at"] def __str__(self): return self.filename class TranscodePreset(models.Model): """A reusable transcoding configuration (like Handbrake presets).""" id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField(max_length=255) description = models.TextField(blank=True, default='') is_builtin = models.BooleanField(default=False) container = models.CharField(max_length=255) video_codec = models.CharField(max_length=255) video_bitrate = models.CharField(max_length=255, null=True, blank=True) video_crf = models.IntegerField(null=True, blank=True, default=None) video_preset = models.CharField(max_length=255, null=True, blank=True) resolution = models.CharField(max_length=255, null=True, blank=True) framerate = models.FloatField(null=True, blank=True, default=None) audio_codec = models.CharField(max_length=255) audio_bitrate = models.CharField(max_length=255, null=True, blank=True) audio_channels = models.IntegerField(null=True, blank=True, default=None) audio_samplerate = models.IntegerField(null=True, blank=True, default=None) extra_args = models.JSONField(default=list, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: ordering = ["-created_at"] def __str__(self): return self.name class Job(models.Model): """A pipeline job.""" id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) source_asset_id = models.UUIDField() video_path = models.CharField(max_length=1000) profile_name = models.CharField(max_length=255) timeline_id = models.UUIDField(null=True, blank=True) parent_id = models.UUIDField(null=True, blank=True) run_type = models.CharField(max_length=20, choices=RunType.choices, default=RunType.INITIAL) config_overrides = models.JSONField(default=dict, blank=True) status = models.CharField(max_length=20, choices=JobStatus.choices, default=JobStatus.PENDING) current_stage = models.CharField(max_length=255, null=True, blank=True) progress = models.FloatField(default=0.0) error_message = models.TextField(blank=True, default='') total_detections = models.IntegerField(default=0) brands_found = models.IntegerField(default=0) cloud_llm_calls = models.IntegerField(default=0) estimated_cost_usd = models.FloatField(default=0.0) priority = models.IntegerField(default=0) created_at = models.DateTimeField(auto_now_add=True) started_at = models.DateTimeField(null=True, blank=True) completed_at = models.DateTimeField(null=True, blank=True) class Meta: ordering = ["-created_at"] def __str__(self): return str(self.id) class Timeline(models.Model): """The frame sequence from a source video.""" id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) source_asset_id = models.UUIDField(null=True, blank=True) source_video = models.CharField(max_length=255) profile_name = models.CharField(max_length=255) fps = models.FloatField(default=2.0) frames_prefix = models.CharField(max_length=255) frames_manifest = models.JSONField(default=dict, blank=True) frames_meta = models.JSONField(default=list, blank=True) created_at = models.DateTimeField(auto_now_add=True) class Meta: ordering = ["-created_at"] def __str__(self): return str(self.id) class Checkpoint(models.Model): """A snapshot of pipeline state on a timeline.""" id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) timeline_id = models.UUIDField() job_id = models.UUIDField(null=True, blank=True) parent_id = models.UUIDField(null=True, blank=True) stage_outputs = models.JSONField(default=dict, blank=True) config_overrides = models.JSONField(default=dict, blank=True) stats = models.JSONField(default=dict, blank=True) is_scenario = models.BooleanField(default=False) scenario_label = models.CharField(max_length=255) created_at = models.DateTimeField(auto_now_add=True) class Meta: ordering = ["-created_at"] def __str__(self): return str(self.id) class Brand(models.Model): """A brand discovered or registered in the system.""" id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) canonical_name = models.CharField(max_length=255) aliases = models.JSONField(default=list, blank=True) source = models.CharField(max_length=20, choices=BrandSource.choices, default=BrandSource.OCR) confirmed = models.BooleanField(default=False) airings = models.JSONField(default=list, blank=True) total_airings = models.IntegerField(default=0) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: ordering = ["-created_at"] def __str__(self): return str(self.id) class Profile(models.Model): """A content type profile.""" id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField(max_length=255) pipeline = models.JSONField(default=dict, blank=True) configs = models.JSONField(default=dict, blank=True) class Meta: pass def __str__(self): return self.name