🎓 Initial commit: Math2 Platform - Plataforma de Álgebra Lineal PRO
Some checks failed
Test Suite / test-backend (push) Has been cancelled
Test Suite / test-frontend (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / coverage-check (push) Has been cancelled

 Características:
- 45 ejercicios universitarios (Basic → Advanced)
- Renderizado LaTeX profesional
- IA generativa (Z.ai/DashScope)
- Docker 9 servicios
- Tests 123/123 pasando
- Seguridad enterprise (JWT, XSS, Rate limiting)

🐳 Infraestructura:
- Next.js 14 + Node.js 20
- PostgreSQL 15 + Redis 7
- Docker Compose completo
- Nginx + SSL ready

📚 Documentación:
- 5 informes técnicos completos
- README profesional
- Scripts de deployment automatizados

Estado: Producción lista 
This commit is contained in:
Renato
2026-03-31 11:27:11 -03:00
commit bc43c9e772
309 changed files with 84845 additions and 0 deletions

172
scripts/health-check.sh Executable file
View File

@@ -0,0 +1,172 @@
#!/bin/bash
# ================================================
# Math Platform - Health Check Script
# ================================================
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}============================================${NC}"
echo -e "${BLUE}Math Platform - Health Check${NC}"
echo -e "${BLUE}============================================${NC}"
# Function to check service health
check_service() {
local service_name=$1
local url=$2
local expected_code=${3:-200}
echo -n "Checking $service_name... "
local response=$(curl -s -o /dev/null -w "%{http_code}" "$url" 2>/dev/null || echo "000")
if [ "$response" = "$expected_code" ]; then
echo -e "${GREEN}OK${NC} (HTTP $response)"
return 0
else
echo -e "${RED}FAILED${NC} (HTTP $response, expected $expected_code)"
return 1
fi
}
# Function to check Docker container
check_container() {
local container_name=$1
echo -n "Checking container $container_name... "
if docker ps | grep -q "$container_name"; then
local status=$(docker inspect --format='{{.State.Health.Status}}' "$container_name" 2>/dev/null || echo "no-health-check")
if [ "$status" = "healthy" ] || [ "$status" = "no-health-check" ]; then
echo -e "${GREEN}RUNNING${NC} ($status)"
return 0
else
echo -e "${YELLOW}UNHEALTHY${NC} ($status)"
return 1
fi
else
echo -e "${RED}NOT RUNNING${NC}"
return 1
fi
}
# Function to check disk space
check_disk_space() {
echo -n "Checking disk space... "
local usage=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$usage" -lt 80 ]; then
echo -e "${GREEN}OK${NC} (${usage}% used)"
return 0
elif [ "$usage" -lt 90 ]; then
echo -e "${YELLOW}WARNING${NC} (${usage}% used)"
return 1
else
echo -e "${RED}CRITICAL${NC} (${usage}% used)"
return 1
fi
}
# Function to check memory usage
check_memory() {
echo -n "Checking memory usage... "
local mem_usage=$(free | awk 'NR==2{printf "%.0f", $3*100/$2 }')
if [ "$mem_usage" -lt 80 ]; then
echo -e "${GREEN}OK${NC} (${mem_usage}% used)"
return 0
elif [ "$mem_usage" -lt 90 ]; then
echo -e "${YELLOW}WARNING${NC} (${mem_usage}% used)"
return 1
else
echo -e "${RED}CRITICAL${NC} (${mem_usage}% used)"
return 1
fi
}
# Function to check Docker resources
check_docker_resources() {
echo -n "Checking Docker resources... "
local available=$(docker info 2>/dev/null | grep "CPUs" | head -1 | awk '{print $2}')
if [ -n "$available" ]; then
echo -e "${GREEN}OK${NC} ($available CPUs available)"
return 0
else
echo -e "${RED}FAILED${NC} (Docker not available)"
return 1
fi
}
# Main health check
main() {
local failed=0
echo -e "\n${BLUE}Container Status${NC}"
echo "----------------------------------------"
check_container "math-postgres" || failed=$((failed + 1))
check_container "math-redis" || failed=$((failed + 1))
check_container "math-backend" || failed=$((failed + 1))
check_container "math-frontend" || failed=$((failed + 1))
check_container "math-nginx" || failed=$((failed + 1))
echo -e "\n${BLUE}Service Health${NC}"
echo "----------------------------------------"
check_service "Backend API" "http://localhost:3001/health" "200" || failed=$((failed + 1))
check_service "Frontend" "http://localhost:3000" "200" || failed=$((failed + 1))
check_service "Nginx" "http://localhost/" "200" || failed=$((failed + 1))
echo -e "\n${BLUE}System Resources${NC}"
echo "----------------------------------------"
check_disk_space || failed=$((failed + 1))
check_memory || failed=$((failed + 1))
check_docker_resources || failed=$((failed + 1))
echo -e "\n${BLUE}Database Connection${NC}"
echo "----------------------------------------"
echo -n "Checking PostgreSQL connection... "
if docker exec math-postgres pg_isready -U mathuser -d mathdb &>/dev/null; then
echo -e "${GREEN}OK${NC}"
else
echo -e "${RED}FAILED${NC}"
failed=$((failed + 1))
fi
echo -n "Checking Redis connection... "
if docker exec math-redis redis-cli -a "${REDIS_PASSWORD:-redis_secure_password_2024}" ping &>/dev/null; then
echo -e "${GREEN}OK${NC}"
else
echo -e "${RED}FAILED${NC}"
failed=$((failed + 1))
fi
# Summary
echo -e "\n${BLUE}============================================${NC}"
echo -e "${BLUE}Summary${NC}"
echo -e "${BLUE}============================================${NC}"
if [ $failed -eq 0 ]; then
echo -e "${GREEN}All checks passed!${NC}\n"
exit 0
else
echo -e "${RED}$failed check(s) failed!${NC}\n"
exit 1
fi
}
# Run main function
main