гзв
This commit is contained in:
@@ -33,19 +33,24 @@ public class DealService
|
||||
{
|
||||
var deals = await _pepperClient.GetLatestDealsAsync(cancellationToken);
|
||||
|
||||
_logger.LogInformation("Начата обработка полученных скидок: всего {DealCount}", deals.Count);
|
||||
|
||||
// Хелсчек: успешный запрос, вернувший более одной скидки (пусть и не новой)
|
||||
if (deals.Count > 1)
|
||||
{
|
||||
_healthMonitor.ReportSuccess(DateTimeOffset.UtcNow);
|
||||
_logger.LogDebug("HealthCheck: успешно получено более одной скидки ({DealCount})", deals.Count);
|
||||
}
|
||||
|
||||
// Загружаем активные подписки один раз на проход
|
||||
var subscriptions = await _subscriptionRepository.GetAllActiveAsync(cancellationToken);
|
||||
_logger.LogInformation("Загружено активных подписок: {SubscriptionCount}", subscriptions.Count);
|
||||
|
||||
foreach (var deal in deals)
|
||||
{
|
||||
if (await _repository.ExistsAsync(deal.Id, cancellationToken))
|
||||
{
|
||||
_logger.LogDebug("Скидка уже есть в репозитории и будет пропущена: {DealId}", deal.Id);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -58,6 +63,7 @@ public class DealService
|
||||
|
||||
if (subscriptions.Count == 0)
|
||||
{
|
||||
_logger.LogDebug("Активные подписки отсутствуют. Фильтрация по ключевым словам пропущена для скидки {DealId}", deal.Id);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -67,16 +73,29 @@ public class DealService
|
||||
{
|
||||
if (!subscription.IsActive)
|
||||
{
|
||||
_logger.LogDebug("Подписка {SubscriptionId} неактивна и будет пропущена", subscription.Id);
|
||||
continue;
|
||||
}
|
||||
|
||||
var keywords = ParseKeywords(subscription.Keywords);
|
||||
if (keywords.Count == 0)
|
||||
{
|
||||
_logger.LogDebug("У подписки {SubscriptionId} не удалось извлечь ключевые слова из строки: \"{RawKeywords}\"",
|
||||
subscription.Id,
|
||||
subscription.Keywords);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (IsMatch(searchableText, keywords))
|
||||
var isMatch = IsMatch(searchableText, keywords);
|
||||
_logger.LogDebug(
|
||||
"Результат фильтрации скидки {DealId} по подписке {SubscriptionId}: {IsMatch}. Текст: \"{Text}\"; ключевые слова: {Keywords}",
|
||||
deal.Id,
|
||||
subscription.Id,
|
||||
isMatch,
|
||||
searchableText,
|
||||
string.Join(", ", keywords));
|
||||
|
||||
if (isMatch)
|
||||
{
|
||||
await _notifier.NotifyDealToChatAsync(deal, subscription.ChatId, cancellationToken);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user