Ruby Rails PostgreSQL Sidekiq Docker Panel
Профессиональный аналитический сервис на Ruby/Rails для экосистемы more-stars.
Отдельный runtime-контур, который:
- не вмешивается в core checkout/payments логику;
- считает предагрегированные витрины метрик;
- отдает быстрый API и защищенную back-office панель.
more-stars-analytics — это выделенный back-office слой, который:
- читает продуктовые и платежные данные из PostgreSQL,
- пересчитывает готовые агрегаты в собственные
analytics_*таблицы, - отдает быстрый read-only API,
- предоставляет защищенную web-панель аналитики.
Ключевой принцип:
FastAPI backend остается source of truth, а analytics сервис отвечает за отчетность, метрики и диагностику.
- Четкое разделение ответственности между боевым контуром и аналитикой.
- Предрасчет агрегатов вместо тяжелых raw-join запросов на каждый API вызов.
- Идемпотентные backfill-процессы (upsert по уникальным ключам).
- Закрытый доступ: пароль + TOTP 2FA + сессионная авторизация.
- Production-ready запуск через Docker Compose + Nginx + HTTPS.
- Базовый CI/CD через GitHub Actions и remote deploy по SSH.
- дневные показатели заказов и оплат;
- выручка, себестоимость, прибыль;
- средний чек и конверсия оплаты;
- повторные покупки и уникальные покупатели.
- по платежным провайдерам;
- по типам продукта;
- по реферальным метрикам;
- по промокодам;
- по когортам (retention/repeat dynamics).
- история запусков аналитических джобов;
- проверки качества данных;
- ручной запуск backfill и проверок.
- отдельные страницы: Overview / Revenue / Users / Payments / Ops;
- drilldown по дням и пользователям;
- графики, таблицы, сравнение периодов;
- объяснение ключевых метрик в интерфейсе.
- вход по паролю (
DASHBOARD_PASSWORD); - 2FA через Google Authenticator (
DASHBOARD_2FA_SECRET); - session auth для dashboard и API;
- опциональный
INTERNAL_API_TOKENдля machine-to-machine вызовов.
Сервис пишет агрегаты в:
analytics_daily_metricsanalytics_provider_daily_metricsanalytics_product_daily_metricsanalytics_referral_daily_metricsanalytics_promo_daily_metricsanalytics_cohort_weekly_metricsanalytics_data_quality_issuesanalytics_job_runs
- Статусы заказов маппятся через конфигурацию статусов.
- Late updates учитываются за счет повторных rolling пересчетов.
- Для
giftподдержан fallback себестоимости (GIFT_DEFAULT_COST_RUB, по умолчанию60), чтобы не искажать прибыль.
GET /healthGET /metrics/dailyGET /metrics/daily/detailsGET /metrics/summaryGET /metrics/providersGET /metrics/productsGET /metrics/referralsGET /metrics/promosGET /metrics/cohortsGET /metrics/funnelGET /metrics/paymentsGET /metrics/insightsGET /metrics/usersGET /metrics/users/detailsGET /ops/jobsGET /ops/data-qualityPOST /ops/backfillPOST /ops/data-quality/runGET /exports/metrics
cp .env.example .env docker compose up -d --build docker compose run --rm app bundle exec rails db:migrate docker compose run --rm app bundle exec rake auth:generate_2fa_secret docker compose up -d --build
После этого:
http://localhost:3001/loginhttp://localhost:3001/dashboard
Если есть dump core базы:
docker cp ./dumps/more_stars_core.dump more-stars-analytics-db-1:/tmp/more_stars_core.dump
docker exec -i more-stars-analytics-db-1 pg_restore \
-U analytics \
-d more_stars \
--clean \
--if-exists \
--no-owner \
--no-privileges \
/tmp/more_stars_core.dumpПолный пересчет:
docker compose run --rm app bundle exec rake analytics:backfill_full FROM=2026年01月01日 TO=2026年03月31日Используется docker-compose.server.yml.
Типовой production flow:
docker compose -f docker-compose.server.yml up -d --build docker compose -f docker-compose.server.yml run --rm app bundle exec rails db:migrate docker compose -f docker-compose.server.yml run --rm app bundle exec rake analytics:backfill_full FROM=2026年01月01日 TO=2026年03月31日
Рекомендуемый фронт-доступ: Nginx reverse proxy + TLS (Let's Encrypt).
.github/workflows/ci.yml
- поднимает PostgreSQL и Redis service-контейнеры;
- выполняет миграции;
- запускает RSpec.
.github/workflows/deploy.yml
- ручной запуск (
workflow_dispatch); - проверка deploy secrets;
- SSH deploy на сервер;
- обновление контейнеров + миграции.
Ключевые переменные:
DATABASE_URLREDIS_URLSECRET_KEY_BASEDASHBOARD_PASSWORDDASHBOARD_2FA_SECRETTOTP_ISSUERSESSION_TTL_HOURSSESSION_COOKIE_SECUREGIFT_DEFAULT_COST_RUBINTERNAL_API_TOKEN(опционально)
Полный список: .env.example.
app/
controllers/
jobs/
models/
services/
config/
db/migrate/
public/panel/
public/auth/
lib/tasks/
spec/
.github/workflows/
- расширенные алерты (Telegram/email);
- RBAC и audit trail действий в панели;
- планировщик регулярных отчетов;
- углубленная event/funnel аналитика;
- расширенный anomaly detection.
MIT.