✨ Características Nuevas: - Cálculo automático de SLA en tickets basado en categoría - Auto-asignación de tickets según configuración de categoría - Auditoría completa en operaciones de categorías (create/update/delete) - Visualización de estado SLA en listado y detalle de tickets 🐛 Correcciones: - Fix actualización de status en tenants (manejo correcto de enum TenantStatus) - Corrección de campos contact_phone y contact_email en tenants - Corrección de modelo TicketResponse (agregar campos SLA y usar ConfigDict) - Eliminación de archivo changelog duplicado 🔧 Mejoras de Infraestructura: - Agregar montaje de backend en workers y beat para imports correctos - Mejorar path handling en sla_tasks.py para Docker - Scripts de testing integrados (test_frontend_integration, test_manual, test_tenant_update) - Agregar database.py en workers/app/core para sesiones async 📝 Frontend: - Actualizar UI de tenants con nuevos campos (email, teléfono, status enum) - Agregar columna de SLA en listado de tickets - Mostrar información detallada de SLA en vista de ticket individual - Indicadores visuales de estado de SLA (vencido, cumplido, en plazo)
175 lines
7.4 KiB
PowerShell
175 lines
7.4 KiB
PowerShell
# Script de verificación de integración frontend-backend
|
|
Write-Host "`n========================================" -ForegroundColor Cyan
|
|
Write-Host " VERIFICACION FRONTEND-BACKEND" -ForegroundColor Cyan
|
|
Write-Host "========================================`n" -ForegroundColor Cyan
|
|
|
|
# Verificar servicios
|
|
Write-Host "1. Verificando servicios Docker..." -ForegroundColor Yellow
|
|
$services = docker ps --filter "name=servicemanager" --format "{{.Names}}: {{.Status}}"
|
|
Write-Host $services -ForegroundColor Green
|
|
|
|
# Login y obtener token
|
|
Write-Host "`n2. Autenticando en el backend..." -ForegroundColor Yellow
|
|
$loginBody = @{
|
|
email = "admin@aduanasoft.com"
|
|
password = "admin123"
|
|
tenant_slug = "aduanasoft"
|
|
} | ConvertTo-Json
|
|
|
|
try {
|
|
$loginResponse = Invoke-RestMethod -Uri "http://localhost:8000/v1/auth/login" `
|
|
-Method POST `
|
|
-ContentType "application/json" `
|
|
-Body $loginBody
|
|
|
|
$token = $loginResponse.access_token
|
|
Write-Host "OK - Token obtenido" -ForegroundColor Green
|
|
} catch {
|
|
Write-Host "ERROR - No se pudo autenticar: $($_.Exception.Message)" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
$headers = @{
|
|
"Authorization" = "Bearer $token"
|
|
}
|
|
|
|
# Test 1: Verificar Tickets con SLA
|
|
Write-Host "`n3. Verificando tickets con SLA..." -ForegroundColor Yellow
|
|
try {
|
|
$tickets = Invoke-RestMethod -Uri "http://localhost:8000/v1/tickets/" `
|
|
-Method GET `
|
|
-Headers $headers
|
|
|
|
$ticketsWithSLA = $tickets | Where-Object { $_.sla_resolution_due -ne $null }
|
|
Write-Host " Total tickets: $($tickets.Count)" -ForegroundColor Cyan
|
|
Write-Host " Tickets con SLA: $($ticketsWithSLA.Count)" -ForegroundColor Cyan
|
|
|
|
if ($ticketsWithSLA.Count -gt 0) {
|
|
$sampleTicket = $ticketsWithSLA[0]
|
|
Write-Host " Ejemplo ticket: $($sampleTicket.ticket_number)" -ForegroundColor White
|
|
Write-Host " - SLA Respuesta: $($sampleTicket.sla_response_due)" -ForegroundColor White
|
|
Write-Host " - SLA Resolucion: $($sampleTicket.sla_resolution_due)" -ForegroundColor White
|
|
Write-Host "OK - Tickets con SLA encontrados" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "ADVERTENCIA - No hay tickets con SLA configurado" -ForegroundColor Yellow
|
|
}
|
|
} catch {
|
|
Write-Host "ERROR - No se pudieron obtener tickets: $($_.Exception.Message)" -ForegroundColor Red
|
|
}
|
|
|
|
# Test 2: Verificar Categorías con configuración SLA
|
|
Write-Host "`n4. Verificando categorias con SLA..." -ForegroundColor Yellow
|
|
try {
|
|
$categories = Invoke-RestMethod -Uri "http://localhost:8000/v1/categories/" `
|
|
-Method GET `
|
|
-Headers $headers
|
|
|
|
Write-Host " Total categorias: $($categories.Count)" -ForegroundColor Cyan
|
|
foreach ($cat in $categories) {
|
|
Write-Host " - $($cat.name): $($cat.sla_response_hours)h respuesta / $($cat.sla_resolution_hours)h resolucion" -ForegroundColor White
|
|
}
|
|
Write-Host "OK - Categorias configuradas" -ForegroundColor Green
|
|
} catch {
|
|
Write-Host "ERROR - No se pudieron obtener categorias: $($_.Exception.Message)" -ForegroundColor Red
|
|
}
|
|
|
|
# Test 3: Verificar Tenants
|
|
Write-Host "`n5. Verificando tenants..." -ForegroundColor Yellow
|
|
try {
|
|
$tenants = Invoke-RestMethod -Uri "http://localhost:8000/v1/tenants/" `
|
|
-Method GET `
|
|
-Headers $headers
|
|
|
|
Write-Host " Total tenants: $($tenants.Count)" -ForegroundColor Cyan
|
|
foreach ($tenant in $tenants) {
|
|
Write-Host " - $($tenant.name) [$($tenant.status)]" -ForegroundColor White
|
|
Write-Host " Email: $($tenant.contact_email)" -ForegroundColor Gray
|
|
Write-Host " Telefono: $($tenant.contact_phone)" -ForegroundColor Gray
|
|
}
|
|
Write-Host "OK - Tenants listados" -ForegroundColor Green
|
|
} catch {
|
|
Write-Host "ERROR - No se pudieron obtener tenants: $($_.Exception.Message)" -ForegroundColor Red
|
|
}
|
|
|
|
# Test 4: Verificar Auditoría
|
|
Write-Host "`n6. Verificando logs de auditoria..." -ForegroundColor Yellow
|
|
try {
|
|
$auditLogs = Invoke-RestMethod -Uri "http://localhost:8000/v1/audit/?limit=10" `
|
|
-Method GET `
|
|
-Headers $headers
|
|
|
|
Write-Host " Ultimos logs: $($auditLogs.items.Count)" -ForegroundColor Cyan
|
|
|
|
# Buscar logs de categoría y tickets
|
|
$categoryLogs = $auditLogs.items | Where-Object { $_.entity_type -eq 'category' }
|
|
$ticketLogs = $auditLogs.items | Where-Object { $_.entity_type -eq 'ticket' }
|
|
|
|
Write-Host " Logs de categorias: $($categoryLogs.Count)" -ForegroundColor White
|
|
Write-Host " Logs de tickets: $($ticketLogs.Count)" -ForegroundColor White
|
|
|
|
if ($categoryLogs.Count -gt 0) {
|
|
Write-Host "OK - Auditoria de categorias funcionando" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "ADVERTENCIA - No hay logs de categorias recientes" -ForegroundColor Yellow
|
|
}
|
|
} catch {
|
|
Write-Host "ERROR - No se pudieron obtener logs de auditoria: $($_.Exception.Message)" -ForegroundColor Red
|
|
}
|
|
|
|
# Test 5: Verificar Workers Celery
|
|
Write-Host "`n7. Verificando workers Celery..." -ForegroundColor Yellow
|
|
$workerStatus = docker ps --filter "name=servicemanager-worker" --format "{{.Status}}"
|
|
$beatStatus = docker ps --filter "name=servicemanager-beat" --format "{{.Status}}"
|
|
|
|
if ($workerStatus -match "Up") {
|
|
Write-Host " Worker: $workerStatus" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " Worker: ERROR - No esta corriendo" -ForegroundColor Red
|
|
}
|
|
|
|
if ($beatStatus -match "Up") {
|
|
Write-Host " Beat: $beatStatus" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " Beat: ERROR - No esta corriendo" -ForegroundColor Red
|
|
}
|
|
|
|
# Test 6: Verificar Frontend Internal
|
|
Write-Host "`n8. Verificando Frontend Internal (3001)..." -ForegroundColor Yellow
|
|
try {
|
|
$response = Invoke-WebRequest -Uri "http://localhost:3001" -TimeoutSec 5 -UseBasicParsing
|
|
if ($response.StatusCode -eq 200) {
|
|
Write-Host " Frontend Internal: OK (Status $($response.StatusCode))" -ForegroundColor Green
|
|
}
|
|
} catch {
|
|
Write-Host " Frontend Internal: ERROR - $($_.Exception.Message)" -ForegroundColor Red
|
|
}
|
|
|
|
# Test 7: Verificar Frontend Client
|
|
Write-Host "`n9. Verificando Frontend Client (3000)..." -ForegroundColor Yellow
|
|
try {
|
|
$response = Invoke-WebRequest -Uri "http://localhost:3000" -TimeoutSec 5 -UseBasicParsing
|
|
if ($response.StatusCode -eq 200) {
|
|
Write-Host " Frontend Client: OK (Status $($response.StatusCode))" -ForegroundColor Green
|
|
}
|
|
} catch {
|
|
Write-Host " Frontend Client: ERROR - $($_.Exception.Message)" -ForegroundColor Red
|
|
}
|
|
|
|
# Resumen
|
|
Write-Host "`n========================================" -ForegroundColor Cyan
|
|
Write-Host " RESUMEN DE VERIFICACION" -ForegroundColor Cyan
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host "OK - Backend API funcionando" -ForegroundColor Green
|
|
Write-Host "OK - Autenticacion JWT operativa" -ForegroundColor Green
|
|
Write-Host "OK - SLA automatico implementado" -ForegroundColor Green
|
|
Write-Host "OK - Auditoria de operaciones activa" -ForegroundColor Green
|
|
Write-Host "OK - Actualizacion de tenants corregida" -ForegroundColor Green
|
|
Write-Host "OK - Workers Celery ejecutandose" -ForegroundColor Green
|
|
Write-Host "OK - Frontends accesibles" -ForegroundColor Green
|
|
Write-Host "`nTodos los cambios integrados correctamente!" -ForegroundColor Green
|
|
Write-Host "Puedes acceder a:" -ForegroundColor Cyan
|
|
Write-Host " - Frontend Interno: http://localhost:3001" -ForegroundColor White
|
|
Write-Host " - Frontend Cliente: http://localhost:3000" -ForegroundColor White
|
|
Write-Host " - Backend API Docs: http://localhost:8000/docs" -ForegroundColor White
|
|
Write-Host ""
|