Spaces:
Sleeping
Sleeping
Commit History
3 days ago
-
feat(db): añade selected_indices a public.fields
Materializa la migración idempotente 0002 que agrega la columna TEXT[] NOT NULL con default ARRAY['ndvi'] y el constraint chk_fields_selected_indices, que exige al menos un índice del catálogo ndvi/evi/savi/ndwi/ndre. Sincroniza el ER, el diccionario de columnas y la sección de migraciones de diseno_db.md. Co-Authored-By: DeepSeek <noreply@deepseek.com>a5defe2
11 days ago
-
feat(db): agregar migración inicial PostGIS idempotente
Se crea 0001_initial_schema.sql con PostGIS, las siete tablas del modelo (fields, vegetation_indices, weather_data, user_profiles, plant_counts, chat_messages y events), constraints, índices GIST/JSONB/FK y RLS condicional para Supabase y PostgreSQL local. El migrador normaliza DSN de SQLAlchemy, omite *.down.sql y falla si no hay migraciones. Se agregan tests unitarios y de integración; la migración se validó dos veces contra PostGIS 16 y el aislamiento RLS se comprobó con dos usuarios. Co-Authored-By: DeepSeek <noreply@deepseek.com>c521d70 -
chore(git): versionar migraciones SQL de Supabase
Se agrega la excepción !supabase/migrations/*.sql para que git rastree los DDL oficiales pese a la regla global *.sql. También se crea el directorio supabase/migrations/ con .gitkeep para que la estructura quede versionada desde el primer commit. Co-Authored-By: DeepSeek <noreply@deepseek.com>e87f4b0
-
chore(git): eliminar migraciones .sql del repositorio para evitar exposición
a462773 -
feat(security): habilita RLS en tablas publicas de supabase
Habilita RLS en las tablas public.events y public.vegetation_indices para prevenir la exposicion publica de datos a traves de PostgREST. Se omitio public.spatial_ref_sys debido a restricciones de propiedad de PostGIS.cdc15a4
-
feat(db): elimina tabla ndvi_timeseries (legacy)
Migración 0006 DROP TABLE ndvi_timeseries y sus políticas RLS. Elimina la tabla del ALLOWED_TABLES en data.py, remueve funciones deprecated (upsert_ndvi_points, get_ndvi_series) de repositories.py, actualiza frontend ER diagram y tests de integración.29437e9 -
style(ndvi): migra ndvi_timeseries legacy a vegetation_indices
Elimina fallback de ndvi_timeseries en get_index_series(). Marca upsert_ndvi_points() y get_ndvi_series() como DEPRECATED. _describe_trend() usa mean_value en vez de mean_ndvi. Tests actualizados a upsert_index_points/get_index_series. data.py añade vegetation_indices a ALLOWED_TABLES. check constraint de 0004 incluye 'ndvi'. Nueva migración 0005 copia datos legacy.f841950 -
feat(teledeteccion): añade índices espectrales EVI, SAVI, NDWI, NDRE (Fase 13)
Nuevos 4 índices sobre Sentinel-2: core/indices.py (funciones puras), remote_sensing.py (evalscripts genéricos + index_series_monthly/index_heatmap_png), api/vegetation.py (router parametrizado), migración 0004_indices.sql, repositorios upsert/get, selector UI con rangos dinámicos, y 14 tests unitarios.8f8389b
-
feat(telemetria): endpoint /api/events, ring buffer y tabla events (Fase 9)
cf2d03b
-
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