**Задача:** Разработать парсер для 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

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

```json
{
  "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 полностью соответствует указанной модели данных.
