Мониторинг акций маркетплейсов в дипломе: архитектура сервиса и метрики эффективности

Поддомен: Data Engineering / Backend. Роль эксперта: Data/ML-инженер (с элементами системного аналитика).

Введение

Amazon раздаёт подарочную карту на $100 при покупке Nothing Phone 4a Pro в рамках весенней распродажи — на первый взгляд это новость для потребителя, а не для инженера. Но посмотрите на неё иначе: перед нами типовой offer event — событие с ценой, сроком, условиями и бонусом, которое нужно вовремя заметить, корректно распарсить, нормализовать и донести до пользователя. Именно из таких потоков рождаются сильные темы ВКР: сервисы мониторинга цен, агрегаторы акций, рекомендательные системы подбора гаджетов по бюджету. Выпускник ИТ-направления получает здесь редкое сочетание: понятная бизнес-ценность, измеримые метрики и полноценный инженерный стек — от парсера до хранилища временных рядов.

Быстрые вопросы перед выбором темы

1. Законно ли строить ВКР на парсинге маркетплейсов?

Собирать открытые данные можно, но в работе обязательно описываете ограничения: соблюдение robots.txt, лимиты запросов, отсутствие персональных данных, использование официальных API там, где они есть. В Главе 1 это оформляется как подраздел «Правовые и этические ограничения сбора данных».

2. Где брать данные, если Amazon недоступен?

Три легальных пути: официальные фиды и партнёрские API, синтетический генератор офферов по реальной схеме (цена, скидка, бонус, срок), публичные датасеты e-commerce. Для защиты важнее воспроизводимый пайплайн, чем «настоящий» Amazon.

3. Какой стек не вызовет вопросов у комиссии?

PostgreSQL + ClickHouse/TimescaleDB для хранения, Airflow или Dagster для оркестрации, Kafka или RabbitMQ для очереди событий, FastAPI для выдачи, Grafana + Prometheus для наблюдаемости. Всё это — узнаваемые и защищаемые технологии.

4. Как посчитать эффективность такого сервиса?

Через метрики свежести данных, покрытия каталога, задержки доставки уведомления и совокупной стоимости владения (TCO) в сравнении с ручным мониторингом. Об этом — ниже, в разделе про метрики.

Темы ВКР, которые вырастают из этого кейса

Как встроить кейс Amazon в главы работы

Глава 1: предметная область и контекст

Опишите жизненный цикл промо-предложения: публикация → обнаружение → нормализация → доставка пользователю → архивация. Кейс с подарочной картой удобен тем, что содержит нетипичный атрибут — бонус вместо прямой скидки. Постройте контекстную диаграмму C4 (уровень 1): система, внешние источники (маркетплейсы), потребители (мобильное приложение, Telegram-бот, веб-кабинет). Добавьте BPMN-схему процесса обработки оффера — комиссия любит видеть, что вы умеете описывать бизнес-процесс, а не только код.

Глава 2: проектирование и реализация

Ключевая развилка — пакетная или потоковая обработка. Для распродаж корректнее поток: цена меняется быстро, пакетный запуск раз в сутки гарантированно пропустит короткие акции. Минимальный контур: сборщик → брокер → нормализатор → хранилище → сервис выдачи.

Фрагмент сборщика с ограничением частоты и метрикой наблюдаемости:

import httpx, asyncio
from tenacity import retry, wait_exponential, stop_after_attempt
from prometheus_client import Counter, Histogram

FETCH_ERRORS = Counter("offer_fetch_errors_total", "Ошибки загрузки офферов")
FETCH_LATENCY = Histogram("offer_fetch_seconds", "Задержка загрузки")
SEM = asyncio.Semaphore(5)  # не более 5 одновременных запросов к площадке

@retry(wait=wait_exponential(multiplier=1, max=30), stop=stop_after_attempt(4))
async def fetch_offer(client, url: str) -> dict:
    async with SEM:
        with FETCH_LATENCY.time():
            try:
                r = await client.get(url, timeout=10.0,
                                     headers={"User-Agent": "diploma-research-bot"})
                r.raise_for_status()
                return r.json()
            except Exception:
                FETCH_ERRORS.inc()
                raise

async def main(urls):
    async with httpx.AsyncClient(http2=True) as client:
        return await asyncio.gather(*(fetch_offer(client, u) for u in urls))

Хранение: горячие события — в Kafka, история цен — в TimescaleDB или ClickHouse. Схема «оффер» должна иметь версионность: цена и бонус меняются, и вам понадобится восстановить состояние на любую дату. Это отдельный пункт защиты — умение обосновать выбор модели данных.

Глава 3: метрики и доказательство эффективности

Эффективность сервиса доказывается не словами «стало удобнее», а числами. Соберите их в таблицу и обязательно приложите скриншоты дашборда Grafana.

МетрикаЧто показываетЦелевое значениеИнструмент
Freshness (свежесть)Разрыв между публикацией акции и её обнаружением< 15 минOpenTelemetry, Prometheus
Coverage (покрытие)Доля отслеживаемых карточек категории≥ 90%SQL-отчёт, Airflow
p95 задержки APIСкорость выдачи подборки пользователю< 300 мсGrafana, k6
Data quality rateДоля записей, прошедших валидацию≥ 98%Great Expectations
TCOСтоимость владения против ручного трудаСнижение на 30%+Расчётная модель

Для оценки качества ПО опирайтесь на ISO/IEC 25010 — это даёт готовую рубрику: функциональная полнота, производительность, надёжность, удобство использования. Не выдумывайте свои характеристики, берите стандартные и адаптируйте формулировки.

Чему вы научитесь на такой теме

Чек-лист «Что проверить перед сдачей»
  1. Ссылки на источники оформлены единообразно, дата публикации новости указана корректно.
  2. Каждая задача из введения отражена в выводах соответствующей главы.
  3. Схемы (C4, UML, BPMN) пронумерованы и упомянуты в тексте до их появления.
  4. Метрики эффективности сведены в таблицу с целевыми и фактическими значениями.
  5. Оформление соответствует ГОСТ 34 (проектная документация) и ГОСТ 19 (программные документы) — там, где это применимо.
  6. Листинги кода вынесены в приложения, в тексте — только ключевые фрагменты.
  7. Проверена уникальность текста и отсутствие «воды» в теоретической главе.
Типичные ошибки студентов
  • Парсинг без ограничений. Студент пишет цикл, который бьёт по площадке сотнями запросов, получает блокировку и «доказывает» неработоспособность темы. Решение: семафоры, экспоненциальные повторы, уважение к robots.txt — и всё это описать в Главе 1 как осознанное проектное решение.
  • Отсутствие нормализации. Оффер с подарочной картой вроде того, что даёт Amazon за Nothing Phone 4a Pro, хранится как «жирная строка», а не как набор полей «цена / бонус / срок». В результате аналитика невозможна. Решение: каноническая схема и слой трансформации.
  • Метрика ради метрики. В работе приводят accuracy, хотя задача — не классификация, а своевременность обнаружения. Решение: выбрать метрики, связанные с бизнес-целью (freshness, coverage, TCO).

Если тема только формируется, а времени осталось около 120 часов, стоит начать с бесплатной консультации: мы поможем уточнить постановку задачи, подобрать стек и выстроить структуру работы. Помощь с дипломом возможна по любой из описанных тем — от проектирования архитектуры до оформления приложений.

Материал подготовлен экспертами компании [Название сайта]. Мы помогаем студентам с 2010 года: сопровождаем разработку тем, консультируем по нормоконтролю и готовим работы к защите. Если нужен ВКР на заказ — наши специалисты готовы подсказать и разобрать сложные места вместе с вами.

Последнее обновление: 2026-09-17

Источник: Amazon will give you a $100 gift card when you buy the Nothing Phone 4a Pro (опубликовано 2026-03-24)