Контекст
Бизнесу нужна была реферальная программа с минимальным трением: амбассадоры регистрируются в Telegram, получают уникальный код и ссылку, а отдел продаж видит количество покупок по каждому коду в привычной Google-таблице.
Решение
/start создаёт амбассадора, генерирует уникальный промокод и реферальную ссылку, пишет запись в первый Google-Sheet (append-only). Ежедневный cron подтягивает количество продаж из второго листа (где менеджеры ведут учёт) и обновляет статистику амбассадоров в MongoDB. Бот отдаёт амбассадору его текущее количество продаж по запросу.
Стек и архитектура
- Runtime: Java 17, Spring Boot 3.4.2.
- Хранилище: MongoDB 7 (persistent state амбассадоров).
- Интеграции: Google Sheets API (один service account, два листа), pengrad Telegram Bot API 8.3.0.
- Деплой: Docker + docker-compose.
Роль и результат
Полностью самостоятельный backend-проект, который мы сделали под ключ: доменная модель, бот-логика, две независимые Google-Sheets интеграции и cron-импорт. Маркетинг получил программу под ключ без отдельного админ-UI — всё управляется через таблицы.