- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
135 lines
4.1 KiB
Bash
Executable File
135 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# =====================================================
|
|
# Script: verify-missions-status.sh
|
|
# Description: Verifica el estado de las misiones en la base de datos
|
|
# Author: Database-Agent
|
|
# Created: 2025-11-24
|
|
# =====================================================
|
|
|
|
set -e
|
|
|
|
# Colores para output
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo -e "${BLUE}VERIFICACIÓN DE MISIONES - GAMILIT${NC}"
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo ""
|
|
|
|
# Leer credenciales
|
|
DB_USER="gamilit_user"
|
|
DB_NAME="gamilit_platform"
|
|
DB_HOST="localhost"
|
|
|
|
# Verificar si existe el archivo de credenciales
|
|
if [ -f "database-credentials-dev.txt" ]; then
|
|
DB_PASSWORD=$(grep "Password:" database-credentials-dev.txt | awk '{print $2}')
|
|
else
|
|
echo -e "${YELLOW}⚠️ No se encontró archivo de credenciales${NC}"
|
|
echo "Por favor ingresa la contraseña de la base de datos:"
|
|
read -s DB_PASSWORD
|
|
fi
|
|
|
|
export PGPASSWORD="$DB_PASSWORD"
|
|
|
|
echo -e "${GREEN}1. RESUMEN GENERAL${NC}"
|
|
echo "-------------------------------------------"
|
|
psql -U "$DB_USER" -d "$DB_NAME" -h "$DB_HOST" -c "
|
|
SELECT
|
|
COUNT(*) as total_missions,
|
|
COUNT(DISTINCT user_id) as unique_users,
|
|
SUM(CASE WHEN mission_type = 'daily' THEN 1 ELSE 0 END) as daily_missions,
|
|
SUM(CASE WHEN mission_type = 'weekly' THEN 1 ELSE 0 END) as weekly_missions
|
|
FROM gamification_system.missions;
|
|
"
|
|
|
|
echo ""
|
|
echo -e "${GREEN}2. USUARIOS CON Y SIN MISIONES${NC}"
|
|
echo "-------------------------------------------"
|
|
psql -U "$DB_USER" -d "$DB_NAME" -h "$DB_HOST" -c "
|
|
SELECT
|
|
CASE
|
|
WHEN email LIKE '%@gamilit.com' THEN 'Test Users'
|
|
ELSE 'Production Users'
|
|
END as user_type,
|
|
COUNT(*) as total_users,
|
|
SUM(CASE WHEN has_missions THEN 1 ELSE 0 END) as with_missions,
|
|
SUM(CASE WHEN NOT has_missions THEN 1 ELSE 0 END) as without_missions
|
|
FROM (
|
|
SELECT
|
|
p.email,
|
|
EXISTS (SELECT 1 FROM gamification_system.missions m WHERE m.user_id = p.id) as has_missions
|
|
FROM auth_management.profiles p
|
|
) subq
|
|
GROUP BY user_type
|
|
ORDER BY user_type;
|
|
"
|
|
|
|
echo ""
|
|
echo -e "${GREEN}3. DISTRIBUCIÓN DE MISIONES POR USUARIO${NC}"
|
|
echo "-------------------------------------------"
|
|
psql -U "$DB_USER" -d "$DB_NAME" -h "$DB_HOST" -c "
|
|
SELECT
|
|
p.email,
|
|
p.role,
|
|
COUNT(m.id) as total_missions,
|
|
SUM(CASE WHEN m.mission_type = 'daily' THEN 1 ELSE 0 END) as daily,
|
|
SUM(CASE WHEN m.mission_type = 'weekly' THEN 1 ELSE 0 END) as weekly,
|
|
CASE
|
|
WHEN COUNT(m.id) = 0 THEN '❌ Sin misiones'
|
|
WHEN COUNT(m.id) = 8 THEN '✅ OK (8)'
|
|
WHEN COUNT(m.id) > 8 THEN '⚠️ Duplicadas (' || COUNT(m.id) || ')'
|
|
ELSE '⚠️ Incompletas (' || COUNT(m.id) || ')'
|
|
END as status
|
|
FROM auth_management.profiles p
|
|
LEFT JOIN gamification_system.missions m ON p.id = m.user_id
|
|
GROUP BY p.email, p.role
|
|
ORDER BY
|
|
CASE WHEN p.email LIKE '%@gamilit.com' THEN 0 ELSE 1 END,
|
|
p.email;
|
|
"
|
|
|
|
echo ""
|
|
echo -e "${GREEN}4. MISIONES POR TEMPLATE${NC}"
|
|
echo "-------------------------------------------"
|
|
psql -U "$DB_USER" -d "$DB_NAME" -h "$DB_HOST" -c "
|
|
SELECT
|
|
template_id,
|
|
mission_type,
|
|
COUNT(DISTINCT user_id) as users_with_mission,
|
|
COUNT(*) as total_instances,
|
|
CASE
|
|
WHEN COUNT(*) = COUNT(DISTINCT user_id) THEN '✅ No duplicadas'
|
|
ELSE '⚠️ ' || (COUNT(*) - COUNT(DISTINCT user_id)) || ' duplicadas'
|
|
END as status
|
|
FROM gamification_system.missions
|
|
GROUP BY template_id, mission_type
|
|
ORDER BY mission_type, template_id;
|
|
"
|
|
|
|
echo ""
|
|
echo -e "${GREEN}5. USUARIOS SIN MISIONES (si existen)${NC}"
|
|
echo "-------------------------------------------"
|
|
psql -U "$DB_USER" -d "$DB_NAME" -h "$DB_HOST" -c "
|
|
SELECT
|
|
p.email,
|
|
p.role,
|
|
p.created_at::date as created_date
|
|
FROM auth_management.profiles p
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM gamification_system.missions m WHERE m.user_id = p.id
|
|
)
|
|
ORDER BY p.created_at;
|
|
"
|
|
|
|
echo ""
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo -e "${BLUE}VERIFICACIÓN COMPLETADA${NC}"
|
|
echo -e "${BLUE}========================================${NC}"
|
|
|
|
# Limpiar variable de entorno
|
|
unset PGPASSWORD
|