diff --git a/public/app.js b/public/app.js index fa8d52f..23befd2 100644 --- a/public/app.js +++ b/public/app.js @@ -1087,6 +1087,17 @@ const initApp = () => { fileInput.click(); }); + // Botão alternador de ferramentas (recursos) + const btnToggleTools = document.getElementById('btnToggleTools'); + const promptModesBar = document.querySelector('.prompt-modes-bar'); + + if (btnToggleTools && promptModesBar) { + btnToggleTools.addEventListener('click', () => { + promptModesBar.classList.toggle('show'); + btnToggleTools.classList.toggle('active'); + }); + } + // Quando arquivos são selecionados fileInput.addEventListener('change', () => { const files = Array.from(fileInput.files); @@ -1780,12 +1791,50 @@ const initApp = () => { if (lastUserMsg && lastUserMsg.role === 'user') { handleSendMessage(lastUserMsg.content, true); } - }; - const scrollToBottom = () => { messagesContainer.scrollTop = messagesContainer.scrollHeight; }; + const getProgressSteps = (promptText) => { + const promptLower = (promptText || '').toLowerCase(); + + if (promptLower.includes('historia') || promptLower.includes('conto') || promptLower.includes('história') || promptLower.includes('escrever')) { + return [ + { text: "Analisando a solicitação da professora...", progress: 15 }, + { text: "Esboçando o enredo e personagens infantis...", progress: 40 }, + { text: "Elaborando a história pedagógica...", progress: 70 }, + { text: "Fazendo sugestões para uso pedagógico...", progress: 90 } + ]; + } + + if (promptLower.includes('relatorio') || promptLower.includes('relatório') || promptLower.includes('observa') || promptLower.includes('htpc')) { + return [ + { text: "Analisando as observações pedagógicas...", progress: 15 }, + { text: "Sintetizando os avanços e interações...", progress: 40 }, + { text: "Estruturando os blocos do relatório individual...", progress: 65 }, + { text: "Refinando o texto e alinhando com a BNCC...", progress: 85 }, + { text: "Ajustando o tom formal-pedagógico...", progress: 95 } + ]; + } + + if (promptLower.includes('planejamento') || promptLower.includes('aula') || promptLower.includes('atividade') || promptLower.includes('projeto') || promptLower.includes('brincar')) { + return [ + { text: "Revisando os campos de experiência da BNCC...", progress: 20 }, + { text: "Estruturando os momentos da vivência lúdica...", progress: 45 }, + { text: "Definindo a intencionalidade educativa e mediação...", progress: 70 }, + { text: "Finalizando as comandas e recursos pedagógicos...", progress: 90 } + ]; + } + + // Caso geral + return [ + { text: "Analisando a solicitação...", progress: 20 }, + { text: "Processando as diretrizes pedagógicas...", progress: 45 }, + { text: "Elaborando a resposta...", progress: 75 }, + { text: "Refinando a formatação e estilo...", progress: 90 } + ]; + }; + // Função principal de envio de mensagens const handleSendMessage = async (text, skipUserAppend = false, files = null, forcedIntent = null) => { if (!text && (!files || files.length === 0)) return; @@ -1886,6 +1935,46 @@ const initApp = () => { const botContentDiv = botRow.querySelector('.message-content'); let assistantContent = ''; + // Obter etapas de progresso personalizadas + const progressSteps = getProgressSteps(fullText); + let currentStepIdx = 0; + + // Renderizar barra de progresso inicial + botContentDiv.innerHTML = ` +