Workflows
Admin → Workflows (/admin/workflows) es el constructor de automatización
sin código. Cada workflow vincula uno o más triggers (eventos) a un conjunto
de acciones, filtrado por condiciones. Los workflows corren en el
worker de argus-api y pueden publicar en chat, dirigir un dock, lanzar una
tarea de vuelo, o encadenar otro workflow.
Requiere admin o superadmin. El motor está en desarrollo activo — las
páginas a continuación describen lo que se entrega hoy más lo que está en staging tras validación
pero aún no habilitado en runtime; señalado donde sea relevante.
La lista
Dos modos de vista — una lista de tarjetas compacta y un canvas DAG (alternar en la cabecera). Por workflow la lista muestra:
- Nombre, descripción.
- Estado Habilitado / pausado.
- Recuento de triggers y recuento de acciones.
- Estado de la ejecución más reciente.
- Insignia de override por misión (cuando está presente).
La cabecera muestra {workflowCount} total y {enabledCount} activos.
Triggers
Desde WORKFLOW_TRIGGER_TYPES, agrupados exactamente como el constructor los agrupa:
- Vuelos —
flight.started,flight.completed,flight.failed. - Alertas —
alert.cas,alert.geofence,alert.hms,geofence.enter,geofence.exit. - IA / Multimedia —
detection.new,media.captured. - Docks —
dock.online,dock.offline. - Operaciones —
operation.created,operation.started,operation.completed. - Sensores —
battery.low,weather.threshold,timeWindow.weather. - Programación —
schedule.cron,schedule.interval. - Externos —
webhook.received,manual. - Compuestos (aspiracional) —
workflow.completed,workflow.failed,compound(AND/OR de triggers).
Este conjunto es un superset de la lista de eventos de webhook — cualquier cosa a la que puedas suscribir un webhook, también puedes disparar un workflow sobre ella.
Condiciones
Las condiciones son filtros de payload evaluados después de que el trigger dispara. Una
condición es {leftPath} {operator} {rightValue} donde leftPath es un
JSONPath dentro del payload del evento.
Operadores de CONDITION_OPERATORS:
| Operador | Etiqueta |
|---|---|
eq / neq | = / ≠ |
gt / gte | > / ≥ |
lt / lte | < / ≤ |
contains / not_contains | pertenencia a cadena o array |
regex | coincidencia completa de RegExp |
Las condiciones se combinan con AND en el nivel superior. Usa ramas de acción
condition para OR.
Acciones
Desde WORKFLOW_ACTION_TYPES, agrupadas por categoría:
Notificaciones
- Send Webhook (POST de un disparo), Send Email (plantillas Handlebars), Send Slack (Block Kit), Send SMS (Twilio), Copilot Alert (banner de master-caution estilo CAS en un HUD de misión).
Drone / Dock
- Launch Mission (desde una plantilla, opcionalmente en un dock específico), Fly Route (misión de waypoints), Return Dock Home, Open / Close Dock Cover, Capture Photo/Video, Upload Media (dock → S3), Download Telemetry.
Imagen / IA
- Run Mapping (2D/3D), Change Detection, Generate Report (dispara anticipadamente el pipeline de informe de misión con IA), Run AI Detection.
Streaming
- Start / Stop Stream Forward — retransmite un stream TACLINK a un RTMP / SRT externo.
Operaciones
- Create Map Flag — suelta un pin. Update Task Status.
Datos / Código (aspiracional para la mayoría de orgs)
- Firestore Read / Write, HTTP Call, Execute Script (V8 sandbox, solo Sovereign), Transform Data (JSONata).
Control de flujo
- Delay, Branch / If-Else (
condition), Parallel, Wait For Condition, Human Approval (approval_gate), Loop, On Failure (branch_on_failure).
Plantillas
El drawer Plantillas aloja workflows prefabricados — “HMS Critical → Slack + RTH”, “Detection watchlist hit → Copilot alert”, “Mission complete → Generate report + email team”. Elige uno y el constructor pre-rellena trigger, condiciones y acciones.
Override por misión
Los workflows se aplican a nivel org por defecto pero pueden anularse por misión. En el tile de ajustes de misión un admin ve cada workflow de org habilitado como un toggle y puede deshabilitar específicos solo para esa misión. Los overrides se almacenan en el documento de misión y nunca modifican el workflow a nivel de org.
Ejecuciones, versiones, métricas
- Validación en vivo — el constructor señala campos obligatorios faltantes, cron inválido, ramas inalcanzables y conflictos de política de roles. Guardar está deshabilitado mientras existan errores.
- Ejecuciones — ejecuciones cronológicas con estado de paso, snapshot de payload y detalle de error.
- Versiones — cada guardado es una nueva versión; vuelve atrás desde la lista.
- Métricas — tasa de éxito, duración mediana y estimación de coste (30 d).
- Auditorías — quién creó, editó, habilitó o deshabilitó el workflow.
- Políticas de rol — mapea
WorkflowActionType→ roles permitidos, aplicado antes de que cada acción se ejecute.