PostgreSQL 17 RPC Architecture1 из 11
Строгая изоляция READ COMMITTED, блокировки FOR UPDATE, интеграция с PGMQ и Twenty CRM
POST/rest/v1/rpc/ingest_leadingestion
ingest_lead
Unified Lead Ingestion Gateway
Universal entry point for all incoming leads across channels (Tilda, Telegram bots, VK bots, Web forms). Resolves or provisions client identity, generates sequential lead code (hh_..., cd_..., fp_...), writes lead record with status "new", stores raw form JSONB and vector embeddings into lead_forms, records audit history, and initiates vector-based psychologist matching.
Транзакционные Гарантии и Консистентность (PostgreSQL 17)
- Изоляция транзакций: READ COMMITTED с защитой от race conditions
- Пессимистическая блокировка строк:
FOR UPDATE NOWAIT - Аудит и Outbox: Асинхронные события публикуются в
pgmq
Входные аргументы процедуры (4)
JSON-RPC / REST| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| p_source_type | string | Да | Funnel source identifier: help_hand, card, first_paid, diagnostic, research Пример: "help_hand" |
| p_form_data | object | Да | Questionnaire responses including client name, topic, format, price, and analytics tags Пример: {"name":"Анна Смирнова","topic":"Тревожность, поиск баланса","format":"онлайн","price_session":1500,"contact":"@anna_smirnova","utm_source":"vk_ads","utm_campaign":"spring_2026"} |
| p_identity | object | Нет | External identity tokens for automatic user linking (telegram_id, vk_id, user_id, full_name) Пример: {"telegram_id":"876543210","full_name":"Анна Смирнова"} |
| p_lead_code | string | Нет | Custom lead code override. If omitted, generated from sequence with funnel prefix (e.g. hh_1042) Пример: "hh_1042" |
HTTP Статусы и Ответы
200 OK
Успешное выполнение процедуры
400 Bad Request
Нарушение бизнес-правил, исчерпание квоты, невалидный UUID
404 Not Found
Заявка или специалист не найдены в базе данных
409 Conflict
Конфликт блокировки слота (FOR UPDATE / EXCLUDE USING gist)
Параметры вызова RPC