From f04dea7e8a52db4241341446c1ea4554126e354c Mon Sep 17 00:00:00 2001 From: Sidney Date: Fri, 17 Jul 2026 20:54:06 -0300 Subject: [PATCH] fix: adiciona fallback para Gemini 1.5-flash e desabilita sincronizacao destruidora de provas do JSON para o SQL --- manager/server.selfhosted.js | 3 +++ manager/services/database.js | 23 ++--------------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/manager/server.selfhosted.js b/manager/server.selfhosted.js index 9e14c72..2b2432a 100644 --- a/manager/server.selfhosted.js +++ b/manager/server.selfhosted.js @@ -1280,6 +1280,9 @@ app.post('/api/ai/generate-questions', async (req, res) => { if (provider === 'gemini') { apiKey = aiConfig.geminiKey; modelName = aiConfig.geminiModel || 'gemini-1.5-flash'; + if (modelName === 'gemini-2.5-flash') { + modelName = 'gemini-1.5-flash'; + } } else if (provider === 'openai') { apiKey = aiConfig.openaiKey; modelName = aiConfig.openaiModel || 'gpt-4o-mini'; diff --git a/manager/services/database.js b/manager/services/database.js index 838ecef..7362dcf 100644 --- a/manager/services/database.js +++ b/manager/services/database.js @@ -1137,27 +1137,8 @@ export async function syncJsonToRelationalTables() { } // 6. Sincronizar Provas - if (data.exams && Array.isArray(data.exams)) { - const examIds = data.exams.map(e => e.id).filter(Boolean); - if (examIds.length > 0) { - await client.query('DELETE FROM provas WHERE id != ALL($1)', [examIds]); - } else { - await client.query('DELETE FROM provas'); - } - - for (const e of data.exams) { - if (!e.id || !e.title) continue; - await client.query( - `INSERT INTO provas (id, turma_id, disciplina_id, periodo_id, titulo, duracao_minutos, status, permitir_refacao) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8) - ON CONFLICT (id) DO UPDATE SET - turma_id = EXCLUDED.turma_id, disciplina_id = EXCLUDED.disciplina_id, periodo_id = EXCLUDED.periodo_id, - titulo = EXCLUDED.titulo, duracao_minutos = EXCLUDED.duracao_minutos, status = EXCLUDED.status, - permitir_refacao = EXCLUDED.permitir_refacao`, - [e.id, e.classId || null, e.subjectId || null, e.periodId || null, e.title, e.durationMinutes || 60, e.status || 'draft', e.allowRetake || false] - ).catch(err => console.warn(`[Sync:Provas] Erro na prova ${e.id}:`, err.message)); - } - } + // [REMOVIDO] A tabela de provas e questões agora é a Single Source of Truth (SQL-First). + // O JSON legado data.exams é ignorado para não sobrescrever nem deletar os registros reais do banco. // 7. Sincronizar Frequências // [REMOVIDO] A tabela de frequencias agora é a Single Source of Truth (SQL-First).