Variables usadas — Deploy y configuración (estado_turismo)
Fecha: 2026-09-18
Sesión: deploy de engine (Worker) + ruta-maya (Pages) + generación de rutas reales
Secrets redactados. El valor real vive en
spab-retrieval/.env(gitignored) y en~/.zshrc.
1. Deploy a Cloudflare (shell / entorno)
| Variable | Valor / ubicación | Notas |
|---|---|---|
CLOUDFLARE_ACCOUNT_ID | 162ab69a40524314530193e8a3e8f414 | ~/.zshrc:316 |
CLOUDFLARE_API_TOKEN | (secret) → spab-retrieval/.env:33 | token válido (permisos Workers + Pages) |
CLOUDFLARE_API_ID | 162ab69a40524314530193e8a3e8f414 | spab-retrieval/.env:32 (es el account id, no un token) |
Token viejo (expirado, no usar): ~/.zshrc:317 (cfut_…) → reemplazado por el de .env.
Comandos que usaron estas variables:
# Worker (engine)
cd engine
export CLOUDFLARE_API_TOKEN="<token .env:33>"
npm run deploy # → https://engine.nef.workers.dev
# Pages (ruta-maya)
cd ruta-maya
export CLOUDFLARE_API_TOKEN="<token .env:33>"
wrangler pages project create ruta-maya-staging --production-branch=main
wrangler pages deploy . --project-name=ruta-maya-staging --branch=main --commit-dirty=true2. Worker engine — variables de runtime (engine/wrangler.jsonc)
{
"name": "engine",
"main": "src/index.ts",
"compatibility_date": "2026-09-16",
"account_id": "162ab69a40524314530193e8a3e8f414",
"ai": { "binding": "AI" },
"observability": { "enabled": true },
"vars": {
"MODELO": "@cf/qwen/qwen3-30b-a3b-fp8",
"OLLAMA_MODEL": "qwen3.5:9b",
"RAG_ENABLED": "true"
}
}| Variable | Valor | Uso |
|---|---|---|
MODELO | @cf/qwen/qwen3-30b-a3b-fp8 | modelo Workers AI |
OLLAMA_MODEL | qwen3.5:9b | modelo Ollama propio (si OLLAMA_BASE_URL existe) |
RAG_ENABLED | true | activa retrieval en recomendar() |
AI | binding | Workers AI |
OLLAMA_BASE_URL | (opcional, no seteado) | si existe → usa Ollama en vez de Workers AI |
Endpoints:
GET /→ descripción + perfiles + modeloPOST /con{"usuario":"sarah"|{...}, "destino":"Bacalar"}→ ranking
3. Generación de rutas — variables del script (spab-retrieval/scripts/generar-rutas.mjs)
Inputs:
data/destinos.json→ 15 destinos con lat/lon, estado, clavesdata/base/lugares.csv→ 558 lugares (Google Places, verificado)
Config RUTAS usada:
const RUTAS = {
pacifico: {
destinos: ['puerto-vallarta', 'acapulco', 'puerto-escondido'],
nombre: 'Ruta Pacífico',
descripcion: 'Costa del Pacífico mexicano',
color: '#0EA5E9'
},
colonial: {
destinos: ['cdmx', 'san-miguel-de-allende', 'oaxaca'],
nombre: 'Ruta Colonial',
descripcion: 'Ciudades coloniales de México',
color: '#8B5CF6'
}
};Mapeo GIRO_A_CATEGORIA:
{
'hoteles': 'estancia',
'restaurantes': 'comida',
'atracciones': 'patrimonio',
'tours': 'naturaleza'
}Derivadas por código:
vol = min(n_resenas / 10000, 1.0)price = giro === 'hoteles' ? 3 : 2- coordenadas de corredor = orden de
destinos[]→[lon, lat] top 10lugares por destino en la API (de N en el CSV)
Ejecutar:
cd spab-retrieval
node scripts/generar-rutas.mjs4. spab-retrieval/.env — manifiesto (nombres; valores reales en el archivo, gitignored)
| Variable | Estado | Uso |
|---|---|---|
GOOGLE_CLOUD_API_KEY | secret | Google Places v1 |
GOOGLE_PLACES_API_KEY | secret | calificación / sobreprecio |
WIKIPEDIA_USER / WIKIPEDIA_PASS | secret | corpus Wikipedia |
BOT_USER / BOT_PASS | secret | bot datos |
OPENSKY_CLIENT_ID / OPENSKY_CLIENT_SECRET | secret | vuelos |
PLACES_LUGARES_POR_DESTINO | 20 | costo lineal por destino |
BQ_DATASET | estado_turismo | sumidero BigQuery |
GOOGLE_APPLICATION_CREDENTIALS | vacío | usa ADC local |
SPAB_DATA_DIR | ./data | almacén |
SPAB_RAW_DIR | ./data/raw | crudos |
CRON_SECRET | vacío | protege /api/cron |
APIFY_API_KEY | secret | scraping |
CLOUDFLARE_API_ID | account id | — |
CLOUDFLARE_API_TOKEN | secret | deploy |
5. Rees para no volver a fallar
- Token necesita permisos: Workers Scripts > Edit, Workers Secrets > Edit, Pages > Edit, Account Settings > Read.
- Si
wrangler logindice “logged in with an API Token”: hay queunset CLOUDFLARE_API_TOKENo usar el token de.env. - Pages requiere crear el proyecto la primera vez (
pages project create) antes depages deploy.