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