Клиентские дашборды и отчёты
Концепция
Клиенты Fotofactor получают не просто фотографии и видео, а полноценную аналитическую платформу для управления присутствием на маркетплейсах. Дашборды на основе данных SalesFinder показывают эффект от обновлённого контента и дают рекомендации по оптимизации.
"Мы не просто снимаем фотографии — мы оптимизируем ваше присутствие на маркетплейсах. Дашборд показывает, как наш контент увеличивает ваши продажи."
Архитектура системы отчётности
┌──────────────────────────────────────────────────────────────┐
│ ИСТОЧНИКИ ДАННЫХ │
│ │
│ ┌ ─────────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ SalesFinder │ │ Platrum │ │ Внутренняя │ │
│ │ API │ │ Spider DB │ │ аналитика │ │
│ │ │ │ │ │ │ │
│ │ • Позиции │ │ • Задачи │ │ • Сроки съёмки │ │
│ │ • Цены │ │ • Комменты │ │ • Стоимость работ │ │
│ │ • Продажи │ │ • Статусы │ │ • Метрики контента │ │
│ │ • Ключевики │ │ • Дедлайны │ │ • Before/After │ │
│ └──────┬──────┘ └──────┬───────┘ └──────────┬──────────┘ │
│ │ │ │ │
│ └────────────────┼──────────────────────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ SQLite │ │
│ │ Cache │ │
│ └──────┬──────┘ │
└──────────────────────────┼───────────────────────────────────┘
│
┌────────────┼────────────────┐
│ │ │
┌──────▼─────┐ ┌───▼────────┐ ┌────▼──────┐
│ Streamlit │ │ Отчёты │ │ Telegram │
│ Dashboard │ │ PDF/Email │ │ Bot │
│ (web UI) │ │ (weekly) │ │ (alerts) │
└─────────────┘ └────────────┘ └───────────┘
Компоненты дашборда
1. Трекинг позиций товаров
Ежедневный/еженедельный мониторинг позиций товаров клиента в поиске маркетплейсов.
Что видит клиент:
| Товар | Запрос | Позиция сегодня | Неделю назад | Изменение | Тренд |
|---|---|---|---|---|---|
| Makita DHP453 | "шуруповёрт makita" | #3 | #3 | 0 | Стабильно |
| Makita DHP453 | "шуруповёрт аккумуляторный" | #8 | #12 | +4 | Рост |
| Makita HR2470 | "перфоратор makita" | #2 | #1 | -1 | Внимание |
| Makita GA5030 | "болгарка 125 мм" | #15 | #9 | -6 | Падение |
Streamlit-компонент:
import streamlit as st
import pandas as pd
import plotly.express as px
def render_positions_chart(product_data: pd.DataFrame):
"""График динамики позиций товара по ключевым запросам."""
st.subheader("Динамика позиций в поиске")
# Выбор товара
product = st.selectbox(
"Товар",
options=product_data["product_name"].unique()
)
# Выбор периода
period = st.radio(
"Период",
["7 дней", "30 дней", "90 дней"],
horizontal=True
)
# Фильтрация данных
filtered = product_data[product_data["product_name"] == product]
# График позиций (инвертированная ось Y: 1 = лучшая позиция)
fig = px.line(
filtered,
x="date",
y="position",
color="keyword",
title=f"Позиции: {product}",
labels={"position": "Позиция в поиске", "date": "Дата"}
)
fig.update_yaxes(autorange="reversed") # Позиция 1 = вверху графика
st.plotly_chart(fig, use_container_width=True)
# Сводная таблица
summary = filtered.groupby("keyword").agg(
current=("position", "last"),
best=("position", "min"),
worst=("position", "max"),
avg=("position", "mean")
).round(1)
st.dataframe(summary, use_container_width=True)
2. Мониторинг цен конкурентов
Сравнение цен клиента с ценами конкурентов в режиме реального времени.
Что видит клиент:
Категория: Шуруповёрты аккумуляторные
Makita DHP453 Bosch GSR 18V DeWalt DCD791
───────────── ───────────── ─────────────
Цена: 12 900 руб 13 500 руб 14 200 руб
РРЦ: 12 900 руб 13 800 руб 14 500 руб
Откл: 0% -2.2% -2.1%
Рейтинг: 4.8 ★ 4.7 ★ 4.6 ★
Отзывы: 1,247 892 654
Когда цена любого товара падает ниже РРЦ более чем на 10%, клиент получает мгновенное уведомление в Telegram с информацией о продавце-нарушителе.
3. Оценка трендов продаж
Графики динамики продаж на основе оценочных дан ных SalesFinder.
Streamlit-компонент:
def render_sales_trends(sales_data: pd.DataFrame):
"""График оценки продаж по товарам клиента."""
st.subheader("Оценка продаж (SalesFinder)")
col1, col2, col3, col4 = st.columns(4)
# KPI-карточки
with col1:
st.metric(
"Продажи (оценка)",
f"{sales_data['sales_estimate'].sum():,.0f} шт",
delta=f"+{sales_data['sales_growth'].mean():.1f}%"
)
with col2:
st.metric(
"Выручка (оценка)",
f"{sales_data['revenue_estimate'].sum():,.0f} руб",
delta=f"+{sales_data['revenue_growth'].mean():.1f}%"
)
with col3:
st.metric(
"Средняя позиция",
f"#{sales_data['avg_position'].mean():.1f}",
delta=f"{sales_data['position_change'].mean():.1f}",
delta_color="inverse" # Падение позиции = красный
)
with col4:
st.metric(
"Content Score",
f"{sales_data['content_score'].mean():.0f}/100",
delta=f"+{sales_data['score_change'].mean():.0f}"
)
# Выбор метрики для графика
metric = st.selectbox(
"Метрика",
["Продажи", "Выручка", "Средняя позиция", "Content Score"]
)
# Линейный график тренда
fig = px.line(
sales_data,
x="date",
y=metric_mapping[metric],
color="product_name",
title=f"Динамика: {metric}"
)
st.plotly_chart(fig, use_container_width=True)
4. SEO-аналитика: рейтинг ключевых слов
Позиции товаров клиента по ключевым поисковым запросам.
Что видит клиент:
| Ключевой запрос | Частотность | Позиция | Изм. за нед. | Конкуренция |
|---|---|---|---|---|
| шуруповёрт makita | 45 000 | #3 | 0 | Высокая |
| шуруповёрт аккумуляторный | 120 000 | #8 | +4 | Высокая |
| makita 18v | 28 000 | #1 | 0 | Средняя |
| дрель шуруповёрт | 85 000 | #12 | -2 | Высокая |
| шуруповёрт для дома | 65 000 | #15 | +3 | Средняя |
5. Эффект от обновления контента (Before/After)
Ключевой раздел, который демонстрирует ценность услуг Fotofactor.
Что видит клиент:
Товар: Makita DHP453 (шуруповёрт)
Обновление контента: 15 января 2026
ДО обновления ПОСЛЕ (30 дней) Изменение
───────────── ─────────────── ─────────
Позиция (ср.): #12 #5 +7 позиций
Продажи (оценка): 2,100 шт/мес 3,150 шт/мес +50%
Конверсия карточки: 3.2% 4.8% +50%
Content Score: 45 82 +37 пунктов
Отзывы/мес: +85 +127 +49%
- 8 новых профессиональных фото (предметная + lifestyle)
- Видеообзор 60 сек (распаковка + функционал)
- 3 инфографики с ключевыми характеристиками
- Оптимизированный заголовок (по данным SF Keywords)
- Rich-контент (A+) для Ozon
Техническая реализация
Streamlit-дашборд
Дашборд реализуется на Streamlit, который уже используется в Platrum Spider.
Структура файлов:
src/web/pages/
├── client_dashboard.py # Главная страница дашборда
├── positions_tracker.py # Трекинг позиций
├── competitor_prices.py # Мониторинг цен конкурентов
├── sales_trends.py # Тренды продаж
├── seo_keywords.py # SEO-аналитика
├── content_impact.py # Эффект от контента (Before/After)
└── reports_archive.py # Архив отчётов
Запуск:
# Запуск дашборда для клиента
streamlit run src/web/pages/client_dashboard.py \
--server.port 8503 \
-- --client "MakitaRU"
Еженедельные PDF/Email отчёты
Автоматическая генерация и отправка отчётов клиентам:
# Генерация недельного отчёта
python spider.py salesfinder report \
--client "MakitaRU" \
--period weekly \
--format pdf \
-o reports/makita_week_07_2026.pdf
# Отправка по email (через интеграцию)
python spider.py salesfinder report \
--client "MakitaRU" \
--period weekly \
--send-email \
--to "manager@makita.ru"
Структура еженедельного отчёта:
╔══════════════════════════════════════════════════════════╗
║ ЕЖЕНЕДЕЛЬНЫЙ АНАЛИТИЧЕСКИЙ ОТЧЁТ ║
║ Клиент: Makita Russia ║
║ Период: 10-16 февраля 2026 ║
║ Подготовлено: Fotofactor Analytics ║
╚══════════════════════════════════════════════════════════╝
1. СВОДКА (Executive Summary)
• Средняя позиция: #7.3 (было #8.1, рост на 9.9%)
• Оценка продаж: 42,500 шт (+8.3% к прошлой неделе)
• Content Score (средний): 68/100 (+3 пункта)
• Нарушения РРЦ: 2 случая (Bosch: -12%, DeWalt: -8%)
2. ТОП-10 ТОВАРОВ ПО РОСТУ ПОЗИЦИЙ
[Таблица с товарами, показавшими лучшую динамику]
3. ТОВАРЫ, ТРЕБУЮЩИЕ ВНИМАНИЯ
[Таблица с товарами, потерявшими позиции]
4. КОНКУРЕНТНЫЙ ОБЗОР
[Сравнение с Bosch, DeWalt, Hitachi]
5. SEO-ИНСАЙТЫ
[Новые ключевые запросы с потенциалом]
6. РЕКОМЕНДАЦИИ
[Конкретные действия на следующую неделю]
7. ЭФФЕКТ ОТ ОБНОВЛЁННОГО КОНТЕНТА
[Before/After для обновлённых карточек]
Telegram-бот для уведомлений
Мгновенные алерты о критических событиях:
"""Telegram-бот для уведомлений клиентов."""
ALERT_TEMPLATES = {
"position_drop": (
"Падение позиции\n\n"
"Товар: {product_name}\n"
"Запрос: \"{keyword}\"\n"
"Было: #{old_position} -> Стало: #{new_position}\n"
"Изменение: {change} позиций\n\n"
"Рекомендация: {recommendation}"
),
"price_violation": (
"Нарушение РРЦ\n\n"
"Товар: {product_name}\n"
"РРЦ: {rrc_price} руб\n"
"Текущая цена: {current_price} руб ({deviation}%)\n"
"Продавец: {seller_name}\n"
"Площадка: {marketplace}"
),
"content_score_change": (
"Обновление Content Score\n\n"
"Товар: {product_name}\n"
"Было: {old_score}/100 -> Стало: {new_score}/100\n"
"Изменение: +{change} пунктов\n\n"
"Обновлённый контент начал работать!"
),
"weekly_summary": (
"Еженедельная сводка\n\n"
"Период: {period}\n"
"Средняя позиция: #{avg_position} ({position_change})\n"
"Продажи (оценка): {sales_estimate} шт ({sales_change})\n"
"Content Score: {content_score}/100\n\n"
"Полный отчёт: {report_link}"
)
}
Типы уведомлений и частота:
| Тип уведомления | Триггер | Приоритет | Время отправки |
|---|---|---|---|
| Падение позиции >10 | Ежедневная проверка | Высокий | Мгновенно |
| Нарушение РРЦ >10% | Ежедневная проверка | Критический | Мгновенно |
| Рост позиции >5 | Ежедневная проверка | Информационный | Утро (9:00) |
| Обновление Content Score | При изменении | Информационный | В течение часа |
| Еженедельная сводка | Пятница 17:00 | Стандартный | По расписанию |
| Ежемесячный отчёт | 1-е число месяца | Стандартный | По расписанию |
Ценовая модель для клиентов
Пакеты аналитических услуг
| Параметр | Basic | Standard | Premium |
|---|---|---|---|
| Мониторинг товаров | до 100 SKU | до 500 SKU | Без ограничений |
| Трекинг позиций | Еженедельно | Ежедневно | Real-time |
| Мониторинг цен | Топ-20 SKU | Все SKU | Все SKU + алерты |
| Конкурентный анализ | 1 конкурент | 3 конкурента | Без ограничений |
| SEO-аналитика | Базовая | Расширенная | Полная + рекомендации |
| Отчёты | Ежемесячный | Еженедельный | Ежедневный + еженедельный |
| Дашборд (Streamlit) | Нет | Доступ | Доступ + кастомизация |
| Telegram-бот | Нет | Еженедельная сводка | Все алерты + сводки |
| Before/After анализ | По запросу | Автоматический | Автоматический + рекомендации |
| Консультации | Нет | 1 час/мес | 4 часа/м ес |
| Цена | 15 000 руб/мес | 30 000 — 50 000 руб/мес | 80 000 — 120 000 руб/мес |
При подключении дополнительных брендов действует скидка 15-20% на каждый следующий бренд. Аналитическая инфраструктура масштабируется с минимальными дополнительными затратами.
Комбинированные пакеты (Аналитика + Контент)
Для максимально й ценности клиенту предлагается комбинация аналитики и контент-производства:
| Пакет | Аналитика | Контент | Цена |
|---|---|---|---|
| Старт | Basic мониторинг | 10 SKU фото/мес | 45 000 руб/мес |
| Рост | Standard мониторинг | 30 SKU фото + 5 видео/мес | 120 000 руб/мес |
| Масштаб | Premium мониторинг | 80 SKU фото + 20 видео + инфографика | 280 000 руб/мес |
| Enterprise | Полный Premium | Неограниченный контент + стратегия | По запросу |
Экономика масштабирования
СЕБЕСТОИМОСТЬ ОДНОГО КЛИЕНТА:
├── Подписка SalesFinder (амортизация): 3 000 руб/мес
├── Серверные ресурсы (Streamlit, DB): 1 000 руб/мес
├── Время аналитика (4 часа/мес): 8 000 руб/мес
├── Автоматические отчёты (CPU): 500 руб/мес
└── ИТОГО себестоимость: 12 500 руб/мес
ПАКЕТ BASIC (15 000 руб/мес):
├── Маржа: 2 500 руб/мес (17%)
└── Назначение: вход в воронку, upsell на Standard
ПАКЕТ STANDARD (40 000 руб/мес):
├── Себестоимость: 15 000 руб/мес (+ время аналитика)
├── Маржа: 25 000 руб/мес (62%)
└── Назначение: основной продукт
ПАКЕТ PREMIUM (100 000 руб/мес):
├── Себестоимость: 22 000 руб/мес
├── Маржа: 78 000 руб/мес (78%)
└── Назначение: максимальная маржинальность
МАСШТАБИРОВАНИЕ (10 клиентов Standard):
├── Выручка: 400 000 руб/мес
├── Себестоимость: 120 000 руб/мес (общие ресурсы)
├── Маржа: 280 000 руб/мес (70%)
└── Годовая выручка: 4 800 000 руб
Каждый новый клиент добавляет маргинальную себестоимость (в основном время аналитика), но выручка растёт линейно. При 10+ клиентах маржинальность аналитических услуг достигает 70-80%.
Воронка продаж через дашборды
Путь клиента
Этап 1: ПРИВЛЕЧЕНИЕ
│ Клиент видит статью в блоге с данными SF
│ или получает рекомендацию
│
├── Предложение: бесплатный аудит карточек (1 товар)
│
▼
Этап 2: ДЕМОНСТРАЦИЯ ЦЕННОСТИ
│ Бесплатный мини-отчёт по 1 товару клиента
│ - Текущие позиции
│ - Сравнение с конкурентами
│ - Рекомендации по оптимизации
│
├── Предложение: пакет "Старт" (45K руб/мес)
│
▼
Этап 3: ОСНОВНОЙ ПРОДУКТ
│ Клиент подключён к дашборду
│ Видит позитивную динамику после обновления контента
│
├── Предложение: upsell на "Рост" или "Масштаб"
│
▼
Этап 4: МАСШТАБИРОВАНИЕ
│ Полный пакет аналитики + контент
│ Ежемесячные стратегические встречи
│ Долгосрочный контракт (6-12 мес)
│
├── Расширение: дополнительные бренды
│
▼
Этап 5: RETENTION
Высокая стоимость переключения
(клиент привык к дашборду, данные накоплены)
LTV: 1 200 000 — 3 600 000 руб
Конверсия по этапам
| Этап | Конверсия | Кол-во (из 100 лидов) |
|---|---|---|
| Лид -> Бесплатный аудит | 30% | 30 |
| Аудит -> Пакет "Старт" | 20% | 6 |
| "Старт" -> "Рост"/"Масштаб" | 50% | 3 |
| Retention (12 мес) | 80% | 2.4 |
Примеры визуализаций
KPI-панель (верхняя часть дашборда)
┌──────────────────┬──────────────────┬──────────────────┬──────────────────┐
│ СРЕДНЯЯ │ ПРОДАЖИ │ CONTENT │ НАРУШЕНИЯ │
│ ПОЗИЦИЯ │ (оценка) │ SCORE │ РРЦ │
│ │ │ │ │
│ #7.3 │ 42,500 шт │ 68/100 │ 2 │
│ ▲ +9.9% │ ▲ +8.3% │ ▲ +3 пункта │ ▼ -1 │
│ │ │ │ │
│ за неделю │ за неделю │ за неделю │ за неделю │
└──────────────────┴──────────────────┴──────────────────┴──────────────────┘
Таблица "Before/After" (ключевой элемент для продаж)
┌─────────────────────────────────────────────────────────────────────────┐
│ ЭФФЕКТ ОТ ОБНОВЛЕНИЯ КОНТЕНТА │
│ │
│ Товар: Makita DHP453 (обновлено: 15.01.2026) │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ ДО ПОСЛЕ (30 дней) │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Content: 45 │ ────────> │ Content: 82 │ (+82%) │ │
│ │ │ Позиция: #12 │ │ Позиция: #5 │ (+58%) │ │
│ │ │ Продажи: │ │ Продажи: │ │ │
│ │ │ 2,100 шт │ │ 3,150 шт │ (+50%) │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ Обновлено: 8 фото, 1 видео, 3 инфографики, SEO-оптимизация │
│ Стоимость работ: 35,000 руб │
│ Дополнительная выручка: ~650,000 руб/мес │
│ ROI обновления: 18.5x │
└─────────────────────────────────────────────────────────────────────────┘
Интеграция с Platrum Spider
CLI-ко манды для управления отчётами
# Генерация клиентского отчёта
python spider.py salesfinder report --client "MakitaRU" --period weekly --json
# Запуск дашборда
python spider.py salesfinder dashboard --client "MakitaRU" --port 8503
# Настройка алертов в Telegram
python spider.py salesfinder alerts --client "MakitaRU" \
--telegram-chat-id 123456789 \
--position-drop 10 \
--price-violation 10
# Просмотр всех клиентских отчётов
python spider.py salesfinder reports-list --json
# Before/After анализ для конкретного товара
python spider.py salesfinder impact --product-id 12345 \
--update-date "2026-01-15" --period 30 --json
Расписание автоматических задач
# Добавление в SyncScheduler (src/scheduler/)
# Синхронизация данных SF — каждые 2 часа
scheduler.add_job(
salesfinder_syncer.sync,
IntervalTrigger(hours=2),
id="salesfinder_sync"
)
# Проверка алертов — каждые 30 минут
scheduler.add_job(
position_monitor.check,
IntervalTrigger(minutes=30),
id="sf_position_check"
)
# Еженедельный отчёт — пятница 16:00
scheduler.add_job(
generate_weekly_reports,
CronTrigger(day_of_week="fri", hour=16),
id="sf_weekly_report"
)
# Ежемесячный отчёт — 1-е число месяца 10:00
scheduler.add_job(
generate_monthly_reports,
CronTrigger(day=1, hour=10),
id="sf_monthly_report"
)
Безопасность и доступ
Разграничение доступа
| Роль | Доступ | Описание |
|---|---|---|
| Клиент | Только свои данные | Дашборд с фильтрацией по client_id |
| Менеджер Fotofactor | Все клиенты | Полный доступ к аналитике |
| Администратор | Управление | Настройка алертов, клиентов, пакетов |
Защита данных
- Каждый клиент видит только свои товары (фильтрация по
client_id) - Конкурентные данные агрегированы (клиент не видит точные цифры других клиентов)
- Доступ к дашборду по ссылке с токеном (не требует авторизации в Platrum)
- Отчёты хранятся 90 дней (настраиваемый retention)
Резюме
| Параметр | Значение |
|---|---|
| Продукт | Брендированные аналитические дашборды для клиентов |
| Технологии | Streamlit + SalesFinder API + Platrum Spider |
| Каналы доставки | Web-дашборд, PDF-отчёты, Telegram-бот |
| Ценовые пакеты | Basic (15K), Standard (30-50K), Premium (80-120K) руб/мес |
| Маржинальность | 17% (Basic) — 78% (Premium) |
| Ключевая метрика | Before/After анализ (ROI от обновления контента) |
| Масштабирование | Каждый новый клиент = маргинальная стоимость |
| Конкурентное преимущество | "Не просто фотографии, а оптимизация присутствия на маркетплейсах" |
| Целевой LTV | 1 200 000 — 3 600 000 руб/клиент |