chore: claude final touches

This commit is contained in:
Daniil
2026-03-17 18:11:23 +03:00
parent 4b90925c2a
commit 0299949553
21 changed files with 1915 additions and 101 deletions
+87
View File
@@ -1,9 +1,96 @@
from __future__ import annotations
from datetime import datetime
from typing import Literal
from uuid import UUID
from pydantic import Field
from cpv3.common.schemas import Schema
from cpv3.modules.transcription.schemas import Document
# ---------------------------------------------------------------------------
# Caption style config sub-schemas
# ---------------------------------------------------------------------------
class CaptionTextStyle(Schema):
font_family: str = "Lobster"
font_size: int = 40
font_weight: int = 400
text_color: str = "#FFFFFF"
highlight_color: str = "#FFCC00"
text_shadow: str | None = "2px 2px 4px rgba(0,0,0,0.5)"
text_stroke_width: float = 0
text_stroke_color: str = "#000000"
class CaptionLayoutStyle(Schema):
vertical_position: Literal["top", "center", "bottom"] = "bottom"
horizontal_alignment: Literal["left", "center", "right"] = "center"
padding_px: int = 20
max_width_pct: int = 90
lines_per_screen: int = 2
class CaptionAnimationStyle(Schema):
highlight_style: Literal["color", "scale", "underline", "color_scale"] = "color"
highlight_scale: float = 1.1
segment_transition: Literal["fade", "slide", "none"] = "fade"
fade_duration_frames: int = 3
animation_speed: float = 1.0
class CaptionBackgroundStyle(Schema):
bg_color: str = "rgba(0,0,0,0.6)"
bg_blur_px: int = 0
bg_glow_color: str | None = None
bg_border_radius_px: int = 15
bg_padding_px: int = 20
class CaptionStyleConfig(Schema):
text: CaptionTextStyle = Field(default_factory=CaptionTextStyle)
layout: CaptionLayoutStyle = Field(default_factory=CaptionLayoutStyle)
animation: CaptionAnimationStyle = Field(default_factory=CaptionAnimationStyle)
background: CaptionBackgroundStyle = Field(default_factory=CaptionBackgroundStyle)
# ---------------------------------------------------------------------------
# Preset CRUD schemas
# ---------------------------------------------------------------------------
class CaptionPresetCreate(Schema):
name: str = Field(..., max_length=128)
description: str | None = None
style_config: CaptionStyleConfig
class CaptionPresetUpdate(Schema):
name: str | None = Field(default=None, max_length=128)
description: str | None = None
style_config: CaptionStyleConfig | None = None
class CaptionPresetRead(Schema):
id: UUID
user_id: UUID | None
name: str
description: str | None
is_system: bool
style_config: CaptionStyleConfig
preview_url: str | None
created_at: datetime
updated_at: datetime
# ---------------------------------------------------------------------------
# Existing request/response schemas
# ---------------------------------------------------------------------------
class CaptionsRequest(Schema):
folder: str
video_s3_path: str