Spaces:
Runtime error
Runtime error
Commit History
-
feat(seguridad): rate limiting en /api + cabeceras de hardening (Fase 10)
7afd4d9 -
feat(telemetria): endpoint /api/events, ring buffer y tabla events (Fase 9)
cf2d03b
-
feat(agent): asistente RAG con function calling + memoria (Fase 5)
- backend/services/tools.py: 3 herramientas tipadas (tendencia NDVI, contexto climático, densidad [en desarrollo]) + TOOLS_SCHEMA + dispatch. - backend/services/agent.py: orquestación Groq/Llama 3 (OpenAI-compatible vía httpx), bucle de tool-calling y memoria en chat_messages. - backend/api/chat.py: POST /api/chat (no-streaming; SSE diferido). - repositories.get_field_by_name (con centroide para el clima). - Tests: unit (schema, _describe_trend) + integración en vivo (Groq llama la herramienta NDVI end-to-end). 58 passed, ruff limpio.9837673 -
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 -
feat(db): persistencia Supabase BYOK - migraciones PostGIS/RLS + repos async (Fase 2)
- supabase/migrations/0001_init.sql (PostGIS+pgmq, 4 tablas, índices GIST/GIN) y 0002_rls.sql (RLS por usuario, efectiva con Supabase Auth). - backend/db: session.py (engine async, Session pooler), migrate.py (aplicador), repositories.py (CRUD parcelas, upsert/lectura NDVI idempotente, memoria chat; SQLAlchemy Core text() + PostGIS por robustez con asyncpg). - Deps: sqlalchemy, asyncpg, geoalchemy2, shapely, python-dateutil. - Tests integración contra Supabase real (tests/integration/test_db.py): 4 verdes. - BYOK monousuario: user_id sin FK a auth.users; conteo/PGMQ creados pero inactivos.8d80da2 -
feat(core): esquemas de dominio y motores puros NDVI/GSD/densidad (Fase 1)
- backend/core/schemas.py: FieldIn (valida polígono cerrado 4326), FieldOut, NDVIPoint, WeatherPoint, ChatMessage. - backend/core/ndvi.py: ndvi(), zonal_stats(), aggregate_monthly() (1 punto/mes). - backend/core/geometry.py: gsd_cm_per_px(), density_per_ha(), geodesic_area_m2(). - Tests unitarios (TDD): test_domain_schemas, test_ndvi, test_geometry (verde, ruff limpio).603f109 -
feat: ortomosaico de arándano simulado y mock por detección de blobs
Añade scripts/make_sample_orthomosaic.py que genera un ortomosaico de arándano de prueba (hileras de arbustos verdes con huecos de siembra y malezas amarillas, determinista por semilla). Mejora MockInferenceAdapter para detectar los arbustos por color (blobs HSV) cuando la imagen los contiene, de modo que las cajas caen sobre ellos y el conteo coincide con el real; en otras imágenes mantiene el fallback aleatorio. Incluye pruebas del generador y de la coherencia con el mock. Verificado en vivo: sobre la imagen generada (112 arbustos, 5 malezas) el conteo es exacto. La imagen PNG no se versiona (se regenera).1cec427 -
feat: modo mock para validar el flujo de conteo sin modelo real
Añade MockInferenceAdapter y la fábrica create_adapter seleccionable con MODEL_BACKEND=mock|onnx. Con COUNTING_ENABLED=true y MODEL_BACKEND=mock, /api/count devuelve detecciones falsas plausibles (deterministas por imagen) para validar el flujo completo (carga → conteo → métricas → overlay → UI) sin el modelo real; la UI muestra el aviso '(datos de prueba / mock)'. Incluye pruebas unitarias e integración del modo mock y documenta MODEL_BACKEND en .env.example.c136a98 -
test: pruebas unitarias e integración del MVP
Añade pruebas de configuración, esquemas y métricas (unitarias) y de la API con TestClient (status y conteo en standby devuelve 503), más un esqueleto E2E con Playwright omitido por defecto.15d6ad0