Files
marketing-parser/kapital.md
T
2025-09-14 10:39:18 +05:00

4.6 KiB

Задача: Разработать парсер для RSS-ленты https://kapital.kz/rss/ на Spring Boot с сохранением результатов в MongoDB.

Контекст: Парсер является частью AI-платформы для маркетинговой аналитики. Его цель — собирать деловые новости из источника Kapital.kz, нормализовать их и сохранять в общую базу данных для дальнейшей аналитической обработки.


Основные требования

  1. Получение данных: Создать сервис, который выполняет HTTP GET-запрос к URL: https://kapital.kz/rss/.
  2. Парсинг RSS: Разобрать полученный XML-ответ. Для каждой записи (элемента <item>) в RSS-ленте необходимо извлечь следующие поля:
    • title (заголовок).
    • link (URL статьи).
    • pubDate (дата публикации).
    • description (текстовое содержимое).
  3. Нормализация данных:
    • Очистка текста: Текстовое содержимое из поля description должно быть полностью очищено от HTML-тегов.
    • Формат даты: Дата публикации должна быть приведена к формату ISODate.
  4. Создание хэша: Для каждой новости необходимо сгенерировать уникальный хэш для дедупликации по формуле sha256(url + "::" + title).
  5. Сохранение в MongoDB:
    • Подготовленные данные должны сохраняться в ту же коллекцию market_items.
    • Операция сохранения должна быть "upsert" (обновить, если существует, или вставить, если нет), используя поле hash в качестве уникального ключа.

Модель данных для коллекции market_items в MongoDB

Структура документа должна полностью соответствовать уже существующей модели.

{
  "source_name": "Kapital.kz (Бизнес)", // Статическое значение для этого парсера
  "url": "https://kapital.kz/...", // Из поля <link>
  "title": "Заголовок новости", // Из поля <title>
  "published_at": ISODate("2025-09-14T..."), // Из поля <pubDate>
  "added_at": ISODate("..."), // Текущее время при добавлении
  "raw_text": "Очищенный от HTML текст статьи...", // Из поля <description>
  "hash": "...", // Сгенерированный SHA-256 хэш
  "category": "Бизнес", // Можно задать по умолчанию

  // Блок для будущей аналитики
  "analytics": {
    "summary": null,
    "sentiment": null,
    "tags": [],
    "entities": {}
  }
}

Технологический стек и реализация

  • Фреймворк: Spring Boot
  • База данных: Spring Data MongoDB
  • Реализация: Рекомендуется создать новый класс-сервис (например, KapitalParserService) по аналогии с существующим KursivParserService.
  • Планирование: Новый сервис также должен запускаться по общему расписанию — каждые 30 минут. Это можно сделать, добавив аннотацию @Scheduled(cron = "0 0/30 * * * ?") на метод парсинга в новом сервисе.

Критерии выполнения

  • Создан новый Spring Boot сервис (KapitalParserService), который успешно парсит данные с https://kapital.kz/rss/.
  • Приложение автоматически запускает оба парсера (Kursiv и Kapital) каждые 30 минут.
  • Новости из Kapital.kz корректно сохраняются в общую коллекцию market_items без создания дубликатов.
  • Структура сохраненных документов в MongoDB полностью соответствует указанной модели данных.