Техническое задание: Сервис двухфакторной аутентификации (2FA)

Цель проекта

Разработка минимально жизнеспособного продукта (MVP) для надежной доставки одноразовых паролей (OTP) клиентам через несколько коммуникационных каналов с системой автоматического резервирования.

Основные функциональные требования

  • Прием и обработка запросов на отправку кода от внешней CRM-системы.
  • Преобразование входящих запросов во внутренний формат системы.
  • Последовательная отправка OTP по каналам связи согласно приоритету: WhatsApp → Telegram → SMS.
  • Автоматическое переключение на следующий канал (fallback) при неудачной попытке отправки.
  • Немедленное прекращение цепочки отправки при получении статуса 'sent' (успешно доставлено).
  • Фиксация в базе данных каждой попытки отправки с детализацией (канал, статус, временная метка).
  • Формирование и сохранение графа (цепочки) всех попыток для одного запроса.
  • Хранение всех данных в СУБД PostgreSQL.

Архитектура системы

Модули

  1. Входной API-шлюз: Принимает вебхуки от внешней системы.
  2. Модуль управления доставкой: Оркестрирует процесс отправки, управляет логикой fallback.
  3. Уровень взаимодействия с каналами: Отвечает за интеграцию и отправку через провайдеров WhatsApp, Telegram и SMS.
  4. Модуль формирования цепочки попыток: Строит и сохраняет последовательность событий.
  5. Модуль хранения данных: Обеспечивает запись и чтение из PostgreSQL.

Последовательность работы

Вебхук → API-шлюз → Управление доставкой → (Попытка WhatsApp → Попытка Telegram → Попытка SMS) → Запись результатов → Завершение обработки запроса.