# Pasos manuales y servicios externos

Usa este documento para acciones fuera del codigo: secretos, dashboards, FTP, Railway, dominios o verificaciones humanas. No guardes credenciales ni tokens.

## GitHub Actions FTP

El workflow `.github/workflows/ftp-deploy.yml` publica al hacer push a `main`.

Secretos requeridos en GitHub:

- `FTP_SERVER`: servidor FTP/FTPS.
- `FTP_USERNAME`: usuario de despliegue.
- `FTP_PASSWORD`: password o token del usuario FTP.

Verificacion:

```bash
gh run list --workflow ftp-deploy.yml --limit 5
```

Si falla el deploy, revisar el log del run en GitHub Actions y confirmar que los secretos existen sin imprimir sus valores.

## Railway

APIs con configuracion Railway:

- `www/herramientas/pdf_imagen/api/railway.json`
- `www/herramientas/text_comparator/api/railway.json`

Antes de cambiar una URL publica en frontend:

1. Verificar el servicio Railway activo.
2. Comprobar `/health`.
3. Actualizar la constante de API en el `script.js` correspondiente.
4. Registrar la publicacion en `docs/RELEASE_LOG.md`.

## Dominios y rutas publicas

Si se anade, renombra o elimina una herramienta bajo `www/herramientas/`, revisar:

- Enlace desde `www/index.html`.
- Ruta canonical y metadatos de la herramienta, si existen.
- `www/sitemap.xml`.
- Smoke test de la URL publica despues de publicar.

## Publicar optimizaciones de rendimiento del sitio

Los cambios de rendimiento preparados el 2026-06-11 se publican por el flujo normal del sitio estatico:

1. Revisar el diff local y confirmar que `/herramientas/maps/` se mantiene como superficie de produccion externa al checkout.
2. Hacer push a `main` para disparar `.github/workflows/ftp-deploy.yml`.
3. Verificar el workflow:

```bash
gh run list --workflow ftp-deploy.yml --limit 5
```

4. Despues de publicar, abrir `https://gzutil.com/` y comprobar en DevTools que la home ya no carga Google Fonts.
5. Verificar que estas rutas responden `200`: `/`, `/herramientas/converter/`, `/herramientas/codigos_postales_madrid/`, `/herramientas/qr_generator/`, `/herramientas/lorem_generator/`, `/herramientas/pdf_imagen/`, `/herramientas/dowdall/` y `/herramientas/maps/`.
6. En produccion, confirmar que las librerias bajo demanda cargan solo tras interaccion: SheetJS en CSV/Excel, QR Code Styling en QR, Lorem Ipsum en Lorem, JSZip en PDF a imagen.

### Herramienta `codigos_postales_madrid`

Ruta publica esperada: `https://gzutil.com/herramientas/codigos_postales_madrid/`.

Despues de publicar en produccion:

1. Abrir la ruta publica.
2. Subir un CSV de prueba con una columna de codigos postales.
3. Confirmar que detecta la columna, clasifica codigos de Madrid, separa codigos ambiguos y marca como fuera de Madrid un codigo de otra provincia.
4. Descargar CSV y Excel y comprobar que incluyen las columnas de clasificacion.
