127 lines
4.6 KiB
JavaScript
127 lines
4.6 KiB
JavaScript
import pg from 'pg';
|
|
|
|
const pool = new pg.Pool({
|
|
user: 'edumanager',
|
|
host: '150.230.87.131',
|
|
database: 'edumanager',
|
|
password: 'EduManager2026!Seguro',
|
|
port: 5432,
|
|
});
|
|
|
|
async function main() {
|
|
console.log('🔄 Iniciando correção de justificativas e limpeza de duplicidades no VPS...');
|
|
|
|
const evillaId = '311709fb-68ab-4168-8684-887b5ec2d731';
|
|
const evillaLessonId = 'ca727723-e854-4503-b032-b811e06cfcdf';
|
|
const evillaJustId = 'att-just-1777745007528';
|
|
|
|
const lohannyId = '05de4757-d36f-4de6-9e57-5792d13ad3e7';
|
|
const lohannyLessonId = '080469ea-58fc-4231-a016-fd35b99c0dce';
|
|
const lohannyJustId = 'att-just-1777143386721';
|
|
|
|
// ==========================================
|
|
// 1. CORREÇÃO NO BANCO DE DADOS (SQL)
|
|
// ==========================================
|
|
const client = await pool.connect();
|
|
try {
|
|
await client.query('BEGIN');
|
|
|
|
// Evilla: Deletar duplicidades no SQL
|
|
const delEvilla = await client.query(
|
|
'DELETE FROM frequencias WHERE aluno_id = $1 AND DATE(data) = \'2026-05-02\' AND id <> $2',
|
|
[evillaId, evillaJustId]
|
|
);
|
|
console.log(`[SQL] Deletadas ${delEvilla.rowCount} duplicidades para Evilla em 02/05/2026.`);
|
|
|
|
// Evilla: Corrigir fuso da justificativa e setar aula_id no SQL
|
|
const updEvilla = await client.query(
|
|
'UPDATE frequencias SET data = \'2026-05-02 14:00:00\', aula_id = $1 WHERE id = $2',
|
|
[evillaLessonId, evillaJustId]
|
|
);
|
|
console.log(`[SQL] Justificativa da Evilla corrigida para 14:00 (aula: ${evillaLessonId}).`);
|
|
|
|
// Maria Lohanny: Deletar duplicidades no SQL
|
|
const delLohanny = await client.query(
|
|
'DELETE FROM frequencias WHERE aluno_id = $1 AND DATE(data) = \'2026-04-25\' AND id <> $2',
|
|
[lohannyId, lohannyJustId]
|
|
);
|
|
console.log(`[SQL] Deletadas ${delLohanny.rowCount} duplicidades para Maria Lohanny em 25/04/2026.`);
|
|
|
|
// Maria Lohanny: Corrigir fuso da justificativa e setar aula_id no SQL
|
|
const updLohanny = await client.query(
|
|
'UPDATE frequencias SET data = \'2026-04-25 14:00:00\', aula_id = $1 WHERE id = $2',
|
|
[lohannyLessonId, lohannyJustId]
|
|
);
|
|
console.log(`[SQL] Justificativa da Maria Lohanny corrigida para 14:00 (aula: ${lohannyLessonId}).`);
|
|
|
|
await client.query('COMMIT');
|
|
console.log('[SQL] Transação finalizada com sucesso!');
|
|
} catch (err) {
|
|
await client.query('ROLLBACK');
|
|
console.error('[SQL] ❌ Erro ao atualizar tabelas:', err);
|
|
}
|
|
|
|
// ==========================================
|
|
// 2. CORREÇÃO NO CACHE LEGADO (JSON NA TABELA school_data)
|
|
// ==========================================
|
|
try {
|
|
const { rows } = await client.query('SELECT data FROM school_data WHERE id = 1');
|
|
const schoolData = rows[0]?.data || {};
|
|
|
|
if (schoolData && Array.isArray(schoolData.attendance)) {
|
|
console.log(`[JSON] Analisando array de presença (${schoolData.attendance.length} registros)...`);
|
|
|
|
// Remover duplicidades
|
|
const initialLength = schoolData.attendance.length;
|
|
schoolData.attendance = schoolData.attendance.filter(a => {
|
|
if (a.id === evillaJustId || a.id === lohannyJustId) return true;
|
|
|
|
if (a.studentId === evillaId && a.date && a.date.startsWith('2026-05-02')) {
|
|
return false;
|
|
}
|
|
|
|
if (a.studentId === lohannyId && a.date && a.date.startsWith('2026-04-25')) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
});
|
|
console.log(`[JSON] Removidos ${initialLength - schoolData.attendance.length} registros duplicados.`);
|
|
|
|
// Corrigir fuso horário das justificativas no JSON
|
|
let fixedCount = 0;
|
|
for (const a of schoolData.attendance) {
|
|
if (a.id === evillaJustId) {
|
|
a.date = '2026-05-02T14:00:00';
|
|
a.lessonId = evillaLessonId;
|
|
fixedCount++;
|
|
}
|
|
if (a.id === lohannyJustId) {
|
|
a.date = '2026-04-25T14:00:00';
|
|
a.lessonId = lohannyLessonId;
|
|
fixedCount++;
|
|
}
|
|
}
|
|
console.log(`[JSON] Corrigidas ${fixedCount} justificativas no JSON.`);
|
|
|
|
// Salvar de volta na tabela school_data
|
|
await client.query('UPDATE school_data SET data = $1, updated_at = NOW() WHERE id = 1', [JSON.stringify(schoolData)]);
|
|
console.log('[JSON] Tabela school_data atualizada com sucesso!');
|
|
} else {
|
|
console.warn('[JSON] Dados de frequência não localizados no school_data.');
|
|
}
|
|
} catch (err) {
|
|
console.error('[JSON] ❌ Erro ao atualizar cache JSON:', err);
|
|
} finally {
|
|
client.release();
|
|
}
|
|
|
|
console.log('✅ Correção de justificativas concluída com sucesso!');
|
|
pool.end();
|
|
}
|
|
|
|
main().catch(err => {
|
|
console.error('❌ Erro inesperado:', err);
|
|
pool.end();
|
|
});
|