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 quebot_descarga). - La selección del tipo documental replica
bot_saludtotal_6.py: abre el combo, vuelve aHOMEy 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
- Marca Iniciar con Windows.
- 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,OMITIDOSy 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