# MSC Tracker Worker — Guía rápida

Servicio de tracking de containers de MSC, expuesto como un endpoint HTTP
chiquito en este server.

## Conexión

Tu operador te pasa la SSH private key por el canal que acordaron
(Signal, mail, etc). Guardala con permisos 600:

```bash
chmod 600 ~/.ssh/msc-worker.key
```

Y conectate:

```bash
ssh -i ~/.ssh/msc-worker.key rastreador@<HOST>
```

(Tu operador te pasa el host aparte.)

## ¿Qué hay en este server?

- `~/worker/worker.py` — código del tracker
- `~/worker/venv/` — Python venv con las deps (camoufox, fastapi)
- `~/worker/run.sh` — script de arranque
- `~/worker/logs/` — directorio de logs
- `~/.bin/svc` — wrapper para gestionar el service
- `~/.local/bin/sudo-askpass` — helper de sudo (no tocar)

## ¿Cómo uso el worker?

El worker escucha en `http://127.0.0.1:9090` del server. Para usarlo desde
tu máquina sin entrar por SSH cada vez, hace un tunnel:

```bash
ssh -i ~/.ssh/msc-worker.key -L 9090:127.0.0.1:9090 rastreador@<HOST>
```

Y después en otra terminal:

```bash
curl -X POST http://127.0.0.1:9090/track \
  -H 'Content-Type: application/json' \
  -d '{"container": "MEDU9730548"}'
```

Respuesta: JSON con container, BoL, shipped_from/to, pod_eta, latest_move,
y la lista de eventos del viaje.

## Endpoints

- `GET /health` — check rápido (`{"ok":true,"service":"camoufox-msc-worker"}`)
- `POST /track` — tracking de un container
  - Body: `{"container": "MEDU9730548"}`
  - Devuelve 200 con JSON, 404 si el container no existe,
    502 si MSC no responde

## Gestionar el service

Hay un wrapper `~/.bin/svc` que envuelve `sudo systemctl/journalctl` con
los permisos justos para tu worker. Comandos típicos:

```bash
~/.bin/svc help                                  # ayuda
~/.bin/svc systemctl status worker.service        # estado
~/.bin/svc systemctl restart worker.service       # reiniciar
~/.bin/svc systemctl stop worker.service          # parar
~/.bin/svc journalctl -u worker.service -n 100    # últimas 100 líneas
~/.bin/svc journalctl -u worker.service -f        # logs en vivo (Ctrl+C)
```

## Modificar el código

Si querés tocar `worker.py` (por ejemplo si MSC cambia el HTML):

```bash
nano ~/worker/worker.py
~/.bin/svc systemctl restart worker.service
~/.bin/svc journalctl -u worker.service -f
```

## Instalar más paquetes Python

El venv es tuyo, podés instalar lo que quieras sin sudo:

```bash
source ~/worker/venv/bin/activate
pip install <paquete>
deactivate
```

## Lo que NO podés hacer

- Ver archivos de otros usuarios (tu home es 750, solo vos entrás)
- Instalar paquetes del sistema (no tenés sudo para `apt`)
- Reiniciar otros servicios (solo `worker.service`)
- Leer logs del sistema (solo los de tu worker)
- Mandar el puerto 9090 a otro lado (es localhost-only)

Si necesitás algo más, pedile a tu operador.

## Si algo se rompe

1. Mirá los logs: `~/.bin/svc journalctl -u worker.service -n 100 --no-pager`
2. Reiniciá: `~/.bin/svc systemctl restart worker.service`
3. Si MSC cambió el HTML de su página, hay que actualizar los
   selectores en `worker.py` (preguntale a tu operador)
