feat(bot): ответственность за источник — новая статья + сторож
Правило владельца 13.07.2026. Лидерра отдаёт ВСЕ номера, прошедшие через выбранный клиентом источник (и входящие, и исходящие), и не сортирует людей по темам. Источник конкурента может быть шире ниши клиента (клиника с 30 врачами против одной стоматологии); конкурент может расширить профиль, ошибиться в рекламе или прозванивать купленную базу — это вне нашего контроля. Заявка не по теме = не брак, замены за неё нет; но тон мягкий — объяснить и развернуть клиента к работе с ИСТОЧНИКОМ (сузить, сменить, пауза). Статья kachestvo-istochnika.md + мягкие напоминания в трёх местах, где речь заходит об источниках. Сторож AnswerGuard::promisesNicheRelevance режет обещания «только целевые / отсеиваем нецелевых / гарантируем трафик». 50 статей, тесты 153/153. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -472,3 +472,38 @@ it('честное «круглосуточно» сторож не трогае
|
||||
expect($guard->clean('Поддержка отвечает круглосуточно, пишите в любое время.', $context))
|
||||
->toBe('Поддержка отвечает круглосуточно, пишите в любое время.');
|
||||
});
|
||||
|
||||
/**
|
||||
* Правило владельца 13.07.2026 (ответственность за источник). Лидерра отдаёт ВСЕ номера,
|
||||
* прошедшие через выбранный источник, — и входящие, и исходящие. Что за люди идут через
|
||||
* этот источник, решает не Лидерра: клиника конкурента может лечить 30 болезней, а наш
|
||||
* клиент — только зубы; конкурент может расширить профиль, ошибиться в настройках рекламы
|
||||
* или купить плохую базу для обзвона. Поэтому бот НЕ ИМЕЕТ ПРАВА обещать, что заявки будут
|
||||
* строго по нише клиента, что мы «отсеиваем нецелевых» или «гарантируем целевой трафик» —
|
||||
* этого мы обеспечить не можем, а за обещание придёт претензия.
|
||||
*/
|
||||
it('сторож режет обещание, что заявки будут строго по нише клиента', function () {
|
||||
$guard = app(AnswerGuard::class);
|
||||
$context = 'Мы передаём контакты людей, интересовавшихся темой по указанному вами источнику.';
|
||||
|
||||
$cases = [
|
||||
'Все заявки будут строго по вашей нише.',
|
||||
'Мы отсеиваем нецелевые заявки — придут только ваши клиенты.',
|
||||
'Мы гарантируем целевой трафик по вашей теме.',
|
||||
'Нерелевантные контакты к вам не попадут.',
|
||||
];
|
||||
|
||||
foreach ($cases as $sentence) {
|
||||
expect($guard->clean('Заявки приходят по указанному источнику. '.$sentence, $context))
|
||||
->toBe('Заявки приходят по указанному источнику.');
|
||||
}
|
||||
});
|
||||
|
||||
/** Честное объяснение про источник — НЕ обещание, резать его нельзя. */
|
||||
it('честное объяснение про широкий источник сторож не трогает', function () {
|
||||
$guard = app(AnswerGuard::class);
|
||||
$context = 'Заявки идут по выбранному источнику; если источник шире вашей ниши, придут и не ваши темы.';
|
||||
|
||||
$text = 'Если источник шире вашей темы, часть заявок будет не по вашей нише — источник выбираете вы.';
|
||||
expect($guard->clean($text, $context))->toBe($text);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user