diff --git a/mockup.html b/mockup.html index 889069d..35a091f 100644 --- a/mockup.html +++ b/mockup.html @@ -4897,12 +4897,27 @@ function _buildDlAnswer(ctx) { ? '
' + actions.warn + '
' : ''; + // Кнопки действий — всегда есть "Продолжить с Еленой" + var primaryBtn = ''; + if (actionType === 'notification' || actionType === 'termination') { + primaryBtn = ''; + } else if (actionType === 'payment') { + primaryBtn = ''; + } else if (actionType === 'renewal') { + primaryBtn = ''; + } else { + primaryBtn = ''; + } + var ctaHtml = - '
' + - (actionType === 'notification' || actionType === 'termination' - ? '' - : '') + - '' + + '
' + + primaryBtn + + '' + '
'; return '
Елена
' + @@ -4912,6 +4927,80 @@ function _buildDlAnswer(ctx) { warnHtml + ctaHtml; } +function _rcTransferToElena(intent) { + // Переносим контекст дедлайна в полный экран Елены + if (_rcLastContext && _rcLastContext.type === 'deadline') { + var dl = _rcLastContext.dl; + var contextMsg = 'У меня срок: ' + dl.title; + if (dl.caseName) contextMsg += ' по договору «' + dl.caseName + '»'; + if (dl.diff !== undefined) { + contextMsg += dl.diff < 0 + ? ' (просрочен на ' + Math.abs(dl.diff) + ' дн.)' + : dl.diff === 0 ? ' (сегодня)' : ' (через ' + dl.diff + ' дн.)'; + } + // Кладём в историю чата — Елена будет знать контекст + _chatHistory.push({ role: 'user', content: contextMsg }); + + // Переходим на экран Елены + go('elena'); + + setTimeout(function(){ + // Скрываем el-step1, показываем чат + var step1 = document.getElementById('el-step1'); + if (step1) step1.style.display = 'none'; + + // Добавляем контекстное сообщение в chatwrap + var wrap = document.querySelector('.chatwrap'); + if (!wrap) return; + + // Пузырь пользователя + var uDiv = document.createElement('div'); + uDiv.className = 'msg msg-user'; + uDiv.innerHTML = '
' + _rcEscape(contextMsg) + '
'; + wrap.appendChild(uDiv); + + // Елена отвечает с контекстом + var typingDiv = document.createElement('div'); + typingDiv.className = 'msg'; typingDiv.id = 'elena-ctx-typing'; + typingDiv.innerHTML = '
' + + '
Елена
' + + '
'; + wrap.appendChild(typingDiv); + wrap.scrollTop = wrap.scrollHeight; + + // Реальный ответ через API или шаблон + var fallbackReply = _getElenaCtxReply(intent, dl); + _elenaApi(contextMsg, intent, function(apiReply){ + var t = document.getElementById('elena-ctx-typing'); + if (t) t.remove(); + var reply = apiReply || fallbackReply; + _chatHistory.push({ role: 'assistant', content: reply }); + var eDiv = document.createElement('div'); + eDiv.className = 'msg'; + eDiv.innerHTML = '
' + + '
Елена
' + _rcEscape(reply) + '
'; + wrap.appendChild(eDiv); + wrap.scrollTop = wrap.scrollHeight; + + // Показываем поле ввода Елены + setTimeout(function(){ + elenaIntent(intent); + }, 600); + }); + }, 120); + } else { + go('elena'); + setTimeout(function(){ elenaIntent(intent); }, 120); + } +} + +function _getElenaCtxReply(intent, dl) { + var name = dl.title || 'срок'; + if (intent === 'create') return 'Понял — нужно составить документ по сроку «' + name + '». Уточните детали — подготовлю.'; + if (intent === 'dispute') return 'Разберёмся со сроком «' + name + '». Расскажите что именно произошло — дам конкретный план.'; + return 'Продолжаем по сроку «' + name + '». Что именно хотите уточнить?'; +} + function retChatSend() { var inp = document.getElementById('rchat-inp'); if (!inp) return;