diff --git a/mockup.html b/mockup.html
index 3840370..4e83b13 100644
--- a/mockup.html
+++ b/mockup.html
@@ -3798,36 +3798,92 @@ function heroChatReply(key) {
}, 400);
}
+/* ── КЛАССИФИКАТОР ВХОДЯЩИХ СООБЩЕНИЙ ── */
+var _offtopicCount = 0;
+
+function _classifyInput(text) {
+ var t = text.toLowerCase().trim();
+ // Приветствия (короткие фразы без юридического контекста)
+ if (/^(привет|здравствуй|добрый|здорово|хай|салют|доброе|доброй|хеллоу|hello|hi\b|ку\b|yo\b)/.test(t) && t.length < 50) return 'greeting';
+ // Юридические ключевые слова
+ if (/договор|контракт|доверенност|претензи|иск(овое|овое)?|арендн|расторжен|соглашени|штраф|неустойк|нотариус|нотариальн|судебн|судиться|в суд| суд |долг|взыскан|юридическ|юрист|правовой|документ|оформит|составит|проверит|подписат|условие|обязател|возврат|наследств|завещани|трудовой|увольнен|работодател|зарплат|кредит|страховк|ипотек|ДДУ|ТК РФ|ГК РФ|ЗоЗПП|земельн|имуществ|купл|продаж|займ|расписк|поручительств|залог|банкрот|ООО|ИП |\bИП\b|протокол|разногласи|риск|доверенность|пункт договора|расторг/.test(t)) return 'legal';
+ return 'offtopic';
+}
+
function heroChatSend() {
var inp = document.getElementById('hchat-inp');
if (!inp) return;
var txt = inp.value.trim();
if (!txt) return;
inp.value = '';
- // hide controls
- var replies = document.getElementById('hchat-replies');
+
+ var type = _classifyInput(txt);
+ var replies = document.getElementById('hchat-replies');
var inputRow = document.getElementById('hchat-input-row');
- if (replies) replies.style.display = 'none';
+ if (replies) replies.style.display = 'none';
if (inputRow) inputRow.style.display = 'none';
- // show user message
_hcAddBubble(txt, true);
- // detect intent
- var t = txt.toLowerCase();
- var intent = 'question';
- if (/доверенност/.test(t)) intent = 'power';
- else if (/протокол|разногласи|убрат|невыгод/.test(t)) intent = 'dispute';
- else if (/состав|написат|создат|подготов/.test(t) && !/проверит/.test(t)) intent = 'create';
- else if (/проверит|анализ|посмотр|риск|договор|контракт/.test(t)) intent = 'check';
- var reply = _HC_REPLIES[intent] || _HC_REPLIES.question;
- // Elena responds
- setTimeout(function(){
- _hcAddTyping();
+
+ // ── ПРИВЕТСТВИЕ ──
+ if (type === 'greeting') {
setTimeout(function(){
- _hcRemoveTyping();
- _hcAddBubble(reply.elena, false);
- setTimeout(function(){ _chatTransition(txt, intent); }, 1200);
- }, 900);
- }, 400);
+ _hcAddTyping();
+ setTimeout(function(){
+ _hcRemoveTyping();
+ _hcAddBubble('Привет! 👋 Я юридический ИИ-ассистент. Помогаю с договорами, доверенностями, претензиями и другими документами. Что нужно?', false);
+ if (replies) replies.style.display = '';
+ if (inputRow) inputRow.style.display = '';
+ }, 700);
+ }, 300);
+ return;
+ }
+
+ // ── ПО ТЕМЕ — нормальный флоу ──
+ if (type === 'legal') {
+ _offtopicCount = 0;
+ var t = txt.toLowerCase();
+ var intent = 'question';
+ if (/доверенност/.test(t)) intent = 'power';
+ else if (/протокол|разногласи|убрат|невыгод/.test(t)) intent = 'dispute';
+ else if (/состав|написат|создат|подготов/.test(t) && !/проверит/.test(t)) intent = 'create';
+ else if (/проверит|анализ|посмотр|риск|договор|контракт/.test(t)) intent = 'check';
+ var reply = _HC_REPLIES[intent] || _HC_REPLIES.question;
+ setTimeout(function(){
+ _hcAddTyping();
+ setTimeout(function(){
+ _hcRemoveTyping();
+ _hcAddBubble(reply.elena, false);
+ setTimeout(function(){ _chatTransition(txt, intent); }, 1200);
+ }, 900);
+ }, 400);
+ return;
+ }
+
+ // ── НЕ ПО ТЕМЕ ──
+ _offtopicCount++;
+ if (_offtopicCount === 1) {
+ // Мягкий редирект
+ setTimeout(function(){
+ _hcAddTyping();
+ setTimeout(function(){
+ _hcRemoveTyping();
+ _hcAddBubble('Я специализируюсь на юридических документах — договорах, доверенностях, претензиях 📋 Выберите с чего начнём:', false);
+ if (replies) replies.style.display = '';
+ if (inputRow) inputRow.style.display = '';
+ }, 700);
+ }, 300);
+ } else {
+ // Жёсткий: только кнопки, текст скрыт
+ setTimeout(function(){
+ _hcAddTyping();
+ setTimeout(function(){
+ _hcRemoveTyping();
+ _hcAddBubble('Работаю только с юридическими вопросами 🔒 Пожалуйста, выберите из предложенных вариантов:', false);
+ if (replies) replies.style.display = '';
+ // inputRow НЕ показываем — только кнопки
+ }, 700);
+ }, 300);
+ }
}
window.addEventListener('DOMContentLoaded', function(){