90 lines
2.3 KiB
Markdown
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
|
|
```
|