Добавлен сбор телеметрии на ВМ2

This commit is contained in:
mi
2026-08-26 15:12:51 +03:00
parent 728b9826a3
commit f989097484
32 changed files with 2029 additions and 134 deletions
@@ -20,6 +20,13 @@ from app.domain import (
validate_phone,
)
from app.repository import LeasedTask, LeasedWebhook, Profile, Repository
from app.telemetry import (
record_business_alert,
record_dead_letter,
record_limiter,
record_retry,
record_transition,
)
INSERT_CRM_COMMAND = text(
"""
@@ -81,6 +88,7 @@ class WorkflowEngine:
await self._manual(workflow_id, exc.code, task.user_id)
await self.repository.complete_task(task, workflow_id)
except RetryableWorkflow as exc:
record_retry("task")
delay = exc.retry_after or full_jitter_delay(
task.attempt_count + 1,
self.settings.retry_base_seconds,
@@ -508,10 +516,12 @@ class WorkflowEngine:
)
if limiter_delay <= 0:
break
record_limiter(limiter_delay)
await asyncio.sleep(limiter_delay)
async with self._in_flight:
result = await self.crm.call(method, params, mutating=mutating)
status = result.outcome.value
record_transition("command", status)
async with self.repository.transaction() as connection:
await connection.execute(
UPDATE_CRM_COMMAND,
@@ -580,6 +590,7 @@ class WorkflowEngine:
*,
selected_external_id: str | None = None,
) -> None:
record_business_alert(alert_type)
fingerprint = safe_hash(f"{alert_type}:{user_id}")
assert fingerprint is not None
async with self.repository.transaction() as connection:
@@ -727,6 +738,7 @@ class WorkflowEngine:
)
async def _technical_failure(self, workflow_id: uuid.UUID, code: str) -> None:
record_dead_letter("crm_command")
async with self.repository.transaction() as connection:
await connection.execute(
text(