import random from datetime import datetime, timezone from app.data.mock_data import seed_appeals from app.models import Appeal, CreateAppealRequest PRIORITY_MAP = { "Критический": ("critical", "Критический"), "Высокий": ("high", "Высокий"), "Средний": ("medium", "Средний"), "Низкий": ("low", "Низкий"), } class AppealStore: def __init__(self) -> None: self._appeals: list[Appeal] = seed_appeals() def list_all(self) -> list[Appeal]: return sorted(self._appeals, key=lambda a: a.updated_at, reverse=True) def create(self, request: CreateAppealRequest) -> Appeal: priority_key, priority_label = PRIORITY_MAP.get(request.priority, ("medium", "Средний")) now = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S") number = f"INC-2026-{random.randint(1000, 9999)}" appeal = Appeal( id=f"new-{int(datetime.now(timezone.utc).timestamp() * 1000)}", number=number, title=request.title, system=request.system, status="new", status_label="Новое обращение", next_step="Обращение в очереди на назначение исполнителя", priority=priority_key, # type: ignore[arg-type] priority_label=priority_label, created_at=now, updated_at=now, description=request.description, comments=[], ) self._appeals.insert(0, appeal) return appeal appeal_store = AppealStore()