fixes global

This commit is contained in:
user committed 2025-08-08 09:14:18 +03:00
1 parent 13dc4f39c8
commit cad0f6aebe
64 files changed
+10379 -254

No files matched your search

@@ -0,0 +1,104 @@
from __future__ import annotations
import enum
import time
from dataclasses import dataclass, field, asdict
from typing import Dict, Any, List, Optional, Literal, Union
class ConversionPriority(enum.IntEnum):
LOW = 10
NORMAL = 50
HIGH = 90
CRITICAL = 100
class ConversionStatus(str, enum.Enum):
QUEUED = "queued"
RUNNING = "running"
SUCCESS = "success"
FAILED = "failed"
CANCELED = "canceled"
@dataclass
class ContentMetadata:
"""
Метаданные контента для NFT и каталогизации.
"""
title: str
description: Optional[str] = None
author: Optional[str] = None
collection: Optional[str] = None
tags: List[str] = field(default_factory=list)
cover_image_b64: Optional[str] = None
# Доп. поля для Web2/Web3 совместимости
language: Optional[str] = None
explicit: Optional[bool] = None
attributes: Dict[str, Any] = field(default_factory=dict)
def to_dict(self) -> Dict[str, Any]:
return asdict(self)
@dataclass
class ConversionTask:
"""
Описывает задачу на конвертацию для converter-module.
"""
task_id: str
input_path: str
input_ext: str
quality: Literal["high", "low"]
# Доп опции конвертера
trim: Optional[str] = None # формат "start-end" в секундах, пример "0.5-35"
custom: List[str] = field(default_factory=list)
# Интеграция с децентрализованной платформой
priority: ConversionPriority = ConversionPriority.NORMAL
attempts: int = 0
max_retries: int = 3
# NFT/контент метаданные
metadata: ContentMetadata = field(default_factory=lambda: ContentMetadata(title="Untitled"))
# Трассировка/время
created_at: int = field(default_factory=lambda: int(time.time()))
updated_at: int = field(default_factory=lambda: int(time.time()))
def to_dict(self) -> Dict[str, Any]:
d = asdict(self)
d["priority"] = int(self.priority)
return d
@dataclass
class ConversionResult:
"""
Результат конвертации.
"""
task_id: str
status: ConversionStatus
# Путь к выходному файлу конвертера внутри converter-module контейнера/процесса
converter_output_path: Optional[str] = None
# Снимок stdout/stderr или лог-файла конвертера (если доступно)
logs_path: Optional[str] = None
# Интеграция после конвертации
# content_id после шифрования, ключ для расшифровки хранится отдельно безопасно
content_id: Optional[str] = None
# Итоговые чанки (их хеши и base64-данные)
chunks: Optional[List[Dict[str, Any]]] = None
# Метаданные для NFT
nft_metadata: Optional[Dict[str, Any]] = None
# Ошибка (если FAILED)
error: Optional[str] = None
finished_at: Optional[int] = None
def to_dict(self) -> Dict[str, Any]:
d = asdict(self)
d["status"] = str(self.status.value)
return d