Мониторинг flash-скидок для ВКР: от парсинга Amazon до алертов в реальном времени
Поддомен: Data Engineering | Роль эксперта: Data/ML-инженер
25 марта 2026 года ZDNet сообщил: Apple Watch Series 9 на Amazon Spring Sale упал до $349 — это больше 50% от прайса, но акция заканчивается вечером того же дня. Flash-скидки живут часы. Ни один аналитик вручную не уследит за десятками маркетплейсов, категорий и региональных цен. Значит, нужна автоматизированная система: сбор, нормализация, хранение временных рядов и оповещение. Это ровно тот класс задач, который сегодня защищают на ВКР по Data Engineering и который позволяет показать реальные метрики, а не «теоретическую актуальность». Ниже — как разложить такой кейс на три главы, какие диаграммы построить по C4 и UML, что писать в ТЗ по ГОСТ 34 и как считать эффективность пайплайна.
Частые вопросы студентов до старта
Мне разрешат писать ВКР «про парсинг маркетплейсов» — это не выглядит мелко?
Уровень определяет не объект, а глубина. Примитивный скрапер — да, слабо. Пайплайн с очередью, идемпотентной загрузкой, дедупликацией, детектором аномалий и SLO по задержке алерта — это полноценная инженерная работа. Защищайте не «бота для Amazon», а систему обработки потоковых данных о ценах.
Где брать данные, если парсинг Amazon — серая зона?
Три легальных пути: 1) публичные API маркетплейсов и партнёрские фиды; 2) открытые датасеты цен (Kaggle, Zenodo) для отладки логики; 3) синтетический генератор, который эмулирует поведение flash-акции вроде той, что описана в статье. В тексте ВКР честно укажите: «данные получены из открытых источников, сбор соответствует ToS и robots.txt».
Какую метрику защиты выбрать, чтобы комиссия поняла эффект?
Задержку от изменения цены до отправки алерта (end-to-end latency), F1 детектора скидок, стоимость обработки 1 млн событий и объём пропущенных акций (false negative rate). Комиссия любит числа с методологией измерения — привяжите их к ISO/IEC 25010 (производительность, надёжность, функциональная пригодность).
Что делать, если преподаватель требует «классическую» архитектуру, а не микросервисы?
Покажите обе. В главе 2 — монолитный прототип, в главе 3 — масштабирование до сервисной схемы с обоснованием через нагрузочный тест. Так вы закрываете требования кафедры и демонстрируете архитектурное мышление.
Три темы ВКР, которые вырастают из этого кейса
-
Тема 1. «Система потокового мониторинга цен маркетплейсов с детекцией аномальных скидок».
Актуальность. Flash-акции Amazon Spring Sale (пример — падение Series 9 на 50%+ за один день) создают окно длиной несколько часов. Пользователь, узнавший о скидке с задержкой, теряет деньги.
Цель. Сократить время от публикации цены до уведомления подписчика до < 60 секунд при потоке ≥ 100 тыс. событий/час.
Задачи. 1) Обзор источников и правовых ограничений. 2) Проектирование ETL-пайплайна. 3) Реализация детектора скидок. 4) Нагрузочное тестирование и расчёт SLO.
Структура. Гл.1 — анализ рынка и источников, ГОСТ 34 на ТЗ. Гл.2 — C4-диаграммы, схема БД, реализация на Python + Kafka. Гл.3 — тесты, метрики OpenTelemetry, оценка по ISO/IEC 25010. -
Тема 2. «Хранилище временных рядов цен: оптимизация хранения и запросов».
Актуальность. Один товар × 20 маркетплейсов × 1440 замеров в сутки = миллионы точек. Нужна модель данных, которая не разорит по диску.
Цель. Снизить объём хранения на 40% при сохранении точности аналитики по историческим скидкам.
Задачи. 1) Сравнить TimescaleDB, ClickHouse, InfluxDB. 2) Спроектировать схему с партиционированием. 3) Реализовать сжатие и retention-политики. 4) Бенчмарк запросов «средняя скидка по категории за квартал».
Структура. Гл.1 — теория TSDB, UML-диаграмма классов сущностей. Гл.2 — физическая схема, BPMN загрузки. Гл.3 — сравнительные графики и вывод по критериям. -
Тема 3. «Сервис персональных алертов о скидках с ранжированием релевантности».
Актуальность. Пользователю не нужны все скидки — ему нужны те, что попадают в егоwatchlist и бюджет.
Цель. Построить рекомендательный слой, повышающий CTR уведомлений не менее чем на 25% относительно «сырых» алертов.
Задачи. 1) Формализовать профиль пользователя. 2) Обучить baseline-модель. 3) Реализовать A/B-тест. 4) Оценить метрики precision@k, CTR.
Структура. Гл.1 — обзор подходов. Гл.2 — архитектура сервиса, REST API, OWASP-требования к авторизации. Гл.3 — офлайн/онлайн-эксперименты.
Как встроить статью про Apple Watch в главы работы
Глава 1: кейс как обоснование предметной области
Не пересказывайте новость — извлеките из неё параметры задачи. Из материала ZDNet видны три характеристики flash-акции: короткое окно (до конца дня), глубокий дисконт (>50%), привязка к событию (Amazon Spring Sale). Превратите это в требования: временное окно мониторинга ≤ 5 минут, порог алерта — отклонение от медианы за 30 дней более чем на 30%. Добавьте таблицу-сравнение источников (RSS-фиды, партнёрские API, HTML-страницы) с оценкой по ISO/IEC 25010.
Глава 2: проектирование — что рисовать
Минимум три диаграммы: C4-контекст (пользователь, сервис, внешние маркетплейсы, мессенджер), C4-контейнеры (сборщик, очередь, БД, детектор, нотификатор), UML-sequence для сценария «цена изменилась → отправлен алерт». Если кафедра требует BPMN — нарисуйте процесс обработки события с шлюзами по типу источника. В ТЗ по ГОСТ 34 зафиксируйте требования к задержке и объёму данных.
Глава 3: реализация и метрики
Пример минимального ядра детектора скидок на Python: скользящая медиана, порог, публикация события в Kafka. Такой фрагмент уместен в приложении к ВКР и в листинге главы 3.
import statistics
from datetime import datetime, timedelta
WINDOW_DAYS = 30
DROP_THRESHOLD = 0.30
def detect_flash_drop(price_history: list[tuple[datetime, float]],
current_price: float) -> dict | None:
"""price_history отсортирован по убыванию времени."""
cutoff = datetime.utcnow() - timedelta(days=WINDOW_DAYS)
window = [p for ts, p in price_history if ts >= cutoff]
if len(window) < 20:
return None # недостаточно данных для достоверной медианы
median = statistics.median(window)
drop_ratio = (median - current_price) / median
if drop_ratio >= DROP_THRESHOLD:
return {
"detected_at": datetime.utcnow().isoformat(),
"median_30d": round(median, 2),
"current": current_price,
"drop_pct": round(drop_ratio * 100, 1),
}
return None
Метрики, которые нужно снять и занести в таблицу:
| Метрика | Инструмент | Целевое значение | Как измеряли |
|---|---|---|---|
| End-to-end latency | OpenTelemetry + Grafana | < 60 c (p95) | Span от «цена изменилась» до «алерт отправлен» |
| Пропускная способность | Kafka + Prometheus | ≥ 100 тыс. событий/ч | Счётчик продюсера за окно 1 ч |
| F1 детектора | Размеченный тест-сет (500 акций) | ≥ 0.92 | Ручная разметка + расчёт precision/recall |
| Стоимость 1 млн событий | Биллинг облака + расчёт CPU/ч | снижение на 30% от baseline | Замер на трёх конфигурациях кластера |
Чему вы научитесь на такой теме
- Проектировать потоковые пайплайны с гарантией «at-least-once» и идемпотентной записью.
- Строить C4- и UML-диаграммы, читаемые комиссией за 30 секунд.
- Инструментировать сервис через OpenTelemetry и превращать спаны в защищаемые числа.
- Формализовать ТЗ по ГОСТ 34 с измеримыми требованиями, а не «система должна работать быстро».
- Оценивать качество ПО по критериям ISO/IEC 25010 и защищать выбор архитектуры.
- Каждый вывод в заключении ссылается на конкретную задачу из введения — ничего «висящего».
- Диаграммы пронумерованы, подписи по ГОСТ, ссылки в тексте есть на каждую.
- Метрики измерены, а не заявлены: указан инструмент, окно, число повторов.
- Листинги кода вынесены в приложения, в тексте — только значимые фрагменты.
- Ссылки на источники оформлены единообразно, дата обращения указана.
- ТЗ и схема БД согласованы между главами 2 и 3.
- Проверена уникальность и корректность заимствований из открытых репозиториев.
- «Парсинг ради парсинга». Работа сводится к селекторам CSS и паре графиков. Лечится постановкой SLO: без численного требования нет инженерной задачи. Возьмите окно из статьи — «акция заканчивается вечером» — и сформулируйте задержку обнаружения.
- Отсутствие обработки отказов источников. Маркетплейс вернул 429 или изменил вёрстку — пайплайн молча встал. В главе 3 обязателен подраздел про retry, backoff, dead-letter queue и мониторинг лага очереди.
- Игнорирование правовых рисков. Комиссия почти всегда спрашивает про ToS и персональные данные. Добавьте подраздел про ограничения сбора и альтернативные легальные источники данных.
Источник: The Apple Watch Series 9 is over 50% off during the Amazon Spring Sale for a limited time (опубликовано 2026-03-25)