Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
Backend: - Fix email verification and password recovery services - Fix exercise submission and student progress services Frontend: - Update missions, password, and profile API services - Fix ExerciseContentRenderer component Docs & Scripts: - Add SSL/Certbot deployment guide - Add quick deployment guide - Database scripts for testing and validations - Migration and homologation reports - Functions inventory documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
220 lines
7.9 KiB
SQL
220 lines
7.9 KiB
SQL
-- ============================================================================
|
|
-- VALIDACIONES RAPIDAS POST-RECREACION DE BASE DE DATOS
|
|
-- Fecha: 2025-11-24
|
|
-- Database: gamilit_platform
|
|
-- ============================================================================
|
|
--
|
|
-- Este archivo contiene queries SQL para validar rapidamente la integridad
|
|
-- de la base de datos despues de una recreacion.
|
|
--
|
|
-- Uso:
|
|
-- psql -h localhost -U gamilit_user -d gamilit_platform -f VALIDACIONES-RAPIDAS-POST-RECREACION.sql
|
|
-- ============================================================================
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 1: CONTEO DE SCHEMAS'
|
|
\echo '============================================================================'
|
|
SELECT count(*) as total_schemas
|
|
FROM information_schema.schemata
|
|
WHERE schema_name NOT IN ('pg_catalog', 'information_schema', 'pg_toast');
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 2: CONTEO DE TABLAS POR SCHEMA'
|
|
\echo '============================================================================'
|
|
SELECT table_schema, count(*) as tables
|
|
FROM information_schema.tables
|
|
WHERE table_schema NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
|
|
AND table_type = 'BASE TABLE'
|
|
GROUP BY table_schema
|
|
ORDER BY table_schema;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 3: CONTEO DE FUNCIONES'
|
|
\echo '============================================================================'
|
|
SELECT count(*) as total_functions
|
|
FROM information_schema.routines
|
|
WHERE routine_schema NOT IN ('pg_catalog', 'information_schema');
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 4: CONTEO DE TRIGGERS'
|
|
\echo '============================================================================'
|
|
SELECT count(DISTINCT trigger_name) as total_triggers
|
|
FROM information_schema.triggers;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 5: RLS POLICIES EN GAMIFICATION_SYSTEM.NOTIFICATIONS'
|
|
\echo '============================================================================'
|
|
SELECT policyname, cmd
|
|
FROM pg_policies
|
|
WHERE tablename = 'notifications'
|
|
AND schemaname = 'gamification_system'
|
|
ORDER BY policyname;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 6: RLS POLICIES EN STUDENT_INTERVENTION_ALERTS'
|
|
\echo '============================================================================'
|
|
SELECT policyname, cmd
|
|
FROM pg_policies
|
|
WHERE tablename = 'student_intervention_alerts'
|
|
AND schemaname = 'progress_tracking'
|
|
ORDER BY policyname;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 7: CONTEO DE USUARIOS POR ROL'
|
|
\echo '============================================================================'
|
|
SELECT
|
|
role,
|
|
count(*) as total
|
|
FROM auth_management.profiles
|
|
GROUP BY role
|
|
ORDER BY role;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 8: MODULOS EDUCATIVOS'
|
|
\echo '============================================================================'
|
|
SELECT
|
|
id,
|
|
title,
|
|
status,
|
|
(SELECT count(*) FROM educational_content.exercises e WHERE e.module_id = m.id) as ejercicios
|
|
FROM educational_content.modules m
|
|
ORDER BY title;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 9: RANGOS MAYA'
|
|
\echo '============================================================================'
|
|
SELECT
|
|
rank_name,
|
|
display_name,
|
|
min_xp_required,
|
|
max_xp_threshold,
|
|
ml_coins_bonus,
|
|
is_active
|
|
FROM gamification_system.maya_ranks
|
|
ORDER BY min_xp_required;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 10: USER STATS INICIALIZADOS'
|
|
\echo '============================================================================'
|
|
SELECT
|
|
count(*) as total_users,
|
|
count(*) FILTER (WHERE total_xp > 0) as con_xp,
|
|
count(*) FILTER (WHERE ml_coins > 0) as con_coins,
|
|
sum(total_xp)::bigint as total_xp_sistema,
|
|
sum(ml_coins)::bigint as total_coins_sistema
|
|
FROM gamification_system.user_stats;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 11: MODULE PROGRESS INICIALIZADO'
|
|
\echo '============================================================================'
|
|
SELECT
|
|
count(*) as total_records,
|
|
count(DISTINCT user_id) as usuarios,
|
|
count(DISTINCT module_id) as modulos,
|
|
count(*) FILTER (WHERE status = 'completed') as completados,
|
|
count(*) FILTER (WHERE status = 'in_progress') as en_progreso,
|
|
count(*) FILTER (WHERE status = 'not_started') as no_iniciados
|
|
FROM progress_tracking.module_progress;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 12: SOCIAL FEATURES'
|
|
\echo '============================================================================'
|
|
SELECT 'Schools' as tipo, count(*)::text as total FROM social_features.schools
|
|
UNION ALL
|
|
SELECT 'Classrooms', count(*)::text FROM social_features.classrooms
|
|
UNION ALL
|
|
SELECT 'Teacher-Classroom Links', count(*)::text FROM social_features.teacher_classrooms;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 13: RESUMEN DE OBJETOS POR SCHEMA'
|
|
\echo '============================================================================'
|
|
SELECT
|
|
s.schema_name,
|
|
COALESCE(t.tables, 0) as tables,
|
|
COALESCE(v.views, 0) as views,
|
|
COALESCE(f.functions, 0) as functions,
|
|
COALESCE(tr.triggers, 0) as triggers,
|
|
COALESCE(p.policies, 0) as rls_policies
|
|
FROM (
|
|
SELECT schema_name
|
|
FROM information_schema.schemata
|
|
WHERE schema_name NOT IN ('pg_catalog', 'information_schema', 'pg_toast', 'pg_temp_3', 'pg_toast_temp_3')
|
|
) s
|
|
LEFT JOIN (
|
|
SELECT table_schema, count(*) as tables
|
|
FROM information_schema.tables
|
|
WHERE table_type = 'BASE TABLE'
|
|
GROUP BY table_schema
|
|
) t ON s.schema_name = t.table_schema
|
|
LEFT JOIN (
|
|
SELECT table_schema, count(*) as views
|
|
FROM information_schema.views
|
|
GROUP BY table_schema
|
|
) v ON s.schema_name = v.table_schema
|
|
LEFT JOIN (
|
|
SELECT routine_schema, count(*) as functions
|
|
FROM information_schema.routines
|
|
GROUP BY routine_schema
|
|
) f ON s.schema_name = f.routine_schema
|
|
LEFT JOIN (
|
|
SELECT trigger_schema, count(DISTINCT trigger_name) as triggers
|
|
FROM information_schema.triggers
|
|
GROUP BY trigger_schema
|
|
) tr ON s.schema_name = tr.trigger_schema
|
|
LEFT JOIN (
|
|
SELECT schemaname, count(*) as policies
|
|
FROM pg_policies
|
|
GROUP BY schemaname
|
|
) p ON s.schema_name = p.schemaname
|
|
WHERE s.schema_name IN (
|
|
'admin_dashboard',
|
|
'audit_logging',
|
|
'auth',
|
|
'auth_management',
|
|
'communication',
|
|
'content_management',
|
|
'educational_content',
|
|
'gamification_system',
|
|
'gamilit',
|
|
'lti_integration',
|
|
'notifications',
|
|
'progress_tracking',
|
|
'social_features',
|
|
'system_configuration'
|
|
)
|
|
ORDER BY s.schema_name;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION 14: TABLAS CON RLS HABILITADO'
|
|
\echo '============================================================================'
|
|
SELECT
|
|
schemaname,
|
|
tablename,
|
|
rowsecurity as rls_enabled
|
|
FROM pg_tables
|
|
WHERE schemaname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
|
|
AND rowsecurity = true
|
|
ORDER BY schemaname, tablename;
|
|
|
|
\echo ''
|
|
\echo '============================================================================'
|
|
\echo 'VALIDACION COMPLETA'
|
|
\echo '============================================================================'
|
|
\echo 'Si todas las validaciones anteriores se ejecutaron sin errores,'
|
|
\echo 'la base de datos esta correctamente recreada y operacional.'
|
|
\echo ''
|