Spaces:
Runtime error
Runtime error
Commit History
-
feat(ui): click en parcela vuela a su polígono + dibuja parcelas en el mapa
- /api/fields incluye geojson (ST_AsGeoJSON) por parcela. - Mapa de Creación de Parcelas dibuja los polígonos guardados (capa verde) y hace fitBounds al cargar; click en un item de la lista -> flyToBounds del polígono. - Verificado con Playwright (click en 'Lote NDVI' vuela a su polígono; 0 errores).d17e4f4
-
feat(ui): plataforma Shiny de 6 módulos + soporte backend para la UI (Fase 6)
- frontend/app.py: 6 nav_panel (Resumen, Creación de Parcelas con ipyleaflet+DrawControl, Teledetección con Plotly NDVI 5 años/clima + heatmap, Conteo EN DESARROLLO, Asistente RAG, Credenciales efímeras). Consume el gateway con cabeceras X-User-* efímeras. - backend: repositories.get_field(+centroide)/get_field_geojson; /api/fields devuelve lon/lat; /api/ndvi/raster acepta field_id. - Deps UI: shinywidgets, ipyleaflet, plotly. - Verificado: backend y UI levantan en local (HTTP 200); ruff limpio; suite sin regresión.820f460 -
feat(api): gateway + parcelas + teledetección NDVI/clima (Fase 3)
- backend/api/deps.py: proxy efímero BYOK (X-User-* con fallback DEV_*) + get_db. - backend/services/remote_sensing.py: NDVI vía Sentinel Hub en CDSE (Statistical API serie mensual 5 años + Process API heatmap PNG); OAuth client_credentials. - backend/services/weather.py: Open-Meteo (sin llave) + agregación mensual. - backend/services/parcels.py: CRUD + backfill NDVI de 5 años en background. - backend/api/{fields,ndvi,weather}.py: /api/fields (CRUD), /api/ndvi (+/raster), /api/weather. - main.py monta los routers nuevos; repositories.delete_field por id. - Tests: unitarios (parse stats, agregación clima, deps) + integración en vivo (NDVI real + cadena parcela->NDVI->persistencia). 52 passed, ruff limpio. - Desviación: se usa Sentinel Hub (CDSE) en vez de pystac-client+rioxarray.c9bb7d3