5. Contratos de Datos para la Despensa¶
SmallCountry consume datos de más de 80 fuentes externas: APIs meteorológicas, biodiversidad, precios de electricidad, literatura científica. Los Contratos de Datos garantizan que cada fuente tiene una definición formal y que el sistema detecta cuando una fuente incumple su contrato antes de que el dato caducado cause problemas.
Cómo funciona¶
Cada fuente externa tiene una ficha técnica versionada en Forgejo:
fuente: Open-Meteo
proposito: Previsión meteorológica para la finca
url: https://api.open-meteo.com/v1/forecast
frecuencia: cada 6 horas
sla_frescura: 12h
campos_obligatorios: [temperature_2m_max, precipitation_sum]
validaciones:
temperature_2m_max: {rango: [-20, 50]}
precipitation_sum: {minimo: 0}
fallback: ultimo_valor_valido
Verificación automática (n8n semanal)¶
flowchart TD
A([Inicio: verificación semanal]) --> B[1. Frescura]
B --> B1{¿Última actualización\ndentro del SLA?}
B1 -->|Sí| C[2. Formato]
B1 -->|No| F[Alerta + descartar dato]
C --> C1{¿Estructura esperada?\n¿Campos obligatorios?}
C1 -->|Sí| D[3. Valores]
C1 -->|No| F
D --> D1{¿Valores dentro\nde rangos?}
D1 -->|Sí| E[4. Consistencia]
D1 -->|No| F
E --> E1{¿Coherente con\nserie histórica?}
E1 -->|Sí| G([Dato aceptado])
E1 -->|No| F
F --> F1[Usar fallback]
F1 --> F2[Notificar]
F2 --> F3[Registrar en\nVictoria Metrics]
F3 --> H([Dato descartado])
- Frescura: ¿última actualización dentro del SLA? Si no → alerta
- Formato: ¿estructura esperada? ¿campos obligatorios presentes?
- Valores: ¿dentro de rangos? ¿nulos donde no debería?
- Consistencia: ¿el dato de hoy es coherente con la serie histórica?
Si falla: descarta el dato, usa fallback, notifica, registra en Victoria Metrics.
Dashboard de salud de la despensa¶
Grafana muestra: última actualización de cada fuente, tiempo hasta expirar SLA, errores 7d, espacio ocupado. Si una fuente supera su SLA → rojo → alerta.
Relaciones con otros mecanismos¶
- Degradación Independiente:
degradation_policy.ymles un contrato de datos - Nivel 0 y Espejo Local: contratos para datos externos, espejo para dependencias de software
- Presupuesto de Observabilidad: el dashboard de despensa consume presupuesto de observabilidad
Los datos externos son como invitados: pueden entrar, pero con condiciones claras. Si no las cumplen, se les cierra la puerta. Y la casa sigue funcionando.