Bug 1: Content-Type vacio para .pmtiles
- Vite/Astro sirven .pmtiles sin Content-Type (extension desconocida)
- pmtiles del cliente falla al parsear el header del archivo
- Solucion: plugin Vite inline 'assetMimePlugin' en astro.config.mjs que
setea application/octet-stream para .pmtiles, application/geo+json
para .geojson, application/json para /data/*.json
Bug 2: MapLibre override de 'position: absolute'
- El <div id='map' class='absolute inset-0'> era override por la clase
'.maplibregl-map { position: relative }' que MapLibre anade al container
en runtime. Resultado: #map con 0px de alto, canvas de 300x1280
(default) en lugar de 660x1280
- Solucion: cambiar a inline style 'position: absolute; inset: 0;' que
no es override por clases externas
Bug 3: evento 'load' se dispara antes del handler
- Los <script> de Astro 7 se cargan como modulo defer, asi que el
evento 'load' del map puede dispararse ANTES de que registremos el
handler. El loading overlay se queda visible encima del mapa
- Solucion: patron seguro que chequea isStyleLoaded() y si ya paso
ejecuta el callback inmediatamente, si no registra once('load', ...).
Tambien setTimeout(3000) como safety net
Bug 4: zoom 8 demasiado bajo para ver secciones censales
- A zoom 8 las 674 secciones censales de las Balears son 1-2px cada
una: aparecen como ruido gris plano
- Solucion: zoom inicial 9.5 centrado en Mallorca (lat 39.6, lon 2.85)
para que las secciones se vean como poligonos de 3-6px
Cambios adicionales:
- URL del source pmtiles con window.location.origin (protocolo pmtiles
requiere URL absoluta, no funciona con path relativo)
- Data del source airbnb con window.location.origin
- Sintaxis del style arreglada (faltaba { de apertura de la primera layer
tras un edit anterior)
- TypeScript 5.9.3 mantiene typecheck 0/0/0
- FASE-2-web-mvp.md: documentadas las 8 decisiones tomadas (idioma,
stack, choropleth mixto, granularidad Eivissa/Formentera, clusters,
SSR via prerender=false, fix dataset_web.json, bug secundario) y los
5 problemas encontrados (Node 22 vs 20, TS 7 incompatible, cookie
via Astro.cookies, output static pre-renderiza, GeoJSON pesado)
- PLAN.md: marcar Fase 2 como completada y anadir nota de iteracion
- HANDOFF-FASE-3.md: nuevo handoff para sesion de fase 3 con
estructura, paginas funcionales, decisiones tomadas, traps,
preguntas abiertas
- data/output/.gitkeep: confirmar sentinel
El script 02_build_dataset.py hacia SUM de hut_registros/hut_plazas por
seccion censal, multiplicando los valores de Eivissa (76 secciones) y
Formentera (6 secciones) por el numero de secciones del municipio.
Creado scripts/04_regenerate_web_json.py que:
- Lee el CSV raw de HUT Eivissa y agrega por municipio (total real: 2.364
registros / 18.184 plazas)
- Lee el JSON raw de IBESTAT Formentera (1.375 / 14.935)
- Para Mallorca/Menorca mantiene SUM por seccion del parquet (correcto,
granularidad seccion censal)
Bug secundario corregido: Mallorca y Menorca tenian los mismos totales
porque se agregaba el dict combinado. Ahora se agrega por isla individual.
Nuevo scripts/05_export_airbnb_geojson.py genera el GeoJSON de listings
individuales para los clusters del mapa (18.391 puntos, 2.97MB).