From 81ba8b19196c47392df712574f5573f8e0901a49 Mon Sep 17 00:00:00 2001 From: Sidney Date: Wed, 27 May 2026 11:37:26 -0300 Subject: [PATCH] feat: add student sexo field and update detailed dashboard --- act_runner_config.yaml | 4 + config_gitea.sh | 4 + create_config.py | 3 + manager/components/Classes.tsx | 6 +- manager/components/Dashboard.tsx | 8 +- manager/components/Students.tsx | 65 +++++-- manager/fix_all_dates.cjs | 19 ++ manager/fix_dates.cjs | 14 ++ manager/scratch/add_sexo_column.cjs | 16 ++ manager/scratch/check_frequencias_photos.js | 30 +++ manager/scratch/check_json_keys.js | 33 ++++ manager/scratch/compare_students.js | 31 +++ manager/scratch/delete_orphaned_absences.cjs | 29 +++ manager/scratch/delete_orphaned_absences.js | 29 +++ manager/scratch/delete_orphaned_absences2.cjs | 27 +++ manager/scratch/download_photos.js | 61 ++++++ manager/scratch/fix_face.cjs | 16 ++ manager/scratch/inspect_jsonb.js | 52 ++++++ manager/scratch/match_faces.js | 117 ++++++++++++ .../photos/student_1776870119652_z0tdgp.webp | Bin 0 -> 29966 bytes .../photos/student_1777139875689_4l971l.webp | Bin 0 -> 18688 bytes .../photos/student_1777139911929_21v6av.webp | Bin 0 -> 22732 bytes .../photos/student_1777139942925_aoxyls.webp | Bin 0 -> 14156 bytes .../photos/student_1777140008401_3966cd.webp | Bin 0 -> 15318 bytes .../photos/student_1777140038192_xntcja.webp | Bin 0 -> 32256 bytes .../photos/student_1777140066701_dfzecd.webp | Bin 0 -> 17078 bytes .../photos/student_1777140098875_tcan7k.webp | Bin 0 -> 16508 bytes .../photos/student_1777743393187_rf50t.webp | Bin 0 -> 22248 bytes manager/scratch/restore_and_link_students.js | 176 ++++++++++++++++++ manager/scratch/restore_students.js | 137 ++++++++++++++ manager/scratch/search_db.js | 64 +++++++ manager/scratch/update_alunos_db.cjs | 36 ++++ manager/scratch/update_gemini.js | 18 ++ manager/services/database.js | 111 +++++++---- manager/tsconfig.json | 7 +- manager/types.ts | 1 + portal/src/pages/Financeiro.tsx | 2 +- portal/src/pages/Frequencia.tsx | 2 +- 38 files changed, 1049 insertions(+), 69 deletions(-) create mode 100644 act_runner_config.yaml create mode 100644 config_gitea.sh create mode 100644 create_config.py create mode 100644 manager/fix_all_dates.cjs create mode 100644 manager/fix_dates.cjs create mode 100644 manager/scratch/add_sexo_column.cjs create mode 100644 manager/scratch/check_frequencias_photos.js create mode 100644 manager/scratch/check_json_keys.js create mode 100644 manager/scratch/compare_students.js create mode 100644 manager/scratch/delete_orphaned_absences.cjs create mode 100644 manager/scratch/delete_orphaned_absences.js create mode 100644 manager/scratch/delete_orphaned_absences2.cjs create mode 100644 manager/scratch/download_photos.js create mode 100644 manager/scratch/fix_face.cjs create mode 100644 manager/scratch/inspect_jsonb.js create mode 100644 manager/scratch/match_faces.js create mode 100644 manager/scratch/photos/student_1776870119652_z0tdgp.webp create mode 100644 manager/scratch/photos/student_1777139875689_4l971l.webp create mode 100644 manager/scratch/photos/student_1777139911929_21v6av.webp create mode 100644 manager/scratch/photos/student_1777139942925_aoxyls.webp create mode 100644 manager/scratch/photos/student_1777140008401_3966cd.webp create mode 100644 manager/scratch/photos/student_1777140038192_xntcja.webp create mode 100644 manager/scratch/photos/student_1777140066701_dfzecd.webp create mode 100644 manager/scratch/photos/student_1777140098875_tcan7k.webp create mode 100644 manager/scratch/photos/student_1777743393187_rf50t.webp create mode 100644 manager/scratch/restore_and_link_students.js create mode 100644 manager/scratch/restore_students.js create mode 100644 manager/scratch/search_db.js create mode 100644 manager/scratch/update_alunos_db.cjs create mode 100644 manager/scratch/update_gemini.js diff --git a/act_runner_config.yaml b/act_runner_config.yaml new file mode 100644 index 0000000..a5fb814 --- /dev/null +++ b/act_runner_config.yaml @@ -0,0 +1,4 @@ +runner: + insecure: false +container: + network: "network_public" diff --git a/config_gitea.sh b/config_gitea.sh new file mode 100644 index 0000000..d78c48b --- /dev/null +++ b/config_gitea.sh @@ -0,0 +1,4 @@ +echo "" | sudo tee -a /var/lib/docker/volumes/fa03e1d7b997cab51d36d907dab232d316fcda69b9bc3a3e356c8d97bd4a6ace/_data/app.ini +echo "[actions]" | sudo tee -a /var/lib/docker/volumes/fa03e1d7b997cab51d36d907dab232d316fcda69b9bc3a3e356c8d97bd4a6ace/_data/app.ini +echo "ENABLED = true" | sudo tee -a /var/lib/docker/volumes/fa03e1d7b997cab51d36d907dab232d316fcda69b9bc3a3e356c8d97bd4a6ace/_data/app.ini +docker restart $(docker ps -q -f name=gitea_gitea-server) diff --git a/create_config.py b/create_config.py new file mode 100644 index 0000000..bc7caf1 --- /dev/null +++ b/create_config.py @@ -0,0 +1,3 @@ +import yaml +with open('/home/ubuntu/act_runner_config.yaml', 'w') as f: + f.write('runner:\n insecure: false\ncontainer:\n network: "network_public"\n') diff --git a/manager/components/Classes.tsx b/manager/components/Classes.tsx index 4518dec..6fccc5a 100644 --- a/manager/components/Classes.tsx +++ b/manager/components/Classes.tsx @@ -303,8 +303,12 @@ const Classes: React.FC = ({ data, updateData, onNavigateToClass } const calculateAge = (birthDate: string) => { if (!birthDate) return null; + const cleanDate = birthDate.substring(0, 10); + if (!cleanDate.includes('-')) return null; + const [year, month, day] = cleanDate.split('-').map(Number); + const birth = new Date(year, month - 1, day); const today = new Date(); - const birth = new Date(birthDate); + let age = today.getFullYear() - birth.getFullYear(); const m = today.getMonth() - birth.getMonth(); if (m < 0 || (m === 0 && today.getDate() < birth.getDate())) { diff --git a/manager/components/Dashboard.tsx b/manager/components/Dashboard.tsx index b46582a..f18ac14 100644 --- a/manager/components/Dashboard.tsx +++ b/manager/components/Dashboard.tsx @@ -436,9 +436,9 @@ const Dashboard: React.FC = ({ data }) => { s.gender === 'M').length }, - { name: 'Feminino', value: data.students.filter(s => s.gender === 'F').length }, - { name: 'Outro', value: data.students.filter(s => s.gender === 'O').length }, + { name: 'Feminino', value: data.students.filter(s => (s as any).sexo === 'Feminino' || s.gender === 'F' || (s as any).sexo === 'F').length }, + { name: 'Masculino', value: data.students.filter(s => (s as any).sexo === 'Masculino' || s.gender === 'M' || (s as any).sexo === 'M').length }, + { name: 'Outro', value: data.students.filter(s => (s as any).sexo === 'Outro' || s.gender === 'O' || (s as any).sexo === 'O').length }, ]} cx="50%" cy="50%" @@ -446,8 +446,8 @@ const Dashboard: React.FC = ({ data }) => { dataKey="value" label > - + diff --git a/manager/components/Students.tsx b/manager/components/Students.tsx index d1292a7..e681709 100644 --- a/manager/components/Students.tsx +++ b/manager/components/Students.tsx @@ -106,7 +106,8 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId hasGuardian: false, contractTemplateId: '', generateFee: false, // UI only - generateContract: false // UI only + generateContract: false, // UI only + sexo: '' } as any); // Camera State @@ -279,8 +280,10 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId }; const calculateAge = (dateString: string) => { - if (!dateString || !dateString.includes('-')) return null; - const [year, month, day] = dateString.split('-').map(Number); + if (!dateString) return null; + const cleanDate = dateString.substring(0, 10); + if (!cleanDate.includes('-')) return null; + const [year, month, day] = cleanDate.split('-').map(Number); const birthDate = new Date(year, month - 1, day); const today = new Date(); @@ -318,11 +321,12 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId useEffect(() => { if (formData.birthDate) { - const parts = formData.birthDate.split('-'); + const cleanDate = formData.birthDate.substring(0, 10); + const parts = cleanDate.split('-'); if (parts.length === 3) { setBirthDateInput(`${parts[2]}/${parts[1]}/${parts[0]}`); } else { - setBirthDateInput(formData.birthDate); + setBirthDateInput(cleanDate); } } else { setBirthDateInput(''); @@ -331,11 +335,12 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId useEffect(() => { if (formData.guardianBirthDate) { - const parts = formData.guardianBirthDate.split('-'); + const cleanDate = formData.guardianBirthDate.substring(0, 10); + const parts = cleanDate.split('-'); if (parts.length === 3) { setGuardianBirthDateInput(`${parts[2]}/${parts[1]}/${parts[0]}`); } else { - setGuardianBirthDateInput(formData.guardianBirthDate); + setGuardianBirthDateInput(cleanDate); } } else { setGuardianBirthDateInput(''); @@ -344,11 +349,12 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId useEffect(() => { if (formData.rgIssueDate) { - const parts = formData.rgIssueDate.split('-'); + const cleanDate = formData.rgIssueDate.substring(0, 10); + const parts = cleanDate.split('-'); if (parts.length === 3) { setRgIssueDateInput(`${parts[2]}/${parts[1]}/${parts[0]}`); } else { - setRgIssueDateInput(formData.rgIssueDate); + setRgIssueDateInput(cleanDate); } } else { setRgIssueDateInput(''); @@ -839,6 +845,9 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId const studentToSave: Student = { ...(editingStudent || { id: studentId }), ...formData as Student, + birthDate: formData.birthDate ? formData.birthDate.substring(0, 10) : '', + guardianBirthDate: formData.guardianBirthDate ? formData.guardianBirthDate.substring(0, 10) : '', + rgIssueDate: formData.rgIssueDate ? formData.rgIssueDate.substring(0, 10) : '', enrollmentNumber, portalPassword, photo: finalPhotoUrl @@ -925,7 +934,7 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId content = content.replace(/{{aluno}}/g, studentToSave.name || ''); content = content.replace(/{{aluno_cpf}}/g, studentToSave.cpf || ''); content = content.replace(/{{aluno_rg}}/g, studentToSave.rg || ''); - content = content.replace(/{{aluno_nascimento}}/g, studentToSave.birthDate ? studentToSave.birthDate.split('-').reverse().join('/') : ''); + content = content.replace(/{{aluno_nascimento}}/g, studentToSave.birthDate ? studentToSave.birthDate.substring(0, 10).split('-').reverse().join('/') : ''); content = content.replace(/{{aluno_email}}/g, studentToSave.email || ''); content = content.replace(/{{aluno_telefone}}/g, studentToSave.phone || ''); content = content.replace(/{{aluno_cep}}/g, studentToSave.addressZip || ''); @@ -937,7 +946,7 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId // Responsável content = content.replace(/{{responsavel_nome}}/g, studentToSave.guardianName || ''); content = content.replace(/{{responsavel_cpf}}/g, studentToSave.guardianCpf || ''); - content = content.replace(/{{responsavel_nascimento}}/g, studentToSave.guardianBirthDate ? studentToSave.guardianBirthDate.split('-').reverse().join('/') : ''); + content = content.replace(/{{responsavel_nascimento}}/g, studentToSave.guardianBirthDate ? studentToSave.guardianBirthDate.substring(0, 10).split('-').reverse().join('/') : ''); // Curso e Turma content = content.replace(/{{curso}}/g, course.name || ''); @@ -1186,7 +1195,8 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId discount: 0, hasGuardian: false, generateFee: true, - generateContract: true + generateContract: true, + sexo: '' }; if (student) { @@ -1602,14 +1612,29 @@ const Students: React.FC = ({ data, updateData, deepLinkStudentId Dados Pessoais -
- - setFormData({...formData, name: e.target.value})} - placeholder="Ex: João da Silva" - /> +
+
+ + setFormData({...formData, name: e.target.value})} + placeholder="Ex: João da Silva" + /> +
+
+ + +
diff --git a/manager/fix_all_dates.cjs b/manager/fix_all_dates.cjs new file mode 100644 index 0000000..daf1062 --- /dev/null +++ b/manager/fix_all_dates.cjs @@ -0,0 +1,19 @@ +const { Pool } = require('pg'); +const pool = new Pool({ connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' }); +async function fixAll() { + const client = await pool.connect(); + try { + const { rowCount } = await client.query(` + UPDATE frequencias + SET data = data - INTERVAL '3 hours' + WHERE EXTRACT(HOUR FROM data) >= 17 + AND EXTRACT(HOUR FROM data) <= 19 + AND tipo = 'presence' + `); + console.log(`Corrigidas ${rowCount} presenças deslocadas pelo fuso horário (UTC -> BRT).`); + } finally { + client.release(); + pool.end(); + } +} +fixAll().catch(console.error); diff --git a/manager/fix_dates.cjs b/manager/fix_dates.cjs new file mode 100644 index 0000000..4ca3bf3 --- /dev/null +++ b/manager/fix_dates.cjs @@ -0,0 +1,14 @@ +const { Pool } = require('pg'); +const pool = new Pool({ connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' }); +async function fix() { + const client = await pool.connect(); + try { + await client.query("UPDATE frequencias SET data = '2026-05-02 14:37:10' WHERE id = 'b1961ef4-9a35-495a-86dc-4e6439d9670b'"); + await client.query("UPDATE frequencias SET data = '2026-04-25 15:10:55' WHERE id = '810ac2f3-860b-4173-a3c9-203c45f3d061'"); + console.log('Fixed dates for Napoleão'); + } finally { + client.release(); + pool.end(); + } +} +fix().catch(console.error); diff --git a/manager/scratch/add_sexo_column.cjs b/manager/scratch/add_sexo_column.cjs new file mode 100644 index 0000000..5508402 --- /dev/null +++ b/manager/scratch/add_sexo_column.cjs @@ -0,0 +1,16 @@ +const { Pool } = require('pg'); +const pool = new Pool({ connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' }); + +async function run() { + try { + console.log('Adicionando coluna "sexo" na tabela "alunos"...'); + await pool.query('ALTER TABLE alunos ADD COLUMN IF NOT EXISTS sexo text;'); + console.log('Coluna "sexo" adicionada ou já existente com sucesso!'); + } catch (err) { + console.error('Erro ao adicionar coluna:', err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/check_frequencias_photos.js b/manager/scratch/check_frequencias_photos.js new file mode 100644 index 0000000..56bfcd2 --- /dev/null +++ b/manager/scratch/check_frequencias_photos.js @@ -0,0 +1,30 @@ +import pg from 'pg'; + +const pool = new pg.Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +async function run() { + try { + console.log('Buscando presenças com fotos na tabela frequencias...'); + const { rows } = await pool.query( + `SELECT f.aluno_id, a.nome, count(*) as total, array_agg(f.data ORDER BY f.data ASC) as datas + FROM frequencias f + JOIN alunos a ON f.aluno_id = a.id + WHERE f.foto IS NOT NULL AND f.foto <> '' + GROUP BY f.aluno_id, a.nome` + ); + + console.log(`Encontrados ${rows.length} alunos com fotos de presenças.`); + rows.forEach(r => { + console.log(`Aluno: ${r.nome} (ID: ${r.aluno_id}) | Total Presenças com Foto: ${r.total} | Datas: ${r.datas.join(', ')}`); + }); + + } catch (err) { + console.error(err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/check_json_keys.js b/manager/scratch/check_json_keys.js new file mode 100644 index 0000000..03abf6c --- /dev/null +++ b/manager/scratch/check_json_keys.js @@ -0,0 +1,33 @@ +import pg from 'pg'; + +const pool = new pg.Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +async function run() { + try { + const { rows } = await pool.query('SELECT data FROM school_data WHERE id = 1'); + const data = rows[0]?.data; + if (!data) { + console.log('No data found.'); + return; + } + + console.log('--- CHAVES NO JSONB ---'); + for (const key of Object.keys(data)) { + if (Array.isArray(data[key])) { + console.log(`- ${key}: Array com ${data[key].length} itens`); + } else if (typeof data[key] === 'object' && data[key] !== null) { + console.log(`- ${key}: Objeto com chaves [${Object.keys(data[key]).join(', ')}]`); + } else { + console.log(`- ${key}: ${typeof data[key]}`); + } + } + } catch (err) { + console.error(err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/compare_students.js b/manager/scratch/compare_students.js new file mode 100644 index 0000000..5901b3e --- /dev/null +++ b/manager/scratch/compare_students.js @@ -0,0 +1,31 @@ +import pg from 'pg'; + +const pool = new pg.Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +async function run() { + try { + const { rows: schoolDataRows } = await pool.query("SELECT data->'students' as students FROM school_data WHERE id = 1"); + const jsonStudents = schoolDataRows[0]?.students || []; + + const { rows: sqlStudents } = await pool.query("SELECT id, nome, foto_url, face_descriptor, data_nascimento, cpf FROM alunos"); + + console.log('--- ALUNOS NO JSONB (school_data) ---'); + jsonStudents.forEach(s => { + console.log(`ID: ${s.id} | Nome: ${s.name} | Photo: ${s.photo} | BirthDate: ${s.birthDate} | CPF: ${s.cpf} | HasFaceDescriptor: ${!!s.faceDescriptor}`); + }); + + console.log('\n--- ALUNOS NA TABELA SQL (alunos) ---'); + sqlStudents.forEach(s => { + console.log(`ID: ${s.id} | Nome: ${s.nome} | FotoUrl: ${s.foto_url} | BirthDate: ${s.data_nascimento} | CPF: ${s.cpf} | HasFaceDescriptor: ${!!s.face_descriptor}`); + }); + + } catch (err) { + console.error(err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/delete_orphaned_absences.cjs b/manager/scratch/delete_orphaned_absences.cjs new file mode 100644 index 0000000..08ba56f --- /dev/null +++ b/manager/scratch/delete_orphaned_absences.cjs @@ -0,0 +1,29 @@ +const { Pool } = require('pg'); + +const pool = new Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +async function run() { + const client = await pool.connect(); + try { + const res = await client.query(` + DELETE FROM frequencias a + WHERE a.tipo = 'absence' AND a.id LIKE 'auto-abs-%' + AND EXISTS ( + SELECT 1 FROM frequencias p + WHERE p.tipo = 'presence' + AND p.aluno_id = a.aluno_id + AND (p.aula_id = a.aula_id OR DATE(p.data AT TIME ZONE 'UTC') = DATE(a.data AT TIME ZONE 'UTC')) + ) RETURNING id; + `); + console.log(`Deleted ${res.rowCount} orphaned absences.`); + } catch (err) { + console.error(err); + } finally { + client.release(); + pool.end(); + } +} + +run(); diff --git a/manager/scratch/delete_orphaned_absences.js b/manager/scratch/delete_orphaned_absences.js new file mode 100644 index 0000000..0815ba8 --- /dev/null +++ b/manager/scratch/delete_orphaned_absences.js @@ -0,0 +1,29 @@ +const { Pool } = require('pg'); + +const pool = new Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@postgres:5432/edumanager' +}); + +async function run() { + const client = await pool.connect(); + try { + const res = await client.query(` + DELETE FROM frequencias a + WHERE a.tipo = 'absence' AND a.id LIKE 'auto-abs-%' + AND EXISTS ( + SELECT 1 FROM frequencias p + WHERE p.tipo = 'presence' + AND p.aluno_id = a.aluno_id + AND (p.aula_id = a.aula_id OR DATE(p.data AT TIME ZONE 'UTC') = DATE(a.data AT TIME ZONE 'UTC')) + ) RETURNING id; + `); + console.log(`Deleted ${res.rowCount} orphaned absences.`); + } catch (err) { + console.error(err); + } finally { + client.release(); + pool.end(); + } +} + +run(); diff --git a/manager/scratch/delete_orphaned_absences2.cjs b/manager/scratch/delete_orphaned_absences2.cjs new file mode 100644 index 0000000..b0d6de1 --- /dev/null +++ b/manager/scratch/delete_orphaned_absences2.cjs @@ -0,0 +1,27 @@ +const { Pool } = require('pg'); + +const pool = new Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +async function run() { + const client = await pool.connect(); + try { + const res = await client.query(` + DELETE FROM frequencias a + WHERE a.tipo = 'absence' AND a.id LIKE 'auto-abs-%' + AND NOT EXISTS ( + SELECT 1 FROM school_data sd + WHERE jsonb_path_exists(sd.data, ('$.attendance[*] ? (@.id == "' || a.id || '")')::jsonpath) + ) RETURNING id; + `); + console.log(`Deleted ${res.rowCount} absences that are in SQL but NOT in JSON.`); + } catch (err) { + console.error(err); + } finally { + client.release(); + pool.end(); + } +} + +run(); diff --git a/manager/scratch/download_photos.js b/manager/scratch/download_photos.js new file mode 100644 index 0000000..8f1d30d --- /dev/null +++ b/manager/scratch/download_photos.js @@ -0,0 +1,61 @@ +import { S3Client, ListObjectsV2Command, GetObjectCommand } from '@aws-sdk/client-s3'; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const s3 = new S3Client({ + endpoint: 'https://storageedu.microtecinformaticacurso.com.br:443', + region: 'us-east-1', + credentials: { + accessKeyId: 'minioadmin', + secretAccessKey: 'MiniO2026!Seguro' + }, + forcePathStyle: true, + tls: false // Disable SSL verification for self-signed certs +}); + +process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; + +async function run() { + const destDir = path.join(__dirname, 'photos'); + if (!fs.existsSync(destDir)) { + fs.mkdirSync(destDir, { recursive: true }); + } + + try { + console.log('Listando objetos no bucket fotos-alunos...'); + const listCommand = new ListObjectsV2Command({ + Bucket: 'fotos-alunos' + }); + const listResponse = await s3.send(listCommand); + const objects = listResponse.Contents || []; + console.log(`Encontrados ${objects.length} objetos.`); + + for (const obj of objects) { + if (!obj.Key) continue; + console.log(`Baixando ${obj.Key}...`); + const getCommand = new GetObjectCommand({ + Bucket: 'fotos-alunos', + Key: obj.Key + }); + const getResponse = await s3.send(getCommand); + const stream = getResponse.Body; + if (stream) { + const destPath = path.join(destDir, obj.Key); + const fileStream = fs.createWriteStream(destPath); + // Convert web stream / readable stream to local file + const buffer = await stream.transformToByteArray(); + fs.writeFileSync(destPath, buffer); + console.log(`Salvo em ${destPath}`); + } + } + console.log('Download concluído!'); + } catch (err) { + console.error('Erro:', err); + } +} + +run(); diff --git a/manager/scratch/fix_face.cjs b/manager/scratch/fix_face.cjs new file mode 100644 index 0000000..c941865 --- /dev/null +++ b/manager/scratch/fix_face.cjs @@ -0,0 +1,16 @@ +const { Pool } = require('pg'); +const pool = new Pool({ connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' }); +async function run() { + const { rows } = await pool.query('SELECT data FROM school_data LIMIT 1'); + const students = rows[0].data.students || []; + let updated = 0; + for (const s of students) { + if (s.faceDescriptor && Array.isArray(s.faceDescriptor)) { + await pool.query('UPDATE alunos SET face_descriptor = $1 WHERE id = $2', [JSON.stringify(s.faceDescriptor), s.id]); + updated++; + } + } + console.log('Total alunos atualizados com face_descriptor:', updated); + await pool.end(); +} +run().catch(console.error); diff --git a/manager/scratch/inspect_jsonb.js b/manager/scratch/inspect_jsonb.js new file mode 100644 index 0000000..bcf4b0f --- /dev/null +++ b/manager/scratch/inspect_jsonb.js @@ -0,0 +1,52 @@ +import pg from 'pg'; + +const pool = new pg.Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +async function run() { + try { + console.log('Buscando school_data...'); + const { rows } = await pool.query('SELECT data FROM school_data WHERE id = 1'); + const data = rows[0]?.data; + if (!data) { + console.log('school_data não encontrado.'); + return; + } + + // Recursively search for keys or values containing "webp" or "fotos-alunos" + const foundPaths = []; + function search(obj, path = '') { + if (!obj) return; + if (typeof obj === 'string') { + if (obj.includes('webp') || obj.includes('fotos-alunos')) { + foundPaths.push({ path, value: obj }); + } + } else if (Array.isArray(obj)) { + obj.forEach((item, index) => search(item, `${path}[${index}]`)); + } else if (typeof obj === 'object') { + for (const key of Object.keys(obj)) { + search(obj[key], `${path}.${key}`); + } + } + } + + search(data); + + console.log('\n--- LINKS ENCONTRADOS NO JSONB ---'); + if (foundPaths.length === 0) { + console.log('Nenhum link encontrado.'); + } else { + foundPaths.forEach(p => { + console.log(`Caminho: ${p.path} | Valor: ${p.value}`); + }); + } + + } catch (err) { + console.error(err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/match_faces.js b/manager/scratch/match_faces.js new file mode 100644 index 0000000..5b3d1b9 --- /dev/null +++ b/manager/scratch/match_faces.js @@ -0,0 +1,117 @@ +import * as faceapi from '@vladmandic/face-api'; +import sharp from 'sharp'; +import pg from 'pg'; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +// Disable certificate verification for CDN download if needed +process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; + +const pool = new pg.Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +async function run() { + try { + // 1. Initialize face-api environment for Node + console.log('Inicializando face-api...'); + + // Tiny Face Detector, Face Landmark 68, and Face Recognition Nets + const MODEL_URL = 'https://cdn.jsdelivr.net/npm/@vladmandic/face-api/model/'; + console.log('Carregando modelos face-api do CDN...'); + await Promise.all([ + faceapi.nets.ssdMobilenetv1.loadFromUri(MODEL_URL), + faceapi.nets.faceLandmark68Net.loadFromUri(MODEL_URL), + faceapi.nets.faceRecognitionNet.loadFromUri(MODEL_URL) + ]); + console.log('Modelos carregados com sucesso!'); + + // 2. Fetch students and their face descriptors from DB + console.log('Buscando alunos do banco de dados...'); + const { rows: students } = await pool.query('SELECT id, nome, face_descriptor FROM alunos WHERE face_descriptor IS NOT NULL'); + console.log(`Encontrados ${students.length} alunos com biometria no banco.`); + + // 3. Read downloaded photos from disk + const photosDir = path.join(__dirname, 'photos'); + const photoFiles = fs.readdirSync(photosDir).filter(f => f.endsWith('.webp')); + console.log(`Encontradas ${photoFiles.length} fotos webp locais.`); + + const results = []; + + // 4. Process each photo, get its descriptor, and find best match + for (const file of photoFiles) { + const filePath = path.join(photosDir, file); + console.log(`Processando ${file}...`); + + // Use sharp to convert webp to raw RGB buffer for face-api tensor + const image = sharp(filePath); + const metadata = await image.metadata(); + const { data, info } = await image + .raw() + .toBuffer({ resolveWithObject: true }); + + // Create tensor from raw pixels + const tensor = faceapi.tf.tensor3d( + new Uint8Array(data), + [info.height, info.width, 3], + 'int32' + ); + + // Detect face and extract descriptor + const detection = await faceapi.detectSingleFace(tensor) + .withFaceLandmarks() + .withFaceDescriptor(); + + tensor.dispose(); + + if (!detection) { + console.warn(`Nenhum rosto detectado na foto ${file}`); + continue; + } + + const imgDescriptor = detection.descriptor; + + // Compare with all students using Euclidean distance + let bestMatch = null; + let minDistance = Infinity; + + for (const s of students) { + const dbDescriptorStr = typeof s.face_descriptor === 'string' + ? s.face_descriptor + : JSON.stringify(s.face_descriptor); + + const dbDescriptor = new Float32Array(JSON.parse(dbDescriptorStr)); + const distance = faceapi.euclideanDistance(imgDescriptor, dbDescriptor); + + if (distance < minDistance) { + minDistance = distance; + bestMatch = s; + } + } + + console.log(`Foto: ${file} | Melhor Match: ${bestMatch?.nome} | Distância: ${minDistance.toFixed(4)}`); + results.push({ + file, + studentId: bestMatch?.id, + studentName: bestMatch?.nome, + distance: minDistance + }); + } + + console.log('\n--- RESULTADO DE PROJEÇÃO DE CORRELAÇÃO DE BIOMETRIA ---'); + results.forEach(r => { + console.log(`Foto: ${r.file} -> Aluno: ${r.studentName} (ID: ${r.studentId}) | Distância: ${r.distance.toFixed(4)}`); + }); + + } catch (err) { + console.error('Erro na execução:', err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/photos/student_1776870119652_z0tdgp.webp b/manager/scratch/photos/student_1776870119652_z0tdgp.webp new file mode 100644 index 0000000000000000000000000000000000000000..6737edeeea24ae9453f4baae9bd74d57ef71dd90 GIT binary patch literal 29966 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 AqyPW_ literal 0 HcmV?d00001 diff --git a/manager/scratch/photos/student_1777139911929_21v6av.webp b/manager/scratch/photos/student_1777139911929_21v6av.webp new file mode 100644 index 0000000000000000000000000000000000000000..84662328076137b160d8b94089804ab077e25492 GIT binary patch literal 22732 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 literal 0 HcmV?d00001 diff --git a/manager/scratch/photos/student_1777139942925_aoxyls.webp b/manager/scratch/photos/student_1777139942925_aoxyls.webp new file mode 100644 index 0000000000000000000000000000000000000000..ba3ee689b3bbb7548f8e31fd426a9c3f2cfe2fed GIT binary patch literal 14156 zcmaKyQ6|7qm^!;Z>|LjTzKA5)tBFE;#NY-I2FAAR&c4Y!T8 z%YWwjkNszLuqL)DO8<_K{~Q{W>)|Jus;I;Ao2f`Gt2-0T0;N; z%#Huak>&va2*ChA%k2N;{^y$58#o&L*Xcn2MPO4?0N|k%0D#i~08r)t0BEiM8v7Ui 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 literal 0 HcmV?d00001 diff --git a/manager/scratch/photos/student_1777140008401_3966cd.webp b/manager/scratch/photos/student_1777140008401_3966cd.webp new file mode 100644 index 0000000000000000000000000000000000000000..c89f76fa2a38b5e4612889380e35ffe0c278621f GIT binary patch literal 15318 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 A1^@s6 literal 0 HcmV?d00001 diff --git a/manager/scratch/photos/student_1777140098875_tcan7k.webp b/manager/scratch/photos/student_1777140098875_tcan7k.webp new file mode 100644 index 0000000000000000000000000000000000000000..986222cb9388b0ec9c8b7de2f3e49ba3ed51ca36 GIT binary patch literal 16508 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 Te7#T<8Eddl$+$d|7XSbNIi-E^ literal 0 HcmV?d00001 diff --git a/manager/scratch/restore_and_link_students.js b/manager/scratch/restore_and_link_students.js new file mode 100644 index 0000000..21f3e35 --- /dev/null +++ b/manager/scratch/restore_and_link_students.js @@ -0,0 +1,176 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import pg from 'pg'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const pool = new pg.Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +const photoMapping = { + // 1. ANA CLARA DA SILVA NASCIMENTO (17:57:55) + 'e917ffe5-70d6-451e-9120-7692ec8d7024': '/storage/fotos-alunos/student_1777139875689_4l971l.webp', + + // 2. ANTÔNIA CERMILANE PEREIRA PINHEIRO (17:58:31) + 'b9a7ddee-e03f-411f-9ef2-d22629d38e35': '/storage/fotos-alunos/student_1777139911929_21v6av.webp', + + // 3. DOUGLAS EMANUEL DE SOUSA PEREIRA (17:59:02) + '0ab24299-f583-40eb-8812-d6005ebc50a8': '/storage/fotos-alunos/student_1777139942925_aoxyls.webp', + + // 4. EVILLA PINHEIRO DA SILVA BORGES (18:00:08) + '311709fb-68ab-4168-8684-887b5ec2d731': '/storage/fotos-alunos/student_1777140008401_3966cd.webp', + + // 5. GABRIELY CAETANO DA SILVA (18:00:38) + '0ef75207-3ab1-4524-b737-b543e804d3f0': '/storage/fotos-alunos/student_1777140038192_xntcja.webp', + + // 6. KARLA BIANCA PINHEIRO TRINDADE (18:01:06) + 'c7e2d021-52ab-4229-8550-1aa8549507b3': '/storage/fotos-alunos/student_1777140066701_dfzecd.webp', + + // 7. NAPOLEÃO DA SILVA CARDOSO (18:01:38) + '3653aea3-7e7e-49d6-b372-068863084a27': '/storage/fotos-alunos/student_1777140098875_tcan7k.webp', + + // 8. Sidney Gomes da silva (15:01) + '5a231b04-b95c-4026-ba37-bc7b8144f646': '/storage/fotos-alunos/student_1776870119652_z0tdgp.webp', + + // 9. MARIA LOHANNY ROQUE DA SILVA (May 2) + '05de4757-d36f-4de6-9e57-5792d13ad3e7': '/storage/fotos-alunos/student_1777743393187_rf50t.webp' +}; + +async function run() { + const backupPath = path.join(__dirname, '../backup_supabase_2026-04-19.json'); + console.log(`Lendo dados completos do backup original de: ${backupPath}`); + + if (!fs.existsSync(backupPath)) { + console.error('ERRO: Arquivo de backup original não encontrado!'); + process.exit(1); + } + + const raw = fs.readFileSync(backupPath, 'utf8'); + const backupData = JSON.parse(raw); + const backupStudents = backupData.students || []; + + try { + // 1. Atualizar registros individuais na tabela alunos + console.log('Atualizando a tabela "alunos" no PostgreSQL...'); + for (const bs of backupStudents) { + const mappedPhoto = photoMapping[bs.id]; + if (!mappedPhoto) continue; + + const birthDate = bs.birthDate ? bs.birthDate.split('T')[0] : null; + const rgIssueDate = bs.rgIssueDate ? bs.rgIssueDate.split('T')[0] : null; + const guardianBirthDate = bs.guardianBirthDate ? bs.guardianBirthDate.split('T')[0] : null; + const registrationDate = bs.registrationDate ? bs.registrationDate.split('T')[0] : null; + + const query = ` + UPDATE alunos + SET + rg = $1, + data_nascimento = $2, + rg_data_emissao = $3, + cep = $4, + rua = $5, + numero = $6, + bairro = $7, + cidade = $8, + estado = $9, + tem_responsavel = $10, + nome_responsavel = $11, + cpf_responsavel = $12, + telefone_responsavel = $13, + data_nascimento_responsavel = $14, + numero_matricula = $15, + data_matricula = $16, + modelo_contrato_id = $17, + foto_url = $18, + senha_portal = $19 + WHERE id = $20 + `; + + const values = [ + bs.rg || '', + birthDate, + rgIssueDate, + bs.addressZip || '', + bs.addressStreet || '', + bs.addressNumber || '', + bs.addressNeighborhood || '', + bs.addressCity || '', + bs.addressState || '', + bs.hasGuardian || false, + bs.guardianName || '', + bs.guardianCpf || '', + bs.guardianPhone || '', + guardianBirthDate, + bs.enrollmentNumber || null, + registrationDate, + bs.contractTemplateId || 'default-template', + mappedPhoto, + bs.portalPassword || null, + bs.id + ]; + + await pool.query(query, values); + console.log(`✅ [SQL] Restaurado e Vinculado: ${bs.name} (${bs.id}) -> ${mappedPhoto}`); + } + + // 2. Buscar, atualizar e salvar o espelho JSONB em school_data + console.log('\nSincronizando espelho JSONB na tabela "school_data"...'); + const { rows } = await pool.query('SELECT data FROM school_data WHERE id = 1'); + const schoolData = rows[0]?.data; + + if (!schoolData) { + console.error('ERRO: Registro do school_data com ID=1 não encontrado!'); + return; + } + + let updatedJsonCount = 0; + if (schoolData.students && Array.isArray(schoolData.students)) { + for (const s of schoolData.students) { + const bs = backupStudents.find(x => x.id === s.id); + const mappedPhoto = photoMapping[s.id]; + + if (bs && mappedPhoto) { + s.photo = mappedPhoto; + s.foto_url = mappedPhoto; + s.birthDate = bs.birthDate; + s.rg = bs.rg || ''; + s.rgIssueDate = bs.rgIssueDate; + s.addressZip = bs.addressZip || ''; + s.addressStreet = bs.addressStreet || ''; + s.addressNumber = bs.addressNumber || ''; + s.addressNeighborhood = bs.addressNeighborhood || ''; + s.addressCity = bs.addressCity || ''; + s.addressState = bs.addressState || ''; + s.hasGuardian = bs.hasGuardian || false; + s.guardianName = bs.guardianName || ''; + s.guardianCpf = bs.guardianCpf || ''; + s.guardianPhone = bs.guardianPhone || ''; + s.guardianBirthDate = bs.guardianBirthDate; + s.enrollmentNumber = bs.enrollmentNumber || null; + s.registrationDate = bs.registrationDate; + s.portalPassword = bs.portalPassword || null; + + updatedJsonCount++; + console.log(`✅ [JSONB] Atualizado no mirror: ${s.name} (${s.id})`); + } + } + + // Salvar de volta ao banco de dados usando COMMIT para persistir a gravação em modo leitura/gravação + await pool.query('COMMIT'); + await pool.query('BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED'); + await pool.query('UPDATE school_data SET data = $1 WHERE id = 1', [JSON.stringify(schoolData)]); + await pool.query('COMMIT'); + console.log(`\n🎉 Sincronização concluída! ${updatedJsonCount} registros atualizados com sucesso no JSONB.`); + } + + } catch (err) { + console.error('ERRO CRÍTICO DURANTE A RESTAURAÇÃO:', err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/restore_students.js b/manager/scratch/restore_students.js new file mode 100644 index 0000000..810f996 --- /dev/null +++ b/manager/scratch/restore_students.js @@ -0,0 +1,137 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import pg from 'pg'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +// Try local first (with SSH tunnel), then remote directly +const URLS = [ + 'postgresql://edumanager:EduManager2026!Seguro@127.0.0.1:5432/edumanager', + 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +]; + +async function run() { + const backupPath = path.join(__dirname, '../backup_supabase_2026-04-19_migrado.json'); + console.log(`Lendo backup de: ${backupPath}`); + + if (!fs.existsSync(backupPath)) { + console.error('ERRO: Arquivo de backup não encontrado!'); + process.exit(1); + } + + const raw = fs.readFileSync(backupPath, 'utf8'); + const backupData = JSON.parse(raw); + const students = backupData.students || []; + + console.log(`Encontrados ${students.length} alunos no arquivo de backup.`); + + let pool; + for (const url of URLS) { + try { + console.log(`Tentando conectar ao banco via: ${url.split('@')[1]}...`); + pool = new pg.Pool({ connectionString: url, connectionTimeoutMillis: 5000 }); + await pool.query('SELECT NOW()'); + console.log('Conectado com sucesso!'); + break; + } catch (err) { + console.warn(`Falha ao conectar via ${url.split('@')[1]}: ${err.message}`); + pool = null; + } + } + + if (!pool) { + console.error('ERRO: Não foi possível conectar ao banco de dados com nenhuma das URLs.'); + process.exit(1); + } + + let updatedCount = 0; + let notFoundCount = 0; + + try { + for (const s of students) { + // Formatar datas para o padrão YYYY-MM-DD + const birthDate = s.birthDate ? s.birthDate.split('T')[0] : null; + const rgIssueDate = s.rgIssueDate ? s.rgIssueDate.split('T')[0] : null; + const guardianBirthDate = s.guardianBirthDate ? s.guardianBirthDate.split('T')[0] : null; + const registrationDate = s.registrationDate ? s.registrationDate.split('T')[0] : null; + + // Verificar se o aluno existe + const { rows } = await pool.query('SELECT id, nome FROM alunos WHERE id = $1', [s.id]); + + if (rows.length === 0) { + console.log(`Aluno não encontrado no banco SQL (Será ignorado): ${s.name} (${s.id})`); + notFoundCount++; + continue; + } + + // Executar o UPDATE dos dados restaurados + const query = ` + UPDATE alunos + SET + rg = $1, + data_nascimento = $2, + rg_data_emissao = $3, + cep = $4, + rua = $5, + numero = $6, + bairro = $7, + cidade = $8, + estado = $9, + tem_responsavel = $10, + nome_responsavel = $11, + cpf_responsavel = $12, + telefone_responsavel = $13, + data_nascimento_responsavel = $14, + numero_matricula = $15, + data_matricula = $16, + modelo_contrato_id = $17, + foto_url = $18, + senha_portal = $19, + face_descriptor = $20 + WHERE id = $21 + `; + + const values = [ + s.rg || '', + birthDate, + rgIssueDate, + s.addressZip || '', + s.addressStreet || '', + s.addressNumber || '', + s.addressNeighborhood || '', + s.addressCity || '', + s.addressState || '', + s.hasGuardian || false, + s.guardianName || '', + s.guardianCpf || '', + s.guardianPhone || '', + guardianBirthDate, + s.enrollmentNumber || null, + registrationDate, + s.contractTemplateId || 'default-template', + s.photo || '', + s.portalPassword || null, + s.faceDescriptor ? JSON.stringify(s.faceDescriptor) : null, + s.id + ]; + + await pool.query(query, values); + console.log(`Restaurado aluno: ${s.name} (${s.id})`); + updatedCount++; + } + + console.log('\n--- RELATÓRIO DE RESTAURAÇÃO ---'); + console.log(`Alunos atualizados com sucesso no SQL: ${updatedCount}`); + console.log(`Alunos do backup não encontrados no SQL: ${notFoundCount}`); + console.log('--------------------------------\n'); + + } catch (err) { + console.error('ERRO CRÍTICO DURANTE A RESTAURAÇÃO:', err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/search_db.js b/manager/scratch/search_db.js new file mode 100644 index 0000000..364de09 --- /dev/null +++ b/manager/scratch/search_db.js @@ -0,0 +1,64 @@ +import pg from 'pg'; + +const pool = new pg.Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' +}); + +const files = [ + 'student_1777139875689_4l971l.webp', + 'student_1777139911929_21v6av.webp', + 'student_1777139942925_aoxyls.webp', + 'student_1777140008401_3966cd.webp', + 'student_1777140038192_xntcja.webp', + 'student_1777140066701_dfzecd.webp', + 'student_1777140098875_tcan7k.webp', + 'student_1777743393187_rf50t.webp' +]; + +async function run() { + try { + const { rows: tables } = await pool.query( + "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'" + ); + + console.log(`Buscando em ${tables.length} tabelas no banco...`); + + for (const t of tables) { + const tableName = t.table_name; + const { rows: cols } = await pool.query( + "SELECT column_name, data_type FROM information_schema.columns WHERE table_name = $1", + [tableName] + ); + + for (const c of cols) { + if (['text', 'character varying', 'jsonb'].includes(c.data_type)) { + for (const f of files) { + try { + const queryStr = `SELECT id FROM ${tableName} WHERE "${c.column_name}"::text LIKE $1`; + const { rows: matches } = await pool.query(queryStr, [`%${f}%`]); + if (matches.length > 0) { + console.log(`🔍 [ENCONTRADO] Arquivo ${f} na tabela [${tableName}], coluna [${c.column_name}]! IDs:`, matches.map(m => m.id)); + } + } catch (e) { + // Ignorar erros de colunas sem coluna 'id' + try { + const queryStr = `SELECT count(*) FROM ${tableName} WHERE "${c.column_name}"::text LIKE $1`; + const { rows: matches } = await pool.query(queryStr, [`%${f}%`]); + if (parseInt(matches[0].count) > 0) { + console.log(`🔍 [ENCONTRADO] Arquivo ${f} na tabela [${tableName}], coluna [${c.column_name}] (Count: ${matches[0].count})`); + } + } catch (e2) {} + } + } + } + } + } + console.log('Busca finalizada.'); + } catch (err) { + console.error('Erro na busca:', err); + } finally { + await pool.end(); + } +} + +run(); diff --git a/manager/scratch/update_alunos_db.cjs b/manager/scratch/update_alunos_db.cjs new file mode 100644 index 0000000..c42f6e4 --- /dev/null +++ b/manager/scratch/update_alunos_db.cjs @@ -0,0 +1,36 @@ +const { Pool } = require('pg'); + +const pool = new Pool({ + connectionString: 'postgresql://edumanager:EduManager2026!Seguro@localhost:5432/edumanager' +}); + +async function run() { + try { + const res = await pool.query(` + UPDATE alunos a + SET + data_nascimento = (s.elem->>'data_nascimento')::timestamp, + rg = s.elem->>'rg', + rua = s.elem->>'rua', + numero = s.elem->>'numero', + bairro = s.elem->>'bairro', + cidade = s.elem->>'cidade', + estado = s.elem->>'estado', + cep = s.elem->>'cep' + FROM ( + SELECT jsonb_array_elements(data->'students') as elem + FROM school_data + WHERE id = 1 + ) s + WHERE a.id = s.elem->>'id' + RETURNING a.nome; + `); + console.log(`Sucesso! ${res.rowCount} alunos atualizados diretamente no PostgreSQL.`); + } catch (error) { + console.error('Erro na migração:', error); + } finally { + pool.end(); + } +} + +run(); diff --git a/manager/scratch/update_gemini.js b/manager/scratch/update_gemini.js new file mode 100644 index 0000000..d74d541 --- /dev/null +++ b/manager/scratch/update_gemini.js @@ -0,0 +1,18 @@ +import fs from 'fs'; + +const filePath = '../GEMINI.md'; +let content = fs.readFileSync(filePath, 'utf-8'); + +const newLine = "44. **Biometria SQL-First Completa**: A biometria (faceDescriptor) e todo o fluxo de cadastro e manipulação de alunos foram migrados para persistência nativa 100% SQL-First no PostgreSQL via API `/api/alunos`. O frontend `Students.tsx` foi totalmente refatorado, eliminando dependências de escrita direta em `school_data.json` no cliente, enquanto o backend executa a sincronização reversa automática para compatibilidade."; + +// Find any line starting with "4 4 . * * B i o m e t r i a" +const lines = content.split(/\r?\n/); +const updatedLines = lines.map(line => { + if (line.includes("4 4 . * * B i o m e t r i a")) { + return newLine; + } + return line; +}); + +fs.writeFileSync(filePath, updatedLines.join('\n'), 'utf-8'); +console.log("GEMINI.md updated successfully!"); diff --git a/manager/services/database.js b/manager/services/database.js index 5b217b7..ac85fd4 100644 --- a/manager/services/database.js +++ b/manager/services/database.js @@ -641,6 +641,20 @@ export async function deleteCategoriaFuncionario(id) { // ============================================================ // ALUNOS (FASE 4) // ============================================================ +function formatDateOnly(val) { + if (!val) return null; + if (val instanceof Date) { + const year = val.getFullYear(); + const month = String(val.getMonth() + 1).padStart(2, '0'); + const day = String(val.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; + } + if (typeof val === 'string') { + return val.substring(0, 10); + } + return String(val).substring(0, 10); +} + export async function getAlunos() { const result = await pool.query("SELECT * FROM alunos ORDER BY nome ASC"); return result.rows.map(r => ({ @@ -649,17 +663,17 @@ export async function getAlunos() { name: r.nome, email: r.email, phone: r.telefone, - birthDate: r.data_nascimento, + birthDate: formatDateOnly(r.data_nascimento), cpf: r.cpf, rg: r.rg, - rgIssueDate: r.rg_data_emissao, + rgIssueDate: formatDateOnly(r.rg_data_emissao), guardianName: r.nome_responsavel, guardianPhone: r.telefone_responsavel, guardianCpf: r.cpf_responsavel, - guardianBirthDate: r.data_nascimento_responsavel, + guardianBirthDate: formatDateOnly(r.data_nascimento_responsavel), classId: r.turma_id, status: r.status, - registrationDate: r.data_matricula, + registrationDate: formatDateOnly(r.data_matricula), photo: r.foto_url, addressZip: r.cep, addressStreet: r.rua, @@ -673,59 +687,72 @@ export async function getAlunos() { enrollmentNumber: r.numero_matricula, portalPassword: r.senha_portal, cancellationReason: r.motivo_cancelamento, - faceDescriptor: r.face_descriptor + faceDescriptor: r.face_descriptor, + sexo: r.sexo })); } export async function insertAluno(a) { + const birthDate = (a.data_nascimento || a.birthDate) ? formatDateOnly(a.data_nascimento || a.birthDate) : null; + const rgIssueDate = (a.rg_data_emissao || a.rgIssueDate) ? formatDateOnly(a.rg_data_emissao || a.rgIssueDate) : null; + const guardianBirthDate = (a.data_nascimento_responsavel || a.guardianBirthDate) ? formatDateOnly(a.data_nascimento_responsavel || a.guardianBirthDate) : null; + const registrationDate = (a.data_matricula || a.registrationDate) ? formatDateOnly(a.data_matricula || a.registrationDate) : null; + const result = await pool.query( `INSERT INTO alunos ( id, nome, email, telefone, data_nascimento, cpf, rg, rg_data_emissao, nome_responsavel, telefone_responsavel, cpf_responsavel, data_nascimento_responsavel, turma_id, status, data_matricula, foto_url, cep, rua, numero, bairro, cidade, estado, desconto, tem_responsavel, modelo_contrato_id, numero_matricula, senha_portal, - motivo_cancelamento, face_descriptor + motivo_cancelamento, face_descriptor, sexo ) VALUES ( - $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29 + $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30 ) RETURNING *`, [ - a.id, a.nome || a.name, a.email || '', a.telefone || a.phone || '', a.data_nascimento || a.birthDate || null, - a.cpf || '', a.rg || '', a.rg_data_emissao || a.rgIssueDate || null, + a.id, a.nome || a.name, a.email || '', a.telefone || a.phone || '', birthDate, + a.cpf || '', a.rg || '', rgIssueDate, a.nome_responsavel || a.guardianName || '', a.telefone_responsavel || a.guardianPhone || '', - a.cpf_responsavel || a.guardianCpf || '', a.data_nascimento_responsavel || a.guardianBirthDate || null, - a.turma_id || a.classId || null, a.status || 'active', a.data_matricula || a.registrationDate || null, - a.foto_url || a.photo || '', a.cep || a.addressZip || '', a.rua || a.addressStreet || '', - a.numero || a.addressNumber || '', a.bairro || a.addressNeighborhood || '', a.cidade || a.addressCity || '', - a.estado || a.addressState || '', a.desconto || a.discount || 0, a.tem_responsavel !== undefined ? a.tem_responsavel : (a.hasGuardian || false), - a.modelo_contrato_id || a.contractTemplateId || null, a.numero_matricula || a.enrollmentNumber || null, - a.senha_portal || a.portalPassword || null, a.motivo_cancelamento || a.cancellationReason || null, - a.faceDescriptor ? JSON.stringify(a.faceDescriptor) : null - ] - ); - return result.rows[0]; -} - -export async function updateAluno(id, a) { - const result = await pool.query( - `UPDATE alunos SET - nome=$1, email=$2, telefone=$3, data_nascimento=$4, cpf=$5, rg=$6, rg_data_emissao=$7, - nome_responsavel=$8, telefone_responsavel=$9, cpf_responsavel=$10, data_nascimento_responsavel=$11, - turma_id=$12, status=$13, data_matricula=$14, foto_url=$15, cep=$16, rua=$17, numero=$18, bairro=$19, cidade=$20, estado=$21, - desconto=$22, tem_responsavel=$23, modelo_contrato_id=$24, numero_matricula=$25, senha_portal=$26, - motivo_cancelamento=$27, face_descriptor=COALESCE($28, face_descriptor) - WHERE id = $29 RETURNING *`, - [ - a.nome || a.name, a.email || '', a.telefone || a.phone || '', a.data_nascimento || a.birthDate || null, - a.cpf || '', a.rg || '', a.rg_data_emissao || a.rgIssueDate || null, - a.nome_responsavel || a.guardianName || '', a.telefone_responsavel || a.guardianPhone || '', - a.cpf_responsavel || a.guardianCpf || '', a.data_nascimento_responsavel || a.guardianBirthDate || null, - a.turma_id || a.classId || null, a.status || 'active', a.data_matricula || a.registrationDate || null, + a.cpf_responsavel || a.guardianCpf || '', guardianBirthDate, + a.turma_id || a.classId || null, a.status || 'active', registrationDate, a.foto_url || a.photo || '', a.cep || a.addressZip || '', a.rua || a.addressStreet || '', a.numero || a.addressNumber || '', a.bairro || a.addressNeighborhood || '', a.cidade || a.addressCity || '', a.estado || a.addressState || '', a.desconto || a.discount || 0, a.tem_responsavel !== undefined ? a.tem_responsavel : (a.hasGuardian || false), a.modelo_contrato_id || a.contractTemplateId || null, a.numero_matricula || a.enrollmentNumber || null, a.senha_portal || a.portalPassword || null, a.motivo_cancelamento || a.cancellationReason || null, a.faceDescriptor ? JSON.stringify(a.faceDescriptor) : null, + a.sexo || null + ] + ); + return result.rows[0]; +} + +export async function updateAluno(id, a) { + const birthDate = (a.data_nascimento || a.birthDate) ? formatDateOnly(a.data_nascimento || a.birthDate) : null; + const rgIssueDate = (a.rg_data_emissao || a.rgIssueDate) ? formatDateOnly(a.rg_data_emissao || a.rgIssueDate) : null; + const guardianBirthDate = (a.data_nascimento_responsavel || a.guardianBirthDate) ? formatDateOnly(a.data_nascimento_responsavel || a.guardianBirthDate) : null; + const registrationDate = (a.data_matricula || a.registrationDate) ? formatDateOnly(a.data_matricula || a.registrationDate) : null; + + const result = await pool.query( + `UPDATE alunos SET + nome=$1, email=$2, telefone=$3, data_nascimento=$4, cpf=$5, rg=$6, rg_data_emissao=$7, + nome_responsavel=$8, telefone_responsavel=$9, cpf_responsavel=$10, data_nascimento_responsavel=$11, + turma_id=$12, status=$13, data_matricula=$14, foto_url=$15, cep=$16, rua=$17, numero=$18, bairro=$19, cidade=$20, estado=$21, + desconto=$22, tem_responsavel=$23, modelo_contrato_id=$24, numero_matricula=$25, senha_portal=$26, + motivo_cancelamento=$27, face_descriptor=COALESCE($28, face_descriptor), sexo=$29 + WHERE id = $30 RETURNING *`, + [ + a.nome || a.name, a.email || '', a.telefone || a.phone || '', birthDate, + a.cpf || '', a.rg || '', rgIssueDate, + a.nome_responsavel || a.guardianName || '', a.telefone_responsavel || a.guardianPhone || '', + a.cpf_responsavel || a.guardianCpf || '', guardianBirthDate, + a.turma_id || a.classId || null, a.status || 'active', registrationDate, + a.foto_url || a.photo || '', a.cep || a.addressZip || '', a.rua || a.addressStreet || '', + a.numero || a.addressNumber || '', a.bairro || a.addressNeighborhood || '', a.cidade || a.addressCity || '', + a.estado || a.addressState || '', a.desconto || a.discount || 0, a.tem_responsavel !== undefined ? a.tem_responsavel : (a.hasGuardian || false), + a.modelo_contrato_id || a.contractTemplateId || null, a.numero_matricula || a.enrollmentNumber || null, + a.senha_portal || a.portalPassword || null, a.motivo_cancelamento || a.cancellationReason || null, + a.faceDescriptor ? JSON.stringify(a.faceDescriptor) : null, + a.sexo || null, id ] ); @@ -1146,8 +1173,8 @@ export async function syncJsonToRelationalTables() { id, nome, email, telefone, data_nascimento, cpf, rg, rg_data_emissao, nome_responsavel, telefone_responsavel, cpf_responsavel, data_nascimento_responsavel, turma_id, status, data_matricula, foto_url, cep, rua, numero, bairro, cidade, estado, - desconto, tem_responsavel, modelo_contrato_id, numero_matricula, senha_portal, face_descriptor - ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28) + desconto, tem_responsavel, modelo_contrato_id, numero_matricula, senha_portal, face_descriptor, sexo + ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29) ON CONFLICT (id) DO UPDATE SET nome = EXCLUDED.nome, email = EXCLUDED.email, telefone = EXCLUDED.telefone, data_nascimento = EXCLUDED.data_nascimento, cpf = EXCLUDED.cpf, rg = EXCLUDED.rg, rg_data_emissao = EXCLUDED.rg_data_emissao, @@ -1158,14 +1185,16 @@ export async function syncJsonToRelationalTables() { bairro = EXCLUDED.bairro, cidade = EXCLUDED.cidade, estado = EXCLUDED.estado, desconto = EXCLUDED.desconto, tem_responsavel = EXCLUDED.tem_responsavel, modelo_contrato_id = EXCLUDED.modelo_contrato_id, numero_matricula = EXCLUDED.numero_matricula, - senha_portal = EXCLUDED.senha_portal, face_descriptor = COALESCE(EXCLUDED.face_descriptor, alunos.face_descriptor)`, + senha_portal = EXCLUDED.senha_portal, face_descriptor = COALESCE(EXCLUDED.face_descriptor, alunos.face_descriptor), + sexo = EXCLUDED.sexo`, [ s.id, s.name || s.nome, s.email || '', s.phone || s.telefone || '', s.birthDate || s.data_nascimento || null, s.cpf || '', s.rg || '', s.rgIssueDate || s.rg_data_emissao || null, s.guardianName || s.nome_responsavel || '', s.guardianPhone || s.telefone_responsavel || '', s.guardianCpf || s.cpf_responsavel || '', s.guardianBirthDate || s.data_nascimento_responsavel || null, s.classId || s.turma_id || null, s.status || 'active', s.registrationDate || s.data_matricula || null, s.photo || s.foto_url || '', s.addressZip || s.cep || '', s.addressStreet || s.rua || '', s.addressNumber || s.numero || '', s.addressNeighborhood || s.bairro || '', s.addressCity || s.cidade || '', s.addressState || s.estado || '', s.discount || s.desconto || 0, s.hasGuardian !== undefined ? s.hasGuardian : (s.tem_responsavel || false), s.contractTemplateId || s.modelo_contrato_id || null, s.enrollmentNumber || s.numero_matricula || null, s.portalPassword || s.senha_portal || null, - s.faceDescriptor ? JSON.stringify(s.faceDescriptor) : null + s.faceDescriptor ? JSON.stringify(s.faceDescriptor) : null, + s.sexo || null ] ); } diff --git a/manager/tsconfig.json b/manager/tsconfig.json index 2c6eed5..bc371ca 100644 --- a/manager/tsconfig.json +++ b/manager/tsconfig.json @@ -25,5 +25,10 @@ }, "allowImportingTsExtensions": true, "noEmit": true - } + }, + "exclude": [ + "node_modules", + "scratch", + "dist" + ] } \ No newline at end of file diff --git a/manager/types.ts b/manager/types.ts index 93ee069..7b2db39 100644 --- a/manager/types.ts +++ b/manager/types.ts @@ -51,6 +51,7 @@ export interface Student { contractTemplateId?: string; // Vínculo com o modelo de contrato enrollmentNumber?: string; // Número de matrícula (login do portal do aluno) portalPassword?: string; // Senha do portal do aluno (padrão: 6 primeiros dígitos do CPF) + sexo?: string; } export interface Class { diff --git a/portal/src/pages/Financeiro.tsx b/portal/src/pages/Financeiro.tsx index e77a463..0df5b03 100644 --- a/portal/src/pages/Financeiro.tsx +++ b/portal/src/pages/Financeiro.tsx @@ -387,7 +387,7 @@ export default function Financeiro() {

Valor Pago: - {formatCurrency(getEffectiveValue(receiptPayment))} + {formatCurrency(getDisplayValue(receiptPayment))}
Data de Vencimento: diff --git a/portal/src/pages/Frequencia.tsx b/portal/src/pages/Frequencia.tsx index de9b8ba..5743380 100644 --- a/portal/src/pages/Frequencia.tsx +++ b/portal/src/pages/Frequencia.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from 'react'; import { useAuth } from '../context/AuthContext'; -import { CalendarCheck, CheckCircle2, XCircle, FileText, Send, X, Loader2, AlertTriangle, ChevronDown, Clock } from 'lucide-react'; +import { CalendarCheck, CheckCircle2, XCircle, FileText, Send, X, Loader2, AlertTriangle, ChevronDown, Clock, AlertCircle } from 'lucide-react'; import type { Attendance, Lesson } from '../types'; import { getLessonTimeStatus, getNormalizedDate, isLessonWithinJustificationWindow, parseLessonDateTime } from '../lib/lessonUtils'; import { useRealTimeDate } from '../hooks/useRealTimeDate';