Refactor: Renomeacao e modernizacao completa para Pedagog / PedagogIA
This commit is contained in:
+56
-56
@@ -216,16 +216,16 @@ const initApp = () => {
|
||||
const searchClearAll = document.getElementById('searchClearAll');
|
||||
const sidebarTags = document.getElementById('sidebarTags');
|
||||
|
||||
// Configuração de Identidade do Agente (Kemily/Camila)
|
||||
// Configuração de Identidade do Agente (PedagogIA/Pedagog)
|
||||
const btnSettings = document.getElementById('btnSettings');
|
||||
const settingsModal = document.getElementById('settingsModal');
|
||||
const closeSettingsModal = document.getElementById('closeSettingsModal');
|
||||
const btnSaveSettings = document.getElementById('btnSaveSettings');
|
||||
const settingAgentName = document.getElementById('settingAgentName');
|
||||
const previewKemilyAvatar = document.getElementById('previewKemilyAvatar');
|
||||
const uploadKemilyAvatar = document.getElementById('uploadKemilyAvatar');
|
||||
const previewCamilaAvatar = document.getElementById('previewCamilaAvatar');
|
||||
const uploadCamilaAvatar = document.getElementById('uploadCamilaAvatar');
|
||||
const previewIaAvatar = document.getElementById('previewIaAvatar');
|
||||
const uploadIaAvatar = document.getElementById('uploadIaAvatar');
|
||||
const previewUserAvatar = document.getElementById('previewUserAvatar');
|
||||
const uploadUserAvatar = document.getElementById('uploadUserAvatar');
|
||||
const welcomeTitle = document.getElementById('welcomeTitle');
|
||||
const welcomeAvatarImg = document.getElementById('welcomeAvatarImg');
|
||||
const sidebarAvatarImg = document.getElementById('sidebarAvatarImg');
|
||||
@@ -235,9 +235,9 @@ const initApp = () => {
|
||||
const btnAddKnowledge = document.getElementById('btnAddKnowledge');
|
||||
|
||||
window.agentConfig = {
|
||||
agentName: "Kemily",
|
||||
kemilyAvatarUrl: "assets/kemily.png",
|
||||
camilaAvatarUrl: "assets/camila_prof.png",
|
||||
agentName: "PedagogIA",
|
||||
iaAvatarUrl: "assets/pedagog_ia.png",
|
||||
userAvatarUrl: "assets/pedagog_user.png",
|
||||
temperaturePreset: 'equilibrado'
|
||||
};
|
||||
|
||||
@@ -264,22 +264,22 @@ const initApp = () => {
|
||||
|
||||
const updateAgentIdentityUI = () => {
|
||||
if (welcomeTitle) {
|
||||
welcomeTitle.innerText = `Olá! Sou sua assistente virtual e me chamo ${window.agentConfig.agentName}. Como posso ajudar?`;
|
||||
welcomeTitle.innerText = `Olá! Sou sua assistente virtual e me chamo ${window.agentConfig.agentName || 'PedagogIA'}. Como posso ajudar?`;
|
||||
}
|
||||
if (welcomeAvatarImg) {
|
||||
welcomeAvatarImg.src = window.agentConfig.kemilyAvatarUrl;
|
||||
welcomeAvatarImg.src = window.agentConfig.iaAvatarUrl || window.agentConfig.kemilyAvatarUrl || 'assets/pedagog_ia.png';
|
||||
}
|
||||
if (sidebarAvatarImg) {
|
||||
sidebarAvatarImg.src = window.agentConfig.camilaAvatarUrl;
|
||||
sidebarAvatarImg.src = window.agentConfig.userAvatarUrl || window.agentConfig.camilaAvatarUrl || 'assets/pedagog_user.png';
|
||||
}
|
||||
if (settingAgentName) {
|
||||
settingAgentName.value = window.agentConfig.agentName;
|
||||
settingAgentName.value = window.agentConfig.agentName || 'PedagogIA';
|
||||
}
|
||||
if (previewKemilyAvatar) {
|
||||
previewKemilyAvatar.src = window.agentConfig.kemilyAvatarUrl;
|
||||
if (previewIaAvatar) {
|
||||
previewIaAvatar.src = window.agentConfig.iaAvatarUrl || window.agentConfig.kemilyAvatarUrl || 'assets/pedagog_ia.png';
|
||||
}
|
||||
if (previewCamilaAvatar) {
|
||||
previewCamilaAvatar.src = window.agentConfig.camilaAvatarUrl;
|
||||
if (previewUserAvatar) {
|
||||
previewUserAvatar.src = window.agentConfig.userAvatarUrl || window.agentConfig.camilaAvatarUrl || 'assets/pedagog_user.png';
|
||||
}
|
||||
// Atualiza seleção de temperatura
|
||||
renderTemperatureOptions();
|
||||
@@ -472,17 +472,17 @@ const initApp = () => {
|
||||
};
|
||||
|
||||
// Variáveis temporárias para avatares (em base64 ou URLs novas)
|
||||
let newKemilyAvatarData = null;
|
||||
let newCamilaAvatarData = null;
|
||||
let newIaAvatarData = null;
|
||||
let newUserAvatarData = null;
|
||||
|
||||
// Eventos do Modal
|
||||
if (btnSettings) {
|
||||
btnSettings.addEventListener('click', () => {
|
||||
newKemilyAvatarData = null;
|
||||
newCamilaAvatarData = null;
|
||||
if (settingAgentName) settingAgentName.value = window.agentConfig.agentName;
|
||||
if (previewKemilyAvatar) previewKemilyAvatar.src = window.agentConfig.kemilyAvatarUrl;
|
||||
if (previewCamilaAvatar) previewCamilaAvatar.src = window.agentConfig.camilaAvatarUrl;
|
||||
newIaAvatarData = null;
|
||||
newUserAvatarData = null;
|
||||
if (settingAgentName) settingAgentName.value = window.agentConfig.agentName || 'PedagogIA';
|
||||
if (previewIaAvatar) previewIaAvatar.src = window.agentConfig.iaAvatarUrl || window.agentConfig.kemilyAvatarUrl || 'assets/pedagog_ia.png';
|
||||
if (previewUserAvatar) previewUserAvatar.src = window.agentConfig.userAvatarUrl || window.agentConfig.camilaAvatarUrl || 'assets/pedagog_user.png';
|
||||
renderTemperatureOptions();
|
||||
loadConhecimento();
|
||||
settingsModal.style.display = 'flex';
|
||||
@@ -529,18 +529,18 @@ const initApp = () => {
|
||||
}
|
||||
};
|
||||
|
||||
if (uploadKemilyAvatar) {
|
||||
uploadKemilyAvatar.addEventListener('change', () => {
|
||||
handleAvatarFileSelect(uploadKemilyAvatar, previewKemilyAvatar, (base64) => {
|
||||
newKemilyAvatarData = base64;
|
||||
if (uploadIaAvatar) {
|
||||
uploadIaAvatar.addEventListener('change', () => {
|
||||
handleAvatarFileSelect(uploadIaAvatar, previewIaAvatar, (base64) => {
|
||||
newIaAvatarData = base64;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (uploadCamilaAvatar) {
|
||||
uploadCamilaAvatar.addEventListener('change', () => {
|
||||
handleAvatarFileSelect(uploadCamilaAvatar, previewCamilaAvatar, (base64) => {
|
||||
newCamilaAvatarData = base64;
|
||||
if (uploadUserAvatar) {
|
||||
uploadUserAvatar.addEventListener('change', () => {
|
||||
handleAvatarFileSelect(uploadUserAvatar, previewUserAvatar, (base64) => {
|
||||
newUserAvatarData = base64;
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -552,31 +552,31 @@ const initApp = () => {
|
||||
btnSaveSettings.innerText = 'Salvando...';
|
||||
|
||||
try {
|
||||
let kemilyUrl = window.agentConfig.kemilyAvatarUrl;
|
||||
let camilaUrl = window.agentConfig.camilaAvatarUrl;
|
||||
let iaUrl = window.agentConfig.iaAvatarUrl || window.agentConfig.kemilyAvatarUrl || 'assets/pedagog_ia.png';
|
||||
let userUrl = window.agentConfig.userAvatarUrl || window.agentConfig.camilaAvatarUrl || 'assets/pedagog_user.png';
|
||||
|
||||
// Se houver novas imagens, faz upload
|
||||
if (newKemilyAvatarData) {
|
||||
if (newIaAvatarData) {
|
||||
const res = await fetch('/api/upload-avatar', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ avatarType: 'kemily', base64Data: newKemilyAvatarData })
|
||||
body: JSON.stringify({ avatarType: 'ia', base64Data: newIaAvatarData })
|
||||
});
|
||||
if (res.ok) {
|
||||
const data = await res.json();
|
||||
kemilyUrl = data.url;
|
||||
iaUrl = data.url;
|
||||
}
|
||||
}
|
||||
|
||||
if (newCamilaAvatarData) {
|
||||
if (newUserAvatarData) {
|
||||
const res = await fetch('/api/upload-avatar', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ avatarType: 'camila', base64Data: newCamilaAvatarData })
|
||||
body: JSON.stringify({ avatarType: 'user', base64Data: newUserAvatarData })
|
||||
});
|
||||
if (res.ok) {
|
||||
const data = await res.json();
|
||||
camilaUrl = data.url;
|
||||
userUrl = data.url;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -587,8 +587,8 @@ const initApp = () => {
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
agentName: settingAgentName.value,
|
||||
kemilyAvatarUrl: kemilyUrl,
|
||||
camilaAvatarUrl: camilaUrl,
|
||||
iaAvatarUrl: iaUrl,
|
||||
userAvatarUrl: userUrl,
|
||||
temperaturePreset: selectedTempPreset
|
||||
})
|
||||
});
|
||||
@@ -615,10 +615,10 @@ const initApp = () => {
|
||||
loadAgentConfig();
|
||||
|
||||
// Variáveis de Estado
|
||||
let chats = JSON.parse(localStorage.getItem('camila_chats')) || [];
|
||||
let chats = JSON.parse(localStorage.getItem('pedagog_chats') || localStorage.getItem('camila_chats')) || [];
|
||||
// Migração: adicionar campos tags e pinned a chats antigos
|
||||
chats = chats.map(c => ({ ...c, tags: c.tags || [], pinned: c.pinned || false }));
|
||||
let currentChatId = localStorage.getItem('camila_current_chat_id') || null;
|
||||
let currentChatId = localStorage.getItem('pedagog_current_chat_id') || localStorage.getItem('camila_current_chat_id') || null;
|
||||
let isGenerating = false;
|
||||
let searchQuery = '';
|
||||
let activeTag = 'all';
|
||||
@@ -638,7 +638,7 @@ const initApp = () => {
|
||||
|
||||
const applyTheme = (theme) => {
|
||||
document.documentElement.setAttribute('data-theme', theme);
|
||||
localStorage.setItem('camila_theme', theme);
|
||||
localStorage.setItem('pedagog_theme', theme);
|
||||
if (theme === 'light') {
|
||||
iconThemeSun.style.display = 'none';
|
||||
iconThemeMoon.style.display = 'block';
|
||||
@@ -649,7 +649,7 @@ const initApp = () => {
|
||||
};
|
||||
|
||||
// Init theme from localStorage or system preference
|
||||
const savedTheme = localStorage.getItem('camila_theme');
|
||||
const savedTheme = localStorage.getItem('pedagog_theme') || localStorage.getItem('camila_theme');
|
||||
if (savedTheme) {
|
||||
applyTheme(savedTheme);
|
||||
} else {
|
||||
@@ -1283,11 +1283,11 @@ const initApp = () => {
|
||||
// ==========================================================================
|
||||
|
||||
const saveChats = () => {
|
||||
localStorage.setItem('camila_chats', JSON.stringify(chats));
|
||||
localStorage.setItem('pedagog_chats', JSON.stringify(chats));
|
||||
if (currentChatId) {
|
||||
localStorage.setItem('camila_current_chat_id', currentChatId);
|
||||
localStorage.setItem('pedagog_current_chat_id', currentChatId);
|
||||
} else {
|
||||
localStorage.removeItem('camila_current_chat_id');
|
||||
localStorage.removeItem('pedagog_current_chat_id');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1563,7 +1563,7 @@ const initApp = () => {
|
||||
if (isGenerating) return;
|
||||
|
||||
currentChatId = null;
|
||||
localStorage.removeItem('camila_current_chat_id');
|
||||
localStorage.removeItem('pedagog_current_chat_id');
|
||||
|
||||
welcomeContainer.style.display = 'flex';
|
||||
conversationList.innerHTML = '';
|
||||
@@ -1599,8 +1599,8 @@ const initApp = () => {
|
||||
row.className = `message-row ${role}`;
|
||||
|
||||
const avatarHtml = isUser
|
||||
? `<div class="avatar user-avatar user-avatar-img-wrapper"><img src="${window.agentConfig?.camilaAvatarUrl || 'assets/camila_prof.png'}" alt="Camila" class="user-avatar-img"></div>`
|
||||
: `<div class="avatar bot-avatar bot-avatar-img-wrapper"><img src="${window.agentConfig?.kemilyAvatarUrl || 'assets/kemily.png'}" alt="${window.agentConfig?.agentName || 'Kemily'}" class="bot-avatar-img"></div>`;
|
||||
? `<div class="avatar user-avatar user-avatar-img-wrapper"><img src="${window.agentConfig?.userAvatarUrl || window.agentConfig?.camilaAvatarUrl || 'assets/pedagog_user.png'}" alt="Usuário" class="user-avatar-img"></div>`
|
||||
: `<div class="avatar bot-avatar bot-avatar-img-wrapper"><img src="${window.agentConfig?.iaAvatarUrl || window.agentConfig?.kemilyAvatarUrl || 'assets/pedagog_ia.png'}" alt="${window.agentConfig?.agentName || 'PedagogIA'}" class="bot-avatar-img"></div>`;
|
||||
|
||||
let contentHtml = '';
|
||||
if (isUser) {
|
||||
@@ -1991,7 +1991,7 @@ const initApp = () => {
|
||||
|
||||
botRow.innerHTML = `
|
||||
<div class="message-icon">
|
||||
<div class="avatar bot-avatar bot-avatar-img-wrapper"><img src="${window.agentConfig?.kemilyAvatarUrl || 'assets/kemily.png'}" alt="${window.agentConfig?.agentName || 'Kemily'}" class="bot-avatar-img"></div>
|
||||
<div class="avatar bot-avatar bot-avatar-img-wrapper"><img src="${window.agentConfig?.iaAvatarUrl || window.agentConfig?.kemilyAvatarUrl || 'assets/pedagog_ia.png'}" alt="${window.agentConfig?.agentName || 'PedagogIA'}" class="bot-avatar-img"></div>
|
||||
</div>
|
||||
<div class="message-content-wrapper">
|
||||
<div class="message-content">
|
||||
@@ -2713,7 +2713,7 @@ const initApp = () => {
|
||||
showRecordState('processing');
|
||||
|
||||
try {
|
||||
const turmaData = localStorage.getItem('camila_turma') || '[]';
|
||||
const turmaData = localStorage.getItem('pedagog_turma') || localStorage.getItem('camila_turma') || '[]';
|
||||
const res = await fetch('/api/observacao/analisar', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -2923,7 +2923,7 @@ const initApp = () => {
|
||||
|
||||
let especialKidsNames = [];
|
||||
if (isSpecialObsMode) {
|
||||
const turma = JSON.parse(localStorage.getItem('camila_turma') || '[]');
|
||||
const turma = JSON.parse(localStorage.getItem('pedagog_turma') || localStorage.getItem('camila_turma') || '[]');
|
||||
especialKidsNames = turma.filter(c => c.especial).map(c => (c.nome || '').toLowerCase().trim()).filter(Boolean);
|
||||
if (especialKidsNames.length === 0) {
|
||||
obsList.innerHTML = '<div class="obs-empty">Nenhuma criança com "Educação Especial" cadastrada na Minha Turma.</div>';
|
||||
@@ -3051,7 +3051,7 @@ const initApp = () => {
|
||||
try {
|
||||
const res = await fetch('/api/alunos');
|
||||
currentAlunos = await res.json();
|
||||
localStorage.setItem('camila_turma', JSON.stringify(currentAlunos));
|
||||
localStorage.setItem('pedagog_turma', JSON.stringify(currentAlunos));
|
||||
return currentAlunos;
|
||||
} catch(e) { console.error(e); return []; }
|
||||
};
|
||||
@@ -4981,7 +4981,7 @@ Se algum dado não for mencionado, deixe a string vazia ou false para boolean.`
|
||||
}
|
||||
|
||||
// Renderizar quadrinhos na tela (todos, incluindo os anteriores caso tenha sido extensão)
|
||||
comicsResultTitle.textContent = scriptData.title || comicsResultTitle.textContent || 'Fábrica de Quadrinhos Camila';
|
||||
comicsResultTitle.textContent = scriptData.title || comicsResultTitle.textContent || 'Fábrica de Quadrinhos Pedagog';
|
||||
comicsGridContainer.innerHTML = '';
|
||||
|
||||
generatedPanelsData.forEach((panel, index) => {
|
||||
|
||||
Reference in New Issue
Block a user