# Bot de descarga (agent para PC remota) Agent Selenium que corre **fuera de Docker**, en la PC con Chrome e Imaging. Vive en este monorepo bajo `bots/` (no es un microservicio de `services/`). - **No expone puertos.** Solo HTTP saliente al gateway IPSExtractor y PutObject a MinIO. - La API de control está en [`services/bot_descarga`](../../services/bot_descarga) (Docker + PostgreSQL). ## Requisitos en la PC - Python 3.11+ - Google Chrome - Acceso de red a Imaging (`BOT_IMAGING_URL`) y al gateway (`BOT_API_URL`) - Token `BOT_API_TOKEN` (mismo que el servicio en Docker) ## Instalación ```bash cd bots/bot_descarga python -m venv .venv # Windows .venv\Scripts\activate # Linux/macOS # source .venv/bin/activate pip install -r requirements.txt cp .env.example .env # Editar .env ``` ## Arranque con GUI ```bash python run_gui.py ``` Configura URL API (ej. `https://pys1.builker.xyz/bot-descarga` o `http://127.0.0.1:8189/bot-descarga`), Worker ID y token. Pulsa **Conectar agent**. Queda idle hasta que el desktop asigne un job. ### Autoarranque en Windows En la misma GUI: 1. Marca **Iniciar con Windows** (crea un `.bat` en la carpeta Startup del usuario). 2. Deja **Conectar al abrir** activo para que tras el login el agent quede online solo. Tras reiniciar el PC e iniciar sesión, se abre la GUI y se registra el worker automáticamente. ## Arranque solo agent (CLI) ```bash python -m bot_descarga.worker.run \ --api-url http://127.0.0.1:8189/bot-descarga \ --worker-id PC-01 \ --token $BOT_API_TOKEN ``` ## Arquitectura ``` Desktop IPSExtractor → Gateway :8189 → services/bot_descarga (Docker) ↑ PC bot (esta carpeta) ────────┘ HTTP outbound └─ PutObject PDFs → MinIO pys-cuentas-medicas/downloads/ ``` ## Variables Ver [`.env.example`](.env.example): | Variable | Uso | |----------|-----| | `BOT_API_URL` | Base del API vía gateway (`…/bot-descarga`) | | `BOT_API_TOKEN` | Bearer compartido con el servicio | | `BOT_IMAGING_URL` | URL del sistema Imaging (requiere VPN/DNS) | | `MINIO_*` | Bucket de PDFs; por defecto anónimo | ## Debug local (sin API remota) ```bash python main.py --excel datos.xlsx --carpeta descargas ``` ## Tests ```bash cd bots/bot_descarga python -m pytest tests/ -q ```