Add Dispatch_V0.1.1
This commit is contained in:
42
Dispatch_V0.1.1/application/specialist_assignment_service.py
Normal file
42
Dispatch_V0.1.1/application/specialist_assignment_service.py
Normal 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())
|
||||
Reference in New Issue
Block a user