from __future__ import annotations from django.apps import apps from farm_data.models import SensorData class WaterStressService: def get_water_stress( self, *, farm_uuid: str, plant_name: str | None = None, irrigation_recommendation: dict | None = None, fertilization_recommendation: dict | None = None, ) -> dict[str, Any]: sensor = SensorData.objects.filter(farm_uuid=farm_uuid).first() if sensor is None: raise ValueError("Farm not found.") simulation_service = apps.get_app_config("crop_simulation").get_water_stress_service() try: return simulation_service.get_water_stress( farm_uuid=str(sensor.farm_uuid), plant_name=plant_name, irrigation_recommendation=irrigation_recommendation, fertilization_recommendation=fertilization_recommendation, ) except Exception as exc: raise RuntimeError( f"Water stress simulation failed for farm {sensor.farm_uuid}: {exc}" ) from exc