This commit is contained in:
2026-05-02 14:03:48 +03:30
parent f704e1188c
commit ef593153ba
14 changed files with 1286 additions and 18 deletions
+22
View File
@@ -32,16 +32,22 @@ class YieldHarvestSummaryService:
season_year: str,
crop_name: str,
include_narrative: bool = True,
irrigation_recommendation: dict[str, Any] | None = None,
fertilization_recommendation: dict[str, Any] | None = None,
) -> dict[str, Any]:
farm_context = self._get_farm_context(farm_uuid)
farm_context["season_year"] = season_year
farm_context["crop_name"] = crop_name or farm_context.get("crop_name") or ""
farm_context["irrigation_recommendation"] = irrigation_recommendation or {}
farm_context["fertilization_recommendation"] = fertilization_recommendation or {}
yield_prediction = self._build_yield_prediction(
farm_uuid=farm_uuid,
season_year=season_year,
crop_name=crop_name,
include_narrative=include_narrative,
farm_context=farm_context,
irrigation_recommendation=irrigation_recommendation,
fertilization_recommendation=fertilization_recommendation,
)
harvest_prediction_card = self._build_harvest_prediction_card(
farm_uuid=farm_uuid,
@@ -49,6 +55,8 @@ class YieldHarvestSummaryService:
crop_name=crop_name,
include_narrative=include_narrative,
farm_context=farm_context,
irrigation_recommendation=irrigation_recommendation,
fertilization_recommendation=fertilization_recommendation,
)
harvest_readiness_zones = self._build_harvest_readiness_zones(
farm_uuid=farm_uuid,
@@ -75,6 +83,8 @@ class YieldHarvestSummaryService:
crop_name=crop_name,
include_narrative=include_narrative,
farm_context=farm_context,
irrigation_recommendation=irrigation_recommendation,
fertilization_recommendation=fertilization_recommendation,
)
season_highlights_card = self._build_season_highlights_card(
farm_uuid=farm_uuid,
@@ -126,11 +136,15 @@ class YieldHarvestSummaryService:
crop_name: str,
include_narrative: bool,
farm_context: dict[str, Any],
irrigation_recommendation: dict[str, Any] | None = None,
fertilization_recommendation: dict[str, Any] | None = None,
) -> dict[str, Any]:
service = apps.get_app_config("crop_simulation").get_yield_prediction_service()
result = service.get_yield_prediction(
farm_uuid=farm_uuid,
plant_name=crop_name or None,
irrigation_recommendation=irrigation_recommendation,
fertilization_recommendation=fertilization_recommendation,
)
supporting_metrics = dict(result.get("supportingMetrics") or {})
@@ -173,11 +187,15 @@ class YieldHarvestSummaryService:
crop_name: str,
include_narrative: bool,
farm_context: dict[str, Any],
irrigation_recommendation: dict[str, Any] | None = None,
fertilization_recommendation: dict[str, Any] | None = None,
) -> dict[str, Any]:
service = apps.get_app_config("crop_simulation").get_harvest_prediction_service()
result = service.get_harvest_prediction(
farm_uuid=farm_uuid,
plant_name=crop_name or None,
irrigation_recommendation=irrigation_recommendation,
fertilization_recommendation=fertilization_recommendation,
)
fallback_description = (
@@ -211,11 +229,15 @@ class YieldHarvestSummaryService:
crop_name: str,
include_narrative: bool,
farm_context: dict[str, Any],
irrigation_recommendation: dict[str, Any] | None = None,
fertilization_recommendation: dict[str, Any] | None = None,
) -> dict[str, Any]:
simulator = apps.get_app_config("crop_simulation").get_current_farm_chart_simulator()
result = simulator.simulate(
farm_uuid=farm_uuid,
plant_name=crop_name or None,
irrigation_recommendation=irrigation_recommendation,
fertilization_recommendation=fertilization_recommendation,
)
pcse_timeseries = list(result.get("daily_output") or [])