Files
IPSExtractor/bots/bot_digitador
..

Bot Digitador (agent Windows)

Agent que digita radicados en Integración Total (pywinauto + OpenCV). Vive en este monorepo bajo bots/ (no es un microservicio de services/).

  • No descarga PDFs. Solo digitación UI + reportes CSV/log.
  • No expone puertos. Solo HTTP saliente al gateway IPSExtractor y PutObject a MinIO.
  • La API de control se espera en …/bot-digitador (mismo patrón que bot_descarga).
  • La selección del tipo documental replica bot_saludtotal_6.py: abre el combo, vuelve a HOME y usa secuencias de teclado estables en lugar de coordenadas.
  • El PC trabajador conserva el visor flotante pequeño del bot original, siempre visible, con progreso, resultados, radicado, velocidad y duración en vivo.

Requisitos en la PC

  • Windows con Integración Total instalado e iniciado sesión
  • Python 3.11+
  • Plantillas OpenCV en template/ (ver template/README.md)
  • Acceso de red al gateway (BOT_API_URL) y a MinIO
  • Token BOT_API_TOKEN

Instalación

cd bots/bot_digitador
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
# Editar .env (especialmente DIGITADOR_APP_PATH)

Copia los PNG de plantillas a template/.

Arranque con GUI

python run_gui.py

Configura URL API (ej. http://localhost:8189/bot-digitador), Worker ID, token y ruta de Integración Total (DIGITADOR_APP_PATH). Pulsa Conectar agent. Queda idle hasta que el desktop asigne un job CSV.

Al aceptar un job se validan primero las nueve plantillas. Si falta alguna, la corrida termina con un error explícito y no manipula Integración Total.

Autoarranque en Windows

  1. Marca Iniciar con Windows.
  2. Deja Conectar al abrir activo.

Arranque solo agent (CLI)

python -m bot_digitador.worker \
  --api-url http://localhost:8189/bot-digitador \
  --worker-id PC-DIGITADOR-01 \
  --token %BOT_API_TOKEN%

Modo local (sin API)

Requiere Integración Total abierto y visible:

python main.py --csv datos.csv
python main.py --csv datos.csv --delimiter "|" --date-format dd/mm/yyyy --app-path "C:\ruta\Integracion Total.lnk"

Reportes en la carpeta de salida: RESULTADOS.csv, OMITIDOS.csv, ejecucion_bot.log.

Arquitectura

Desktop IPSExtractor  →  Gateway :8189  →  API bot-digitador
                              ↑
PC bot (esta carpeta) ────────┘  HTTP outbound
         └─ PutObject reportes → MinIO …/digitados/{job_id}/
         └─ pywinauto → Integración Total

El código está separado por responsabilidad:

  • core/config.py: secuencias, coordenadas y recursos requeridos.
  • core/csv_rules.py: CSV, fechas, valores monetarios y tipos documentales.
  • core/application.py: interacción de teclado/ratón con Windows.
  • core/vision.py: validación del inventario OpenCV.
  • core/reports.py: RESULTADOS, OMITIDOS y log.
  • core/digitador_service.py: orquestación, cancelación y eventos remotos.

Variables

Ver .env.example:

Variable Uso
BOT_API_URL Base del API vía gateway (…/bot-digitador)
BOT_API_TOKEN Bearer compartido con el servicio
DIGITADOR_APP_PATH Acceso directo / ejecutable de Integración Total. Por defecto se resuelve como %USERPROFILE%\Documents\IT SaludTotal.lnk para cada usuario; puede sobrescribirse por worker.
MINIO_* Bucket de reportes; por defecto anónimo

CSV de entrada

Columnas requeridas: radicado, documento, ingreso, total_cargos, autorizacion, tipo_documento, tipo_servicio, copago, cuota_moderadora.

Acepta delimitador , o | (auto-detección).

Entorno visual soportado

La automatización se calibra para el entorno operativo actual: Windows, resolución 1920×1080, escala de pantalla al 100 % e Integración Total visible y maximizado. No deben usarse sesiones bloqueadas o minimizadas mientras corre un job.

Construcción y publicación

Con las nueve plantillas presentes:

python scripts/package_bot.py
python scripts/publish_bot.py --build-only
python scripts/publish_bot.py

El empaquetador excluye .env, cachés, datos, temporales y reportes. La publicación usa MINIO_ACCESS_KEY/MINIO_SECRET_KEY y deja el artefacto en:

apps-versions/BotDigitadorPYSCuentasMedicas/latest/bot_digitador.zip