Add Dispatch_V0.1.1
This commit is contained in:
50
Dispatch_V0.1.1/application/report_signing_service.py
Normal file
50
Dispatch_V0.1.1/application/report_signing_service.py
Normal file
@@ -0,0 +1,50 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# hub/ticket/application/report_signing_service.py
|
||||
|
||||
"""Application-сервис подписания отчётов Ticket."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from domain.task import TicketTask
|
||||
from domain.ticket_constants import STATE_CONFIRMATION
|
||||
from state import TicketStateApi
|
||||
|
||||
|
||||
class ReportSigningService:
|
||||
"""Команды подписания отчётов поверх канонического state API."""
|
||||
|
||||
def __init__(self, state: TicketStateApi):
|
||||
self._state = state
|
||||
|
||||
def sign_report(self, task_id: int, report_type: str):
|
||||
"""Подписать диагностический или ремонтный отчёт."""
|
||||
snapshot = self._state.get_task(task_id)
|
||||
if snapshot is None:
|
||||
return None
|
||||
if report_type not in {"diagnostic", "repair"}:
|
||||
return None
|
||||
self._state.sign_report(task_id, report_type)
|
||||
return self._state.get_task(task_id)
|
||||
|
||||
def sign_acceptance_report(self, task_id: int):
|
||||
"""Подписать акт приёмки без смены доменного состояния."""
|
||||
snapshot = self._state.get_task(task_id)
|
||||
if snapshot is None:
|
||||
return None
|
||||
task_data = TicketTask.from_snapshot(snapshot).to_record()
|
||||
task_data["acceptance_report_signed"] = True
|
||||
return self._state.update_task(task_data)
|
||||
|
||||
def can_advance_to_confirmation(self, task_id: int) -> bool:
|
||||
"""Проверить готовность задачи к переходу в подтверждение."""
|
||||
return self._state.can_advance_to_confirmation(task_id)
|
||||
|
||||
def can_advance_to_completed(self, task_id: int) -> bool:
|
||||
"""Проверить готовность задачи к переходу в выполненные."""
|
||||
snapshot = self._state.get_task(task_id)
|
||||
if snapshot is None:
|
||||
return False
|
||||
return (
|
||||
snapshot.state_code == STATE_CONFIRMATION
|
||||
and snapshot.acceptance_report_signed
|
||||
)
|
||||
Reference in New Issue
Block a user