Adicionando campo de Idade e melhorando analise visual no Garatujas

This commit is contained in:
2026-06-05 14:36:26 +00:00
parent f1dfd01511
commit d69290b76d
3 changed files with 22 additions and 10 deletions
+3
View File
@@ -4857,6 +4857,7 @@ const initApp = () => {
const contentGaratujasHistorico = document.getElementById('contentGaratujasHistorico'); const contentGaratujasHistorico = document.getElementById('contentGaratujasHistorico');
const garatujasAlunoInput = document.getElementById('garatujasAlunoInput'); const garatujasAlunoInput = document.getElementById('garatujasAlunoInput');
const garatujasIdadeInput = document.getElementById('garatujasIdadeInput');
const garatujaFileInput = document.getElementById('garatujaFileInput'); const garatujaFileInput = document.getElementById('garatujaFileInput');
const btnUploadGaratuja = document.getElementById('btnUploadGaratuja'); const btnUploadGaratuja = document.getElementById('btnUploadGaratuja');
const garatujaFileStatus = document.getElementById('garatujaFileStatus'); const garatujaFileStatus = document.getElementById('garatujaFileStatus');
@@ -4954,6 +4955,7 @@ const initApp = () => {
if (btnGenerateGaratuja) { if (btnGenerateGaratuja) {
btnGenerateGaratuja.addEventListener('click', async () => { btnGenerateGaratuja.addEventListener('click', async () => {
const alunoName = garatujasAlunoInput.value.trim(); const alunoName = garatujasAlunoInput.value.trim();
const alunoIdade = garatujasIdadeInput ? garatujasIdadeInput.value.trim() : '';
const file = garatujaFileInput.files[0]; const file = garatujaFileInput.files[0];
if (!alunoName) { if (!alunoName) {
@@ -4972,6 +4974,7 @@ const initApp = () => {
const formData = new FormData(); const formData = new FormData();
formData.append('alunoName', alunoName); formData.append('alunoName', alunoName);
if (alunoIdade) formData.append('alunoIdade', alunoIdade);
formData.append('image', file); formData.append('image', file);
let statusMsgIdx = 0; let statusMsgIdx = 0;
+10 -3
View File
@@ -1105,9 +1105,16 @@
<div id="contentGaratujasNova" class="tab-content-panel"> <div id="contentGaratujasNova" class="tab-content-panel">
<div style="display: flex; flex-direction: column; gap: 16px;"> <div style="display: flex; flex-direction: column; gap: 16px;">
<!-- NOME DO ALUNO --> <!-- NOME DO ALUNO -->
<div class="settings-group"> <!-- NOME E IDADE DO ALUNO -->
<label style="color: var(--text-secondary); font-size: 0.82rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px;">Nome do Aluno</label> <div style="display: flex; gap: 12px; align-items: flex-start;">
<input type="text" id="garatujasAlunoInput" placeholder="Ex: Joãozinho Silva" class="obs-input" style="width: 100%; margin-top: 4px; padding: 10px;"> <div class="settings-group" style="flex: 2;">
<label style="color: var(--text-secondary); font-size: 0.82rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px;">Nome do Aluno</label>
<input type="text" id="garatujasAlunoInput" placeholder="Ex: Joãozinho Silva" class="obs-input" style="width: 100%; margin-top: 4px; padding: 10px;">
</div>
<div class="settings-group" style="flex: 1;">
<label style="color: var(--text-secondary); font-size: 0.82rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px;">Idade (Ex: 2a 3m)</label>
<input type="text" id="garatujasIdadeInput" placeholder="Ex: 2 anos" class="obs-input" style="width: 100%; margin-top: 4px; padding: 10px;">
</div>
</div> </div>
<!-- FOTO DO DESENHO --> <!-- FOTO DO DESENHO -->
+9 -7
View File
@@ -833,7 +833,7 @@ Retorne a resposta estruturada estritamente em Markdown. Separe as seções usan
// ROTAS DO GARATUJAS (ANALISADOR DE TRAÇADO INFANTIL) // ROTAS DO GARATUJAS (ANALISADOR DE TRAÇADO INFANTIL)
// ============================================================ // ============================================================
app.post('/api/garatujas/analyze', requireAuth, multerUpload.single('image'), async (req, res) => { app.post('/api/garatujas/analyze', requireAuth, multerUpload.single('image'), async (req, res) => {
const { alunoName } = req.body; const { alunoName, alunoIdade } = req.body;
const file = req.file; const file = req.file;
if (!alunoName) { if (!alunoName) {
@@ -865,17 +865,19 @@ app.post('/api/garatujas/analyze', requireAuth, multerUpload.single('image'), as
console.log('[Garatujas] Usando API direta do Google Gemini para análise de imagem...'); console.log('[Garatujas] Usando API direta do Google Gemini para análise de imagem...');
const geminiUrl = `https://generativelanguage.googleapis.com/v1beta/models/${process.env.GOOGLE_AI_MODEL || 'gemini-2.5-flash'}:generateContent?key=${process.env.GOOGLE_AI_API_KEY}`; const geminiUrl = `https://generativelanguage.googleapis.com/v1beta/models/${process.env.GOOGLE_AI_MODEL || 'gemini-2.5-flash'}:generateContent?key=${process.env.GOOGLE_AI_API_KEY}`;
const promptText = `Você é um psicopedagogo e especialista em desenvolvimento infantil no Brasil. const idadeContexto = alunoIdade ? `de ${alunoIdade} de idade` : '(até 6 anos de idade)';
Analise a imagem deste desenho/rabisco feito pelo aluno(a) "${alunoName}" (até 6 anos de idade).
Identifique e descreva com base na literatura científica (como Piaget, Luquet, Lowenfeld): const promptText = `Você é um psicopedagogo e especialista em desenvolvimento infantil no Brasil.
1. O estágio do desenho infantil em que a criança se encontra (ex: Garatuja Desordenada, Garatuja Ordenada, Pré-Esquematismo, etc.) justificando com elementos visuais identificados no desenho. Analise a imagem anexada, que é um desenho/rabisco feito pelo aluno(a) "${alunoName}" ${idadeContexto}.
2. A análise do desenvolvimento cognitivo e da coordenação motora fina expressa nos traços.
Identifique visualmente os padrões dos traços, uso do espaço, pressão do lápis (se perceptível) e formas criadas. Descreva com base na literatura científica (como Piaget, Luquet, Lowenfeld):
1. O estágio exato do desenho infantil em que a criança se encontra (ex: Garatuja Desordenada, Garatuja Ordenada, Pré-Esquematismo, etc.) justificando com os elementos visuais que você está vendo na imagem. Lembre-se que a criança tem ${idadeContexto}.
2. A análise do desenvolvimento cognitivo e da coordenação motora fina expressa nos traços vistos na imagem.
3. Propostas práticas de estimulação pedagógica personalizadas para o professor aplicar com o aluno "${alunoName}" em sala de aula para avançar para o próximo estágio. 3. Propostas práticas de estimulação pedagógica personalizadas para o professor aplicar com o aluno "${alunoName}" em sala de aula para avançar para o próximo estágio.
Retorne a resposta estruturada em Markdown, usando títulos claros: Retorne a resposta estruturada em Markdown, usando títulos claros:
# Estágio do Desenho e Análise Psicomotora # Estágio do Desenho e Análise Psicomotora
[Sua análise aqui] [Sua análise baseada na imagem aqui]
# Diagnóstico de Desenvolvimento Cognitivo # Diagnóstico de Desenvolvimento Cognitivo
[Seu diagnóstico aqui] [Seu diagnóstico aqui]