# -*- coding: utf-8 -*- # hub/ticket/application/specialist_assignment_service.py """Application-сервис назначения специалистов в Ticket.""" from __future__ import annotations from domain.task import TicketTask from state import TicketStateApi SPECIALIST_PHOTOS = { "Иванов Алексей Сергеевич": "specialist1.png", "Петрова Мария Владимировна": "specialist2.png", "Сидоров Дмитрий Иванович": "specialist3.png", "Козлова Анна Петровна": "specialist4.png", "Васильев Сергей Николаевич": "specialist5.png", "Николаева Ольга Дмитриевна": "specialist6.png", "Фёдоров Андрей Викторович": "specialist7.png", "Орлова Екатерина Александровна": "specialist8.png", } class SpecialistAssignmentService: """Команда назначения специалиста поверх канонического state API.""" def __init__(self, state: TicketStateApi): self._state = state def assign_specialist(self, task_id: int, specialist_name: str): """Назначить специалиста и сохранить фотографию профиля.""" snapshot = self._state.get_task(task_id) if snapshot is None: return None task_data = TicketTask.from_snapshot(snapshot).to_record() task_data["assigned_specialist"] = specialist_name task_data["specialist_photo"] = SPECIALIST_PHOTOS.get(specialist_name, "") return self._state.update_task(task_data) def list_specialists(self) -> list[str]: """Вернуть канонический список доступных специалистов.""" return list(SPECIALIST_PHOTOS.keys())