Контекст
Стандартная аналитика amoCRM показывает «как сейчас», но не «как было неделю назад». Требовалось видеть, как меняется состояние воронок и эффективность источников трафика во времени.
Решение
Раз в час фоновый сервис тянет лиды через amoCRM API v4, сохраняет снепшоты в amo_lead_snapshots и поддерживает реестр воронок в amo_pipelines. Дешборд агрегирует данные по периоду, воронке, этапу, тегам и UTM-полям. Видны не только текущие значения, но и история — изменения по дням и неделям.
Стек и архитектура
- Backend: Spring Boot 3.4.2, Spring Security OAuth2 (Google, Yandex, VK, Telegram, Steam), Spring Session на MongoDB.
- Frontend: Next.js (App Router), Recharts для графиков, session-cookie auth.
- Слой данных:
amo_lead_snapshots(история) ·amo_pipelines(реестр) ·amo_sync_log(лог синхронизаций). - Синхронизация: ежечасный scheduler, обработка ошибок и ретраи.
Роль и результат
Мы спроектировали слои хранения, scheduler-синхронизацию, страницы фильтров и графиков. Заказчик получил историческую картину воронок и источников без сторонних BI-инструментов.