agrovision / README.md
alexp97's picture
docs(readme): añade link a demo en Hugging Face Spaces
365d8ef
|
Raw
History Blame Contribute Delete
7.29 kB
metadata
title: AgroVisión
emoji: 🫐
colorFrom: green
colorTo: blue
sdk: docker
app_port: 8000
pinned: false
license: agpl-3.0

AgroVisión — Plataforma de Monitoreo Agronómico

Plataforma de precisión para gestión de parcelas, NDVI satelital, agente RAG y conteo por dron. BYOK, Docker, Hugging Face Spaces.

Demo en vivo: alexp97-agrovision.hf.space

Plataforma de AgroVisión para monitoreo agronómico de precisión: gestión de parcelas, teledetección NDVI (Sentinel-2, 5 años), agente conversacional (RAG), explorador de datos SQL y conteo de plantas por dron (este último en desarrollo). UI en Astro + Tailwind (estática) servida por el backend FastAPI (monolito modular), persistencia Supabase (PostGIS) BYOK. Despliegue en Hugging Face Spaces (Docker). (Shiny fue eliminado en la Fase 10.)

Estado actual

✅ Implementado

  • Gestión de parcelas: creación, edición y persistencia en Supabase (PostGIS)
  • NDVI satelital: Sentinel-2, serie histórica 5 años, heatmap zonal
  • Clima básico: temperatura y precipitación (Open-Meteo)
  • Agente RAG: chat conversacional con Groq/Llama 3
  • Explorador de Datos: consultas SQL directas a tablas de Supabase
  • Telemetría: visor de eventos de sesión (memoria o BD)
  • BYOK: credenciales efímeras, nunca persistidas

En desarrollo

  • Conteo por dron: modelo agrovision-plantcount (AGPL-3.0) — cola/worker listos, pendiente publicación del modelo en Hugging Face Hub
  • Variables climáticas adicionales: humedad, viento, radiación solar, evapotranspiración
  • Índices satelitales adicionales: EVI, SAVI, NDWI, LST (temperatura superficial)
  • Alertas automatizadas: umbrales configurables por parcela
  • Exportación de reportes: PDF/CSV con datos de NDVI + clima

Nota: Los módulos en desarrollo están visibles en la UI pero con funcionalidad limitada. Las variables climáticas actuales (temperatura y precipitación) son la base; se expandirán en fases posteriores.

Módulos (8)

Módulo Estado Descripción
Resumen de Campo KPIs de NDVI, tendencia y área por parcela
Creación de Parcelas Dibujo de polígonos (EPSG:4326) con Leaflet-draw
Teledetección NDVI Sentinel-2 (5 años) + clima básico
Conteo por Dron Modelo YOLO/RF-DETR — pendiente publicación
Asistente Agéntico Chat RAG con Groq/Llama 3
Explorador de Datos Consultas SQL directas a Supabase
Credenciales BYOK efímero (Supabase, Copernicus, Groq)
Telemetría Visor de eventos de sesión

Próximas mejoras: más variables climáticas (humedad, viento, radiación) e índices satelitales (EVI, SAVI, NDWI, LST).

Capturas

Módulo Vista
Resumen de Campo Resumen
Creación de Parcelas Parcelas
Teledetección NDVI NDVI
Explorador de Datos Datos
Credenciales BYOK Credenciales
Telemetría de Sesión Telemetría

Arquitectura

Astro + Tailwind (UI estática)  ──fetch /api──►  FastAPI (monolito modular)  ─►  Supabase (PostGIS) [BYOK]
   servida por el gateway en /                    ├─ /api/fields    (parcelas)        ├─ Sentinel Hub / Copernicus (NDVI)
   (1 contenedor en HF Spaces)                    ├─ /api/ndvi(+raster), /api/weather  ├─ Open-Meteo (clima, sin llave)
                                                  ├─ /api/chat      (agente RAG)        └─ Groq / Llama 3 (LLM)
                                                  ├─ /api/events    (telemetría)
                                                  ├─ /api/data      (explorador SQL)
                                                  └─ /api/count     (conteo, en desarrollo)

Estructura

backend/    # FastAPI: api/ (routers por dominio) · services/ (negocio) · core/ (dominio puro) · db/ (PostGIS) · static (UI compilada) · main
frontend/   # UI Astro + Tailwind (se compila a backend/static)
supabase/   # migraciones SQL (PostGIS, índices, RLS, PGMQ)
tests/      # unit · integration (Supabase/Copernicus/Groq, skip sin llaves) · e2e
docs/       # reference/architect/db versionados; plan/task/investigation/doc_guia no

Arranque rápido

Con Docker (recomendado)

docker-compose up --build    # http://localhost:8000/

Local (sin Docker)

Windows + OneDrive: la carpeta está sincronizada por la nube, lo que rompe los hardlinks y bloquea el .venv. Crea el entorno fuera de OneDrive:

$env:UV_PROJECT_ENVIRONMENT = "$env:LOCALAPPDATA\agrovision-venv"

(El link-mode = "copy" ya está en pyproject.toml.)

# 1) Dependencias
uv sync

# 2) (una vez, si usarás parcelas) configurar DATABASE_URL en .env y aplicar migraciones
uv run python -m backend.db.migrate

# 3) Compilar la UI Astro -> backend/static  — o scripts/build.ps1
.\scripts\build.ps1

# 4) Backend (FastAPI) en :8000 (sirve la UI en / y la API en /api) — o scripts/run_backend.ps1
uv run python -u -m uvicorn backend.main:app --reload --port 8000 --log-level info

# Desarrollo de UI con hot-reload (Astro :4321 + backend :8000) en ventanas separadas:
.\scripts\dev.ps1

Despliegue a Hugging Face Spaces: .\scripts\deploy_hf.ps1 -Force (ver docs/ejecucion.md §5).

Detalle completo (credenciales por módulo, migraciones, troubleshooting): docs/ejecucion.md.

Credenciales BYOK (capa gratuita)

Servicio Habilita Variable(s) en .env
Supabase (PostGIS) Parcelas, Teledetección, Resumen DATABASE_URL, SUPABASE_URL, SUPABASE_ANON_KEY
Copernicus CDSE NDVI satelital + heatmap DEV_COPERNICUS_CLIENT_ID, DEV_COPERNICUS_CLIENT_SECRET
Groq Asistente RAG DEV_GROQ_API_KEY
Open-Meteo Clima — (sin llave)

La app abre sin credenciales; cada módulo se activa al poner su llave (en .env local o en la pestaña Credenciales).

Calidad y pruebas

uv run ruff check .
uv run python -m pytest                 # unit + integración (skip sin llaves)
uv run python -m pytest tests/unit -q   # solo unitarias (rápidas)

Documentación