65 lines
3.3 KiB
Markdown
65 lines
3.3 KiB
Markdown
### Дополнение к заданию для AI-агента
|
||
|
||
**Задача:** Добавить автоматический запуск парсера каждые 30 минут.
|
||
|
||
[cite\_start]**Контекст:** Согласно техническому заданию, сбор данных должен происходить автоматически и регулярно, чтобы обеспечивать актуальность информации в системе[cite: 47, 93].
|
||
|
||
---
|
||
|
||
### Реализация в Spring Boot
|
||
|
||
Для реализации этой задачи необходимо использовать встроенный в Spring механизм планировщика задач (Task Scheduler).
|
||
|
||
1. **Включить планировщик:** В главном классе приложения (с аннотацией `@SpringBootApplication`) необходимо добавить аннотацию `@EnableScheduling`.
|
||
|
||
2. **Запланировать выполнение метода:** В сервисе `KursivParserService`, над методом, который запускает процесс парсинга, нужно добавить аннотацию `@Scheduled`. Для запуска каждые 30 минут можно использовать `cron` выражение.
|
||
|
||
---
|
||
|
||
### Пример кода:
|
||
|
||
**1. Главный класс приложения:**
|
||
|
||
```java
|
||
import org.springframework.boot.SpringApplication;
|
||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||
|
||
@SpringBootApplication
|
||
@EnableScheduling // <-- ДОБАВИТЬ ЭТУ АННОТАЦИЮ
|
||
public class MarketingAnalyticsApplication {
|
||
|
||
public static void main(String[] args) {
|
||
SpringApplication.run(MarketingAnalyticsApplication.class, args);
|
||
}
|
||
}
|
||
```
|
||
|
||
**2. Сервис-парсер:**
|
||
|
||
```java
|
||
import org.springframework.scheduling.annotation.Scheduled;
|
||
import org.springframework.stereotype.Service;
|
||
|
||
@Service
|
||
public class KursivParserService {
|
||
|
||
// ... здесь существующий код и зависимости (MongoTemplate и т.д.)
|
||
|
||
@Scheduled(cron = "0 0/30 * * * ?") // <-- ДОБАВИТЬ ЭТУ АННОТАЦИЮ
|
||
public void parseAndStoreNews() {
|
||
System.out.println("Запуск планового парсинга новостей с Kursiv.media...");
|
||
// ... здесь вся логика парсинга, которая уже написана
|
||
}
|
||
}
|
||
```
|
||
|
||
**Объяснение `cron = "0 0/30 * * * ?"`:** Эта настройка означает, что метод `parseAndStoreNews()` будет запускаться **в 0 и 30 минут каждого часа, каждый день**. Это в точности соответствует требованию ТЗ.
|
||
|
||
---
|
||
|
||
### Критерии выполнения:
|
||
|
||
- После запуска приложения, парсер автоматически начинает свою работу в ближайшие 0 или 30 минут часа.
|
||
- В логах приложения видно, что метод парсинга вызывается каждые полчаса без какого-либо ручного вмешательства.
|