This commit is contained in:
2026-05-13 16:45:54 +03:30
parent 948c062b93
commit 46fe62fa04
96 changed files with 3834 additions and 155 deletions
+11 -7
View File
@@ -10,7 +10,7 @@ from django.apps import apps
from django.conf import settings
from farm_data.models import SensorData
from farm_data.services import get_farm_details
from farm_data.services import build_ai_farm_snapshot
from location_data.models import NdviObservation, SoilLocation
from rag.failure_contract import RAGServiceError
@@ -720,13 +720,13 @@ class YieldHarvestSummaryService:
"recent_sensor_averages": {},
}
farm_details = get_farm_details(str(farm_uuid)) or {}
farm_details = build_ai_farm_snapshot(str(farm_uuid)) or {}
center_location = farm.center_location
soil_details = (farm_details.get("soil") or {}).get("resolved_metrics") or {}
weather_details = farm_details.get("weather") or {}
soil_details = (farm_details.get("farm_metrics") or {}).get("resolved_metrics") or {}
weather_details = ((farm_details.get("weather") or {}).get("forecast") or {})
recent_sensor_averages = {
"soil_moisture": self._safe_float(soil_details.get("soil_moisture", farm.soil_moisture), None),
"soil_temperature": self._safe_float(soil_details.get("soil_temperature", farm.soil_temperature), None),
"soil_moisture": self._safe_float(soil_details.get("soil_moisture"), None),
"soil_temperature": self._safe_float(soil_details.get("soil_temperature"), None),
"air_temperature_mean": self._safe_float(weather_details.get("temperature_mean"), None),
}
@@ -744,7 +744,7 @@ class YieldHarvestSummaryService:
"lat": float(center_location.latitude),
"lon": float(center_location.longitude),
},
"farm_boundary": farm_details.get("center_location", {}).get("farm_boundary"),
"farm_boundary": getattr(center_location, "farm_boundary", None),
"soil": {
"provider": getattr(settings, "SOIL_DATA_PROVIDER", "نامشخص"),
"soil_type": self._infer_soil_type(soil_details),
@@ -760,6 +760,10 @@ class YieldHarvestSummaryService:
"sensor_data": SensorData.__name__,
"soil_location": SoilLocation.__name__,
},
"source_metadata": {
"farm_metrics": (farm_details.get("source_metadata") or {}).get("farm_metrics", {}),
"weather": ((farm_details.get("weather") or {}).get("source_metadata") or {}),
},
}
def _extract_pcse_dvs_stage(self, harvest_prediction_card: dict[str, Any]) -> float: