d6787f00e9
Phase 1 v2 фичи Webhooks: HTTP callback delivery параллельно с Kafka publishing для consumer'ов которые не могут Kafka subscribe (геопортал PHP, legacy admin-ui'и, BI-системы). Migrations: - 0013-webhook-subscriptions: таблица + check constraints (URL scheme, scope enum) + partial index по active=true для hot poller path - 0014-webhook-deliveries: tracking каждой попытки доставки (один subscription × event = uniq), partial index due (status IN pending, retrying), DLQ index, FK на outbox_events с CASCADE delete JPA entities: - WebhookSubscription: TEXT[] filters (scope, dictionary, event_type), HMAC-SHA256 hex secret, active flag, audit fields - WebhookDelivery: lifecycle pending → retrying → delivered/dlq, exponential backoff schedule (1m → 5m → 15m → 1h → 6h → 24h capped), MAX_ATTEMPTS=1000 (consistent с outbox), markDelivered/markFailed/ resetDlq business methods Repositories: - WebhookSubscriptionRepository: findActive() через partial index - WebhookDeliveryRepository: findDue() для poller, INSERT ON CONFLICT DO NOTHING для idempotency, DLQ counts для метрик Ещё впереди: WebhookDispatcher service (HTTP POST + HMAC + SSRF guard), REST API CRUD (admin-only RBAC), admin-ui /webhooks page, тесты.