Resumen
Ejecutar periodic verificaciones de estado contra your search API to verify latencia, resultado calidad, y disponibilidad. Detectar degradation antes de it affects produccion agents. Rastrear SLA cumplimiento sobre time.
Desencadenador
Every 15 minutos via cron
Programación
Every 15 minutos
Pasos del flujo de trabajo
Define probar consultas
Maintain un establecer of known-good probar consultas a traves de plataformas: Google (informational), Amazon (producto), YouTube (video), Reddit (discussion). Cada tiene expected minimo resultado counts.
Ejecutar probar searches
Ejecutar cada probar consulta y measure tiempo de respuesta, HTTP estado, y resultado conteo. Analizar resultados to verify structural integrity (titles, enlaces, fragmentos present).
Validar resultado calidad
Verificar ese resultados meet calidad umbrales: minimo resultado conteo, todos top-3 resultados tienen titles y enlaces, respuesta bajo SLA latencia.
Log y alerta
Log pass/fail estado for cada probar. Si cualquier plataforma fails 2 consecutive verifica, enviar un alerta via Slack o PagerDuty.
Generar diario SLA informe
At end of dia, calcular uptime porcentaje, p50/p95 latencia, y calidad puntuacion per plataforma. Almacenar for analisis de tendencias.
Implementacion en Python
import requests, os, time, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
TESTS = [
{'query': 'python programming', 'platform': 'google', 'min_results': 5},
{'query': 'wireless headphones', 'platform': 'amazon', 'min_results': 3},
{'query': 'javascript tutorial', 'platform': 'youtube', 'min_results': 3},
{'query': 'programming advice', 'platform': 'reddit', 'min_results': 3},
]
SLA_LATENCY_MS = 3000
def run_health_check(test):
start = time.time()
try:
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': test['platform'], 'query': test['query']},
timeout=10).json()
latency_ms = int((time.time() - start) * 1000)
organic = r.get('organic', [])
checks = {
'has_results': len(organic) > 0,
'meets_min': len(organic) >= test['min_results'],
'has_titles': all(o.get('title') for o in organic[:3]),
'has_links': all(o.get('link') for o in organic[:3]),
'under_sla': latency_ms < SLA_LATENCY_MS,
}
return {
'platform': test['platform'], 'query': test['query'],
'status': 'OK' if all(checks.values()) else 'DEGRADED',
'latency_ms': latency_ms, 'result_count': len(organic), 'checks': checks,
}
except Exception as e:
return {'platform': test['platform'], 'query': test['query'],
'status': 'DOWN', 'error': str(e)}
for test in TESTS:
result = run_health_check(test)
print(f"[{result['status']}] {result['platform']}/{result['query']} | "
f"{result.get('latency_ms', 'N/A')}ms | {result.get('result_count', 0)} results")Implementacion en JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
const TESTS = [
{query: "python programming", platform: "google", minResults: 5},
{query: "wireless headphones", platform: "amazon", minResults: 3},
{query: "javascript tutorial", platform: "youtube", minResults: 3},
{query: "programming advice", platform: "reddit", minResults: 3},
];
const SLA_LATENCY_MS = 3000;
async function runHealthCheck(test) {
const start = Date.now();
try {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({platform: test.platform, query: test.query})
}).then(r => r.json());
const latencyMs = Date.now() - start;
const organic = r.organic || [];
const checks = {
hasResults: organic.length > 0,
meetsMin: organic.length >= test.minResults,
hasTitles: organic.slice(0, 3).every(o => o.title),
hasLinks: organic.slice(0, 3).every(o => o.link),
underSla: latencyMs < SLA_LATENCY_MS,
};
return {
platform: test.platform, query: test.query,
status: Object.values(checks).every(Boolean) ? "OK" : "DEGRADED",
latencyMs, resultCount: organic.length, checks,
};
} catch (e) {
return {platform: test.platform, query: test.query, status: "DOWN", error: e.message};
}
}
(async () => {
for (const test of TESTS) {
const r = await runHealthCheck(test);
console.log(`[${r.status}] ${r.platform}/${r.query} | ${r.latencyMs || "N/A"}ms | ${r.resultCount || 0} results`);
}
})();Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Amazon
Búsqueda de productos con precios, calificaciones y reseñas
YouTube
Búsqueda de videos con transcripciones y metadatos
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit