Context: configuración de Google Maps/Places para estado_turismo (señal de sobreprecio por calificaciones promedio en zonas turísticas).

Decisiones tomadas

  • Usar solo Places API (New) (places.googleapis.com, biblioteca: console.cloud.google.com/apis/library/places.googleapis.com). No habilitar Legacy: misma base de datos, deprecada. Combinar ambas NO da más data.
  • Usar también Places Aggregate API (servicio areainsights.googleapis.com, endpoint POST https://areainsights.googleapis.com/v1:computeInsights; biblioteca: console.cloud.google.com/apis/library/areainsights.googleapis.com) — OJO: NO es placesaggregate.googleapis.com. Para conteos de competencia por estratos (price level / rating / tipo, filtros locationFilter, typeFilter.includedTypes, priceLevels, ratingFilter, operatingStatus en el body). Devuelve solo conteos totales (INSIGHT_COUNT) o hasta 100 IDs (INSIGHT_PLACES), no detalle por negocio. Contrastar con detalle individual de Places (New).
  • La API key DEBE ser estándar, NO account-bound. Account-bound keys solo funcionan con Vertex y Gemini (error: “Only Agent Platform (Vertex) API and Gemini API are supported by account bound keys at this time”). Crear en APIs y servicios → Credenciales → + Crear credenciales → Clave de API (estándar).
  • Restringir la clave por IP del servidor y por APIs (Places API New + Places Aggregate API).
  • Requisito previo: facturación habilitada en el proyecto (Maps Platform lo exige).
  • Otras APIs (Geocoding, Maps Embed, Solar, Weather, Street View…) NO se usan. Geocoding solo si un destino viene como nombre sin lat/lng.
  • PENDIENTE POR EXPLICAR (sí se necesitan): Distance Matrix API y Route Optimization API. User las confirmó como necesarias, motivación por definir — no activar hasta que explique el caso de uso.

Próximo paso pendiente

  • Verificar en el repo si la señal asume conteos por estrato para integrar Aggregate, o si hay que tocar el modelo.
  • Generar CRON_SECRET con openssl rand -hex 32.
  • Campos .env: GOOGLE_PLACES_API_KEY / BQ_DATASET / GOOGLE_APPLICATION_CREDENTIALS / SPAB_DATA_DIR / SPAB_RAW_DIR / CRON_SECRET.