feat(bot): личный вопрос вошедшего отвечается по карточке, гостю — вход в кабинет

This commit is contained in:
Дмитрий
2026-07-13 11:48:39 +03:00
parent 8da2e8c219
commit d5ad30b3dc
5 changed files with 121 additions and 24 deletions
@@ -55,14 +55,16 @@ it('happy path: ответ пишется в журнал (in+out) с latency',
->and($out->matched_chunks)->not->toBeNull();
});
it('эскалация: просит телефон в чате, журнал escalated=true', function () {
// Правило владельца 12.07.2026: живого оператора в чате нет — бот собирает контакт
// сам и отдаёт его поддержке письмом (см. BotContactCaptureTest).
it('личный вопрос без карточки фактов: приглашение в кабинет в чате, журнал escalated=false', function () {
// Правило изменено 13.07.2026: ProcessChatMessageJob карточку фактов ClientFacts пока
// не передаёт (отдельная задача) — с точки зрения BotAnswerService это гость, и на
// личный вопрос он получает приглашение войти в кабинет, а не эскалацию к специалисту
// (см. BotContactCaptureTest, PersonalAnswersTest).
chatMessage('chat-2', 'какой у меня баланс?');
$out = BotDialog::where('direction', 'out')->firstOrFail();
expect($out->message)->toContain('номер телефона')
->and($out->escalated)->toBeTrue();
expect($out->message)->toContain('личном кабинете')
->and($out->escalated)->toBeFalse();
});
it('второе сообщение чата уходит в LLM вместе с историей первого', function () {