Files

90 lines
2.3 KiB
Markdown

# 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
```