architecture
Не микросервисы. Просто три нормальные границы:
frontend (React) | | REST / JSON / XYZ tiles vbackend (FastAPI) | | python package API vanalytics (ML + EO + raster)analytics
Section titled “analytics”Не знает про HTTP/React/SQLite. Можно гонять его отдельно:
cd analyticspython -m pytestflorascope-core benchmark ...Внутри две ветки:
- competition gap recovery;
- live EO/anomaly processing.
backend
Section titled “backend”FastAPI занимается только orchestration:
/api/v1/fields— полигоны;/api/v1/analyses— live jobs/results/tiles;/api/v1/benchmark— organizer files/model run/report;/api/v1/jobs— progress.
Metadata/jobs лежат в SQLite. Растры, model artifacts и CSV — файлами. Для одного ноутбука PostGIS/Redis тут просто лишние точки отказа.
Job executor внутри backend, max_workers=1. Нам не нужна очередь уровня продового SaaS, зато UI не блокирует
HTTP-request на обучении/EO.
frontend
Section titled “frontend”Отдельная Vite/React сборка, nginx в production. Backend внутрь frontend Docker image не кладём.
Экранов по сути три:
- мониторинг поля;
- model / benchmark;
- короткая research выжимка.
почему 20 м
Section titled “почему 20 м”NDVI можно считать на 10 м, но NDRE/NDMI/NBR требуют red-edge/SWIR с нативными 20 м. Поэтому общая аналитическая сетка 20 м честнее, чем рисовать «10 м» после обычного resampling.