Add Dispatch_V0.1.1

This commit is contained in:
2026-04-29 08:18:54 +04:00
commit a7ede6ded4
404 changed files with 39167 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
# -*- 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())