Техническое задание: Скрипт для обогащения геоданными IP-адресов

Цель проекта

Разработать автоматизированное решение для получения и записи географической информации (страна, регион, город) для IP-адресов, хранящихся в базе данных. Скрипт должен работать в фоновом режиме (cron) и поддерживать два сценария использования: первоначальное заполнение и периодическое обновление.

Исходные данные и окружение

  • Основное хранилище: База данных MySQL.
  • Источник геоданных: Внешний API сервиса ipwhois.io.
  • Язык разработки: На выбор исполнителя (PHP или Python).
  • Среда выполнения: Планировщик задач cron.

Основные функции скрипта

1. Обработка данных из API

  • Для каждого IP-адреса из основной таблицы выполнять запрос к API ipwhois.io.
  • Из ответа API извлекать данные о стране, регионе и городе на русском языке.
  • Записывать полученные данные на русском в соответствующие поля основной таблицы.
  • Автоматически преобразовывать русские названия в транслит и сохранять их в отдельные, предназначенные для этого поля.
  • Фиксировать время обработки записи в специальном поле.

2. Механизм отслеживания изменений

  • В основную таблицу добавить служебное поле для хранения последнего обработанного IP-адреса.
  • При каждом запуске скрипт должен сравнивать текущий IP в строке с сохраненным значением.
  • Если IP-адрес не изменился с момента последней обработки - пропускать строку для оптимизации работы.

3. Два режима работы

  • Режим первичного заполнения: Последовательная обработка всех записей в таблице для первоначального наполнения полей геоданными.
  • Режим постоянного обновления: Обработка только тех записей, с момента последнего обновления которых прошло более 24 часов.

4. Ведение журнала (логирования)

  • Создать отдельную таблицу в базе данных для детального журналирования.
  • При обработке каждого IP-адреса записывать в журнальную таблицу:
    • Сам IP-адрес.
    • Все геоданные, полученные от API.
    • Полный ответ от API ipwhois.io для возможной дальнейшей аналитики.
  • Запись в журнал должна производиться только если данный IP-адрес отсутствует в журнальной таблице, чтобы избежать дублирования.

Требования к реализации

  • Код должен быть хорошо структурирован, с комментариями.
  • Обязательна обработка ошибок (проблемы с сетью, недоступность API, ошибки базы данных).
  • Скрипт должен быть оптимизирован для работы с большими объемами данных.
  • Необходимо предусмотреть возможность настройки интервала cron и параметров подключения к БД.
  • Транслитерация должна быть реализована по четким и consistent правилам.

Результат работы

  • Рабочий скрипт на выбранном языке программирования.
  • SQL-скрипты для создания необходимых дополнительных полей в существующей таблице и для создания новой журнальной таблицы.
  • Инструкция по настройке и запуску (включая настройку cron).

Разработка Telegram-бота для кофейни

Требуется создать чат-бота для автоматизации заказов в кофейне. Бот должен быть написан на чистом Python и включать функциональную админ-панель для управления. Все детали будут обсуждены с исполнителем.