diff --git a/mockup.html b/mockup.html index bc9849a..aa8dd67 100644 --- a/mockup.html +++ b/mockup.html @@ -5045,6 +5045,29 @@ function _chatTransition(userText, intent) { /* ── HERO CHAT ── */ +// Приглашение в кабинет после первого ответа Елены +function _inviteToCabinet(userText) { + var msgs = document.getElementById('hchat-msgs'); + if (!msgs) return; + var div = document.createElement('div'); + div.className = 'hc-msg hc-elena'; + div.innerHTML = + '' + + '
' + + '
Давайте зафиксирую Ваш вопрос — так удобнее работать с документами и отслеживать статус.
' + + '' + + '
'; + msgs.appendChild(div); + msgs.scrollTop = msgs.scrollHeight; +} + +function _goToCabinetWithContext() { + go('start'); // переходим на главный экран + go('cabinet'); // затем в кабинет + setTimeout(function(){ initReturnChat(); }, 100); +} + var _hchatDone =false; var _HC_MESSAGES = [ @@ -5484,7 +5507,10 @@ function heroChatSend() { _hcRemoveTyping(); var elenaText = apiReply || fallbackText; _hcAddBubble(elenaText, false); - setTimeout(function(){ _chatTransition(txt, intent); }, 1400); + // Сохраняем ситуацию для кабинета + try { sessionStorage.setItem('zashita_pending_intake', JSON.stringify({text: txt, intent: intent, ts: Date.now()})); } catch(e){} + // Приглашение в кабинет вместо автоперехода + setTimeout(function(){ _inviteToCabinet(txt); }, 900); }); }, 400); return; @@ -5768,7 +5794,36 @@ function initReturnChat() { _renderRchatButtons({ urgentDL: urgentDL, hasContracts: _getContracts().length > 0, hasHistory: _chatHistory.length > 0, credits: credits, subPlan: subPlan }); - // ── Последовательность сообщений ── + // ── Проверяем незавершённый intake с главного экрана ── + var pendingIntake = null; + try { pendingIntake = JSON.parse(sessionStorage.getItem('zashita_pending_intake') || 'null'); } catch(e){} + if (pendingIntake && pendingIntake.text && (Date.now() - pendingIntake.ts < 600000)) { + // Клиент пришёл из главного чата — показываем подтверждение + sessionStorage.removeItem('zashita_pending_intake'); + var intake = pendingIntake; + setTimeout(function(){ + _rcAddTyping(); + setTimeout(function(){ + _rcRemoveTyping(); + var quote = intake.text.length > 80 ? intake.text.slice(0, 80) + '...' : intake.text; + var confirmHtml = + 'Я правильно Вас поняла:
' + + '
' + + '«' + quote.replace(/' + + '
' + + '' + + '' + + '
'; + _rcAddBubble(confirmHtml, false, true); + }, 800); + }, 300); + return; // не показываем стандартное приветствие + } + + // ── Стандартная последовательность сообщений ── var delay = 0; // msg 1: greeting @@ -6506,6 +6561,58 @@ function _getElenaCtxReply(intent, dl) { return 'Продолжаем по сроку «' + name + '». Что именно хотите уточнить?'; } +function _confirmIntake(intent, quote) { + // Клиент подтвердил ситуацию → фиксируем и начинаем работу + var msgs = document.getElementById('rchat-msgs'); + if (!msgs) return; + + // Пузырь клиента + var uDiv = document.createElement('div'); + uDiv.className = 'hc-msg hc-user'; + uDiv.innerHTML = '
Да, всё верно
'; + msgs.appendChild(uDiv); + + // Сохраняем в историю + _chatHistory.push({role: 'user', content: quote}); + _saveHistory(); + + // Елена: фиксирует дело и спрашивает про договор + setTimeout(function(){ + _rcAddTyping(); + var ctx = quote; + _elenaApi('Клиент подтвердил ситуацию: ' + ctx + '. Зафикисруй дело и спроси что нужно для помощи.', + intent, + function(apiReply, apiActions) { + _rcRemoveTyping(); + var reply = apiReply || 'Хорошо, зафиксировала. Есть ли у Вас договор на руках? Если загрузите — смогу сразу оценить риски и предложить конкретные действия.'; + _chatHistory.push({role: 'assistant', content: reply}); + _saveHistory(); + _rcAddBubble(reply, false); + if (apiActions && apiActions.length) { + var m = document.getElementById('rchat-msgs'); + if (m) _renderElenaActions(apiActions, m); + } + _rcShowControls(); + + // Обновляем досье + _updateDossier({ facts: ['Зафиксировано дело: ' + ctx] }); + }); + }, 400); +} + +function _clarifyIntake() { + // Клиент хочет уточнить + var msgs = document.getElementById('rchat-msgs'); + if (!msgs) return; + var div = document.createElement('div'); + div.className = 'hc-msg hc-elena'; + div.innerHTML = '' + + '
Уточните, пожалуйста — опишите ситуацию своими словами.
'; + msgs.appendChild(div); + msgs.scrollTop = msgs.scrollHeight; + _rcShowControls(); +} + function retChatSend() { var inp = document.getElementById('rchat-inp'); if (!inp) return;