Bots¶
La sección Bots del portal es donde puedes gestionar, editar y ejecutar todos tus bots personalizados ya cargados en la plataforma. Es el centro de control principal para la administración de bots existentes.
Vista Principal de Bots¶
La interfaz principal muestra todos tus bots personalizados organizados en una lista:
En la vista principal puedes ver:
Lista de bots con información básica de cada uno
Estado actual de cada bot (Activo/Inactivo)
Información del archivo ZIP y script principal
Botones de acción para gestionar cada bot (Editar, Ejecutar, Ver detalles)
Última ejecución y su resultado
Información mostrada por cada bot:
Nombre descriptivo del bot
Archivo ZIP original cargado
Script principal configurado (.py)
Fecha de carga y última modificación
Estado de conexión con agentes
Detalles del Bot¶
Al hacer clic en un bot específico, puedes ver sus detalles completos:
La vista de detalles incluye:
Información general del bot (nombre, descripción, versión)
Configuración del archivo principal dentro del ZIP
Parámetros personalizados configurables
Historial de ejecuciones recientes
Opciones de gestión (editar, eliminar, clonar)
Configuración del script principal:
Ruta dentro del ZIP: Especifica cuál archivo .py es el punto de entrada
Descripción: Funcionalidad del bot
Parámetros: Argumentos configurables que el bot puede recibir
Configuración de Parámetros¶
Los bots pueden tener parámetros personalizados que se envían como argumentos:
Sistema de parámetros dinámicos¶
Los parámetros se configuran una vez y luego pueden modificarse en cada ejecución. Se envían al script Python con el formato –argumento valor.
Tipos de parámetros soportados¶
Texto: Para nombres, rutas, descripciones
Número: Para cantidades, límites, porcentajes
Booleano: Para activar/desactivar funcionalidades
Lista: Para múltiples valores del mismo tipo
Archivo: Para especificar rutas de archivos
Ejemplo de configuración¶
Parámetros Configurados
├── archivo_entrada (Texto, Obligatorio)
├── limite_registros (Número, Opcional: 1000)
├── formato_salida (Lista: CSV, JSON, XLSX)
├── debug_mode (Booleano, Opcional: False)
└── fecha_corte (Texto, Opcional)
Ejecución de Bots¶
Cuando ejecutas un bot, se muestra la interfaz de configuración de parámetros:
Proceso de ejecución¶
Selecciona el bot a ejecutar
Configura parámetros según las necesidades de esta ejecución específica
Elige el agente donde se ejecutará (si hay múltiples disponibles)
Confirma la ejecución
Los parámetros configurados se envían al script Python como:
python script_principal.py --archivo_entrada "datos.xlsx" --limite_registros 1000 --formato_salida "CSV" --debug_mode True
Monitoreo en Tiempo Real¶
Durante la ejecución, puedes monitorear el progreso en tiempo real:
Información en tiempo real:
Estado actual del bot (Ejecutando, Completado, Error)
Logs en vivo generados por los print() del script
Tiempo transcurrido desde el inicio
Progreso (si el bot lo reporta)
Recursos utilizados (CPU, memoria)
Los logs muestran:
Timestamp de cada mensaje
Nivel de log (INFO, WARNING, ERROR)
Mensaje completo generado por print() en el script
Número de línea donde se generó el mensaje (si está disponible)
Historial y Logs Completos¶
Al finalizar la ejecución, puedes revisar los logs completos:
El historial incluye:
Log completo de toda la ejecución
Archivos generados por el bot (si los hay)
Tiempo total de ejecución
Estado final (éxito, error, cancelado)
Parámetros utilizados en esta ejecución específica
Código de salida del script Python
Acciones disponibles:
Descargar logs en formato .txt
Descargar archivos generados por el bot
Reejecutar con los mismos parámetros
Editar bot si hubo problemas
Ver métricas de rendimiento
Ejemplo de Bot Básico¶
Estructura del archivo ZIP a cargar:
mi_bot_procesador.zip
│
├── main.py # ← Script principal configurado en Unimate
├── requirements.txt # Dependencias necesarias
├── config.json # Configuración opcional
├── modules/ # Módulos auxiliares
│ ├── __init__.py
│ ├── procesador.py
│ └── utils.py
└── README.md # Documentación
Ejemplo de main.py con parámetros y logs:
import argparse
import sys
import json
import pandas as pd
from modules.procesador import procesar_datos
from modules.utils import validar_archivo
def main():
# Configurar argumentos (los que se configuran en Unimate)
parser = argparse.ArgumentParser(description='Bot Procesador de Datos')
# Parámetros obligatorios
parser.add_argument('--archivo_entrada',
type=str,
required=True,
help='Ruta del archivo Excel a procesar')
# Parámetros opcionales con valores por defecto
parser.add_argument('--limite_registros',
type=int,
default=1000,
help='Cantidad máxima de registros a procesar')
parser.add_argument('--formato_salida',
type=str,
default='CSV',
choices=['CSV', 'JSON', 'XLSX'],
help='Formato del archivo de salida')
parser.add_argument('--debug_mode',
action='store_true',
help='Activar modo debug')
parser.add_argument('--fecha_corte',
type=str,
help='Fecha de corte en formato YYYY-MM-DD')
args = parser.parse_args()
# Logs iniciales (aparecen en tiempo real en Unimate)
print("Bot Procesador de Datos iniciado")
print(f"Archivo de entrada: {args.archivo_entrada}")
print(f"Límite de registros: {args.limite_registros}")
print(f"Formato de salida: {args.formato_salida}")
if args.debug_mode:
print("Modo DEBUG activado")
try:
# Validar archivo de entrada
print("Validando archivo de entrada...")
if not validar_archivo(args.archivo_entrada):
print("ERROR: Archivo no válido o no encontrado")
sys.exit(1)
# Cargar datos
print("Cargando datos...")
df = pd.read_excel(args.archivo_entrada)
total_registros = len(df)
print(f"Cargados {total_registros} registros")
# Aplicar límite si es necesario
if total_registros > args.limite_registros:
df = df.head(args.limite_registros)
print(f" Aplicando límite: procesando {args.limite_registros} de {total_registros}")
# Filtrar por fecha si se especifica
if args.fecha_corte:
print(f"Aplicando filtro de fecha: {args.fecha_corte}")
# Lógica de filtrado aquí
# Procesar datos
print("Iniciando procesamiento...")
resultado = procesar_datos(df, debug=args.debug_mode)
# Progreso cada 10% (opcional)
for i in range(0, len(df), len(df)//10):
porcentaje = int((i/len(df)) * 100)
print(f"Progreso: {porcentaje}%")
print("Guardando resultado...")
# Generar archivo de salida según formato
nombre_salida = f"resultado_{args.formato_salida.lower()}"
if args.formato_salida == 'CSV':
resultado.to_csv(f"{nombre_salida}.csv", index=False)
elif args.formato_salida == 'JSON':
resultado.to_json(f"{nombre_salida}.json", orient='records')
elif args.formato_salida == 'XLSX':
resultado.to_excel(f"{nombre_salida}.xlsx", index=False)
print(f"Proceso completado exitosamente")
print(f"Archivo generado: {nombre_salida}.{args.formato_salida.lower()}")
print(f"Total de registros procesados: {len(resultado)}")
except Exception as e:
print(f" ERROR durante el procesamiento: {str(e)}")
if args.debug_mode:
import traceback
print("Traceback completo:")
traceback.print_exc()
sys.exit(1)
if __name__ == "__main__":
main()
requirements.txt del ejemplo:
pandas>=1.3.0
openpyxl>=3.0.9
argparse
Cómo funciona Unimate¶
Cargas el ZIP a través de «Nuevo Bot»
Especificas main.py como script principal
Configuras parámetros en la interfaz web: - archivo_entrada (obligatorio, tipo texto) - limite_registros (opcional, tipo número, valor por defecto: 1000) - formato_salida (opcional, lista de opciones: CSV, JSON, XLSX) - debug_mode (opcional, tipo booleano) - fecha_corte (opcional, tipo texto)
Al ejecutar, Unimate llama:
python main.py --archivo_entrada "datos.xlsx" --limite_registros 500 --formato_salida "JSON" --debug_mode
Los `print()` del script se guardan en el log al cual se podrá acceder desde Ejecuciones
Los archivos generados se pueden descargar desde la interfaz
Los logs completos quedan guardados para consultas posteriores
Estados¶
Finalizado: El bot se ejecutó exitosamente y genero un log completo con los prints y mensajes de consola de Python.
En Proceso: El bot se está ejecutando actualmente y los logs se enviarán al finalizar la ejecución
Con errores: El bot terminó con errores y el log contiene mensajes de error y traceback obtenido de la consola.
Mejores Prácticas para Bots¶
Estructura de Código¶
Usa argparse para manejar parámetros
Incluye print() informativos para el monitoreo, no necesitas usar librerias especificas de logs.
Maneja excepciones apropiadamente
Valida parámetros de entrada
Incluye requirements.txt completo
Logging Efectivo¶
Incluye timestamps si es necesario
Reporta progreso en procesos largos
Diferencia entre información, warnings y errores
Incluye detalles de archivos generados
Rendimiento¶
Valida datos antes de procesamiento pesado
Usa límites configurables para datasets grandes
Limpia recursos (archivos temporales, conexiones)
Optimiza operaciones repetitivas
Maneja memoria eficientemente para archivos grandes