Backend FastAPI pentru un registru agricol demonstrativ. Expune date sintetice despre ferme, câmpuri/parcele, sarcini, observații și evenimente de sincronizare, plus validare GeoJSON, reset determinist și documentație OpenAPI.
Acesta este un API de portofoliu, nu un registru agricol real. Clientul Web are calea de citire configurată către API; interfața Mobile folosește în prezent fixture-uri locale și un flux offline.
Demo-ul public este găzduit pe Render:
Instanța live este numai pentru demonstrație. Datele create sau resetate pot dispărea la restart, redeploy ori înlocuirea procesului.
GET /health— verifică starea serviciului.GET /parcels— listează contractul pentru Web: identificare, fermier, suprafață, stare, cultură, centru și contur GeoJSON.GET /farms— listează fermele sintetice.GET /farms/{farm_id}— întoarce o fermă și câmpurile sale.GET /fields— listează câmpurile; acceptă filtrelefarm_id,statusșicrop.GET /fields/{field_id}— întoarce un câmp.GET /tasks— listează sarcinile; acceptă filtrelestatus,farm_idșifield_id.POST /tasks— creează o sarcină după verificarea fermei, câmpului și a relației dintre ele.GET /observations— listează observațiile; acceptă filtrelefield_idșistatus.POST /observations— creează o observație; repetarea aceluiașiclient_action_idîntoarce observația existentă.GET /sync/events— listează evenimentele sintetice de sincronizare/audit.POST /validate/parcel— validează unPolygonsauMultiPolygonGeoJSON și calculează aria geodezică WGS84 în metri pătrați.POST /demo/reset— golește baza procesului curent și reîncarcă fixture-urile deterministe.
FastAPI publică interfața Swagger UI la GET /docs și schema OpenAPI la
GET /openapi.json. Cererile cu resurse necunoscute primesc răspunsuri 404,
iar payload-urile care nu respectă modelele primesc 422.
Consultă arhitectura runtime și matricea de evidence.
Este necesar Python 3.11 sau mai nou.
python -m venv .venv
. .venv/bin/activate
pip install -e '.[dev]'
uvicorn app.main:app --reloadAPI-ul pornește la http://127.0.0.1:8000, iar documentația la http://127.0.0.1:8000/docs.
Pentru verificare:
ruff check .
pytest -qCORS permite implicit originile locale Vite de pe porturile 5173 și 4173,
pentru localhost și 127.0.0.1. Pentru alte medii, setează
FARM_REGISTRY_CORS_ORIGINS la o listă de origini exacte, separate prin
virgulă; wildcard-ul nu este acceptat.
Fișierul render.yaml conține un Render Blueprint pentru serviciul web Python
farm-registry-api-demo. Configurația instalează pachetul cu pip install .,
pornește Uvicorn pe portul oferit de Render și folosește /health drept health
check.
Pentru un deploy propriu, conectează repository-ul în Render, creează serviciul
din Blueprint și configurează manual FARM_REGISTRY_CORS_ORIGINS cu originile
clienților permiși. Blueprint-ul fixează PYTHON_VERSION la 3.12.
Toate datele demo sunt inventate și identificabile prin prefixul SYN-.
Seed-ul inițial conține 6 ferme, 12 câmpuri, 12 sarcini, 10 observații și
evenimente de sincronizare. Nu sunt date cadastrale, GPS reale sau date despre
clienți.
Repository-ul folosește SQLite exclusiv în memorie. Fiecare proces are propria
bază, seed-uită la pornire; scrierile nu supraviețuiesc restartului și nu sunt
partajate sigur între mai multe procese. POST /demo/reset restaurează doar
starea sintetică a procesului care deservește cererea. Această arhitectură este
potrivită pentru demo și teste, nu pentru o bază persistentă de producție sau
sincronizare durabilă.
API-ul nu include autentificare, autorizare, integrare cu registre/cadastru, integrare MPass/MConnect ori alte integrări reale. Pentru producție ar fi necesare separat persistență, securitate, migrații, observabilitate și un model de sincronizare durabil.
- Farm Registry Web · demo live — calea de citire este configurată către acest API.
- Farm Registry Mobile · demo live — interfața folosește fixture-uri locale și flux offline; nu scrie în backend-ul live.