You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+45Lines changed: 45 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,51 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
8
8
9
9
---
10
10
11
+
## [0.8.0] - 2026-03-19
12
+
13
+
### Added
14
+
-**Soil intelligence engine** — 2,200+ lines of agronomic logic in `core/soil_intelligence.py` powering crop suitability, nutrient analysis, carbon estimation, sampling recommendations, and stress monitoring.
15
+
-**Crop suitability assessment** — 4-pillar weighted scoring system: Soil Fit (40%), Water Match (25%), Climate Fit (20%), Stress Resilience (15%) with 68 crop profiles spanning cereals, legumes, industrial crops, root/tuber, vegetables, fruits, plantations, and spices.
16
+
- Weather-aware crop suitability — integrates annual rainfall, temperature range, drought/flood indices from `weather_daily`; requires ≥180 days of weather data.
17
+
-`GET /fields/{id}/soil/crop-suitability` endpoint — returns top 10 most suitable crops with scores, ratings, and limiting factors; field's current crop type highlighted even if outside top 10.
18
+
-**Sampling zone recommendations** — within-field soil variability analysis identifies locations where clay%, SOC, pH, or AWC differ most from field mean.
19
+
-`GET /fields/{id}/soil/sampling-zones` endpoint — returns GeoJSON FeatureCollection with prioritized sampling points (P1–P3) and rationale.
20
+
-**Nutrient risk classification** — classifies fields into nutrient_loss_risk, nutrient_retentive, or nutrient_responsive zones based on CEC, sand/clay, SOC, pH, and leaching risk.
21
+
-`GET /fields/{id}/soil/nutrient-context` endpoint — returns zone classification with confidence score and agronomic interpretation.
22
+
-**Carbon sequestration estimation** — Hassink (1997) clay-dependent protective capacity model with climate zone adjustment; estimates current SOC stock, saturation deficit, and sequestration potential range.
23
+
-`GET /fields/{id}/soil/carbon-estimate` endpoint — returns current SOC stock, estimated saturation, and conservative sequestration potential (30–70% of deficit).
24
+
-**Soil × weather stress indicators** — combines rootzone AWC with 30-day water balance, drought index, and soil moisture to detect drought/wet/optimal conditions.
25
+
-`GET /fields/{id}/soil/weather-stress` endpoint — returns stress status with severity score (0–1) and contributing factors.
26
+
-**Rosetta PTF integration** — pedotransfer functions estimate field capacity, wilting point, and saturated hydraulic conductivity from texture + bulk density on soil layers.
-`soil_context` JSONB column on alerts table — stores soil property values at alert creation time (same pattern as `weather_context`).
32
+
- Soil alerts displayed in alert list with soil-specific icons, property values, and thresholds.
33
+
-**Soil summary in share reports** — texture class, pH, SOC, CEC, drainage included in public share page report alongside weather summary.
34
+
-`soil_summary` in `ShareReportOut` API schema.
35
+
- Soil summary section on public share page with cards for texture, pH, organic carbon, CEC, AWC, drainage.
36
+
-**Sampling zone map markers** — bullseye-style markers on MapLibre (outer ring + inner disc + center dot) with priority color coding (P1=red, P2=yellow, P3=blue).
37
+
-**Scouting observation map markers** — amber circle markers with white stroke and observation detail popups.
38
+
-**Interactive map popups** — CSS-based popup styling using shadcn design tokens (`--popover`, `--popover-foreground`, `--muted-foreground`) for dark mode compatibility.
39
+
- Click-to-zoom on sampling zone sidebar cards — `flyTo` with zoom level 17.
40
+
- Tab-based marker visibility toggling — scouting markers only visible on scouting tab, sampling markers only visible on soil tab.
41
+
- Soil tab intelligence panels — crop suitability card with ranked list, nutrient context badges, carbon estimation gauge with sequestration range, weather stress traffic-light indicator, sampling zones sidebar.
42
+
- Crop suitability weather-required info banner when weather data is insufficient.
43
+
- Alembic migration `0012_add_derived_agronomic_columns` — field capacity, wilting point, saturated conductivity, AWC derived columns on soil layers.
-**Interactive Map**: MapLibre + PMTiles (no Mapbox needed), multi-layer toggle, per-index colormaps, scouting and sampling zone markers with interactive popups
0 commit comments