bot_warnings — Telegram-уведомления о предупреждениях Wildberries

Пара Telegram-ботов на Python на общем движке: они следят за предупреждениями Wildberries в PostgreSQL и автоматически рассылают подписчикам новые — один по предупреждениям FBO|FBS, второй по штрафам и замерам.

bot_warnings — Telegram-уведомления о предупреждениях Wildberries — фото 1
нажмите для просмотра в полном размере

Слайд 1 из 3

ОПИСАНИЕ

Система уведомлений о предупреждениях маркетплейса, реализованная как один движок в двух экземплярах с разными фильтрами: bot_warnings отбирает записи с признаком «FBO | FBS» (исключая штрафы и замеры), а bot_warnings_dimensions — записи, начинающиеся со «Штраф» или «Замер». Каждый экземпляр работает поверх своей служебной таблицы (bots.bot_warnings и bots.bot_warnings_dimensions). Боты построены на чистом requests с собственным циклом long polling getUpdates; доступ к PostgreSQL — psycopg2 c DictCursor и настроенным TCP keepalive. Архитектура двухпоточная: фоновый daemon-поток опрашивает БД, основной поток обрабатывает команды (/start, /stop, /warnings). Подписчики хранятся в памяти в set под threading.Lock. Источник данных — таблица parser.warnings; выборка за текущий день учитывает часовой пояс (фильтр по дате с приведением created_at к Europe/Moscow) и дедуплицируется по составному ключу (артикул WB, артикул продавца, текст предупреждения, баркод). Защита от повторной отправки реализована через собственную таблицу: новые записи сравниваются с уже разосланными, сохраняются пакетно (execute_values с ON CONFLICT DO NOTHING) и сбрасываются в полночь по Москве (pytz) с защитой от повторной очистки в одну и ту же минуту. При старте бот сам приводит схему в актуальное состояние: идемпотентная миграция через анонимные блоки DO $$ добавляет недостающие колонки, снимает устаревшие UNIQUE-ограничения и создаёт актуальное, проверяя метаданные в information_schema и pg_constraint.

ИСПОЛЬЗУЕМЫЕ ИНСТРУМЕНТЫ

  • Python
  • Telegram Bot API
  • requests
  • PostgreSQL
  • psycopg2
  • SQL (DO-блоки
  • information_schema/pg_constraint)
  • pytz
  • threading
  • Git

РЕЗУЛЬТАТ

  • Построен единый движок уведомлений о предупреждениях WB, развёрнутый в двух экземплярах с разными фильтрами (FBO|FBS и штрафы/замеры).
  • Реализована выборка предупреждений за текущий день с учётом часового пояса и дедупликацией по составному ключу.
  • Построена двухпоточная схема: фоновый поток опрашивает БД, основной обрабатывает команды; подписчики хранятся потокобезопасно.
  • Реализован журнал отправленного в БД с пакетной вставкой (ON CONFLICT DO NOTHING) и автоочисткой в полночь по московскому времени.
  • Реализована идемпотентная самомиграция схемы через DO-блоки и анализ information_schema/pg_constraint.

AI АССИСТЕНТ

Задать вопрос по этой работе