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,115 @@
# -*- coding: utf-8 -*-
# hub/ticket/application/ticket_application_api.py
"""Публичный application API модуля Ticket."""
from __future__ import annotations
from typing import Any, Mapping, Protocol, Sequence
from domain import TicketDocumentSnapshot, TicketTaskSnapshot
class TicketApplicationApi(Protocol):
"""Контракт orchestration-слоя между UI, state и сервисами."""
def start(self) -> None:
"""Инициализировать application-слой Ticket."""
def stop(self) -> None:
"""Остановить активные операции и освободить ресурсы."""
def list_tasks(self) -> Sequence[TicketTaskSnapshot]:
"""Вернуть текущий срез задач для UI."""
def list_active_tasks(self) -> Sequence[TicketTaskSnapshot]:
"""Вернуть активные задачи для UI."""
def list_archived_tasks(self) -> Sequence[TicketTaskSnapshot]:
"""Вернуть архивные задачи для UI."""
def get_task(self, task_id: int) -> TicketTaskSnapshot | None:
"""Вернуть задачу по идентификатору."""
def handle_task_action(
self,
raw_action: Mapping[str, Any],
) -> TicketTaskSnapshot | None:
"""Обработать входящее действие от аппаратного или mock-шлюза."""
def set_active_view(self, view_name: str) -> None:
"""Переключить активное представление Ticket."""
def assign_specialist(
self,
task_id: int,
specialist_name: str,
) -> TicketTaskSnapshot | None:
"""Назначить специалиста на задачу."""
def list_specialists(self) -> Sequence[str]:
"""Вернуть список доступных специалистов."""
def sign_report(
self,
task_id: int,
report_type: str,
) -> TicketTaskSnapshot | None:
"""Подписать диагностический или ремонтный отчёт."""
def sign_acceptance_report(self, task_id: int) -> TicketTaskSnapshot | None:
"""Подписать акт приёмки."""
def archive_task(self, task_id: int) -> TicketTaskSnapshot | None:
"""Перевести задачу в архив."""
def refuse_task(
self,
task_id: int,
refusal_reason: str,
) -> TicketTaskSnapshot | None:
"""Перевести задачу в отказ."""
def create_diagnostic_report(
self,
task_id: int,
initial_cause: str,
actual_cause: str,
) -> TicketDocumentSnapshot:
"""Создать и подписать диагностический отчёт."""
def create_repair_report(
self,
task_id: int,
work_done: str,
used_parts: str,
recommendations: str,
) -> TicketDocumentSnapshot:
"""Создать и подписать ремонтный отчёт."""
def create_acceptance_report(
self,
task_id: int,
work_description: str,
executor_signature: str,
customer_signature: str,
) -> TicketDocumentSnapshot:
"""Создать и подписать акт приёмки."""
def list_documents(
self,
document_type: str | None = None,
) -> Sequence[TicketDocumentSnapshot]:
"""Вернуть список документов Ticket."""
def can_advance_to_confirmation(self, task_id: int) -> bool:
"""Проверить готовность задачи к переходу в подтверждение."""
def can_advance_to_completed(self, task_id: int) -> bool:
"""Проверить готовность задачи к переходу в выполненные."""
def get_active_view(self) -> str:
"""Вернуть имя активного внутреннего представления Ticket."""
def get_gateway_status(self):
"""Вернуть последний известный статус hardware gateway."""