27 KiB
27 KiB
ممیزی ضعفها و میزان اعتماد APIها
این سند بر اساس بررسی کد فعلی پروژه نوشته شده است و هدفش این است که برای هر API مشخص کند:
- خروجی روی چه داده یا فرمولی تکیه دارد
- کجاها خروجی صرفا تقریبی، heuristic، mock یا وابسته به LLM است
- برای چه نوع استفادهای قابل اتکا هست و برای چه نوع تصمیمی نیست
- سطح اعتماد عملی به پاسخ خروجی چقدر است
توجه:
- این سند درباره
قابلیت اتکای عملیاتیاست، نه فقط درست بودن ساختار JSON. - ممکن است یک API از نظر فنی همیشه JSON درست برگرداند، اما از نظر agronomy یا تصمیمسازی هنوز کماعتماد باشد.
- سطح اعتماد به معنی اعتماد به
محتوای پاسخاست، نه availability سرویس.
معیار سطح اعتماد
زیاد: عمدتا داده واقعی یا ذخیره شده برمیگرداند؛ فرمول یا منطق ساده ولی قابل توضیح است؛ برای نمایش و گزارش مناسب است.متوسط: داده واقعی دارد اما بخش مهمی از نتیجه وابسته به تقریب، پیشفرض، شبیهسازی، یا LLM است.کم: نتیجه بیشتر heuristic، fallback، برآورد تقریبی، یا تلفیق داده ناقص است.خیلی کم: داده mock، stub، یا خروجی عمدتا غیرقابل اتکا برای تصمیم واقعی.
خلاصه سریع APIهای پرریسک
POST /api/economy/overview/: داده کاملا mock است؛ برای تصمیم واقعی نباید استفاده شود.POST /api/plants/fetch-info/: عملا پیادهسازی نشده و503برمیگرداند.POST /api/irrigation/water-stress/: اگر engine شبیهسازی خطا بدهد هنوز به فرمول ساده سنسور fallback میکند.POST /api/pest-disease/detect/وPOST /api/pest-disease/risk/: وابستگی مستقیم به RAG/LLM دارند؛ برای KPI قطعی یا تصمیم سمپاشی خودکار مناسب نیستند.POST /api/farm-alerts/tracker/وPOST /api/farm-alerts/timeline/: ترکیب rule-based + LLM هستند؛ برای آگاهی خوباند ولی برای اتوماسیون بحرانی نه.POST /api/soile/moisture-heatmap/: visualization خوبی میدهد اما هنوز geostatistics دقیق یا history واقعی سنسورها را مدل نمیکند.
1) Soil Data API
GET|POST /api/soil-data/
- منبع داده:
- اگر رکورد کامل موجود باشد از DB برمیگردد.
- اگر موجود نباشد فقط task صف میشود و
202میدهد.
- ضعفها:
- در حالت
202هنوز خود داده خاک برنگشته، فقط شروع فرآیند واکشی اعلام میشود. - تطابق location بر اساس
lat/lonگرد شده تا 6 رقم است؛ برای نقاط خیلی نزدیک ممکن است حساسیت مکانی محدود شود. - کیفیت نهایی کاملا وابسته به سرویس بیرونی خاک و کامل شدن depthهاست.
- در حالت
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- این API خودش مدل پیشبینی ندارد؛ ریسک اصلی از ناقص بودن داده منبع یا incomplete بودن رکورد است.
- مناسب برای:
- واکشی داده خام خاک و persistence.
- نامناسب برای:
- استنتاج agronomy بدون بررسی منبع و completeness.
- سطح اعتماد:
زیادوقتیsource=databaseو location کامل است.کموقتی فقطtask_idگرفتهاید و هنوز داده واقعی ندارید.
GET /api/soil-data/tasks/{task_id}/status/
- منبع داده: وضعیت Celery + نتیجه ذخیره شده در DB.
- ضعفها:
- ممکن است task موفق شده باشد ولی رکورد location هنوز کامل نباشد.
- خروجی
SUCCESSلزوما به معنی کیفیت agronomic داده نیست؛ فقط completion فنی را نشان میدهد.
- سطح اعتماد:
متوسطبرای وضعیت فنی task.کم تا متوسطبرای اعتماد به خود محتوای خاک، بسته به کامل بودن رکورد.
POST /api/soil-data/ndvi-health/
- منبع داده: observation ماهوارهای NDVI در
location_data.ndvi. - ضعفها:
- اگر observation موجود نباشد، کارت عملا به وضعیت
Unavailableمیرسد. - تفسیر NDVI ساده است و به تنهایی برای تشخیص علت تنش کافی نیست.
- NDVI میانگین مزرعه است؛ heterogeneity داخل مزرعه را کامل نشان نمیدهد.
- اگر observation موجود نباشد، کارت عملا به وضعیت
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- NDVI فقط شاخص پوشش گیاهی است، نه تشخیص علت؛ کمبود آب، بیماری، تغذیه یا خطای سنجش ممکن است با هم اشتباه شوند.
- سطح اعتماد:
متوسطبرای پایش کلی وضعیت پوشش گیاهی.کمبرای تصمیمگیری علّی یا درمانی.
2) Soile API
POST /api/soile/moisture-heatmap/
- منبع داده:
- latest measurement هر سنسور
- وزندهی تازگی داده
- جریمه outlier
- interpolation از نوع weighted IDW
- mask مرز مزرعه
- ضعفها:
- history واقعی سنسورها هنوز مدل نمیشود.
- drift سنسور، calibration uncertainty و quality assurance واقعی لحاظ نشدهاند.
- depth-specific map به صورت measured واقعی نیست و بخشی از لایهها از soil profile مشتق میشوند.
- uncertainty به صورت heuristic برآورد میشود.
- با تراکم سنسور پایین یا farm نامتقارن، heatmap بیشتر visualization است تا اندازهگیری دقیق.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- مدل interpolation علمی پیشرفته مثل kriging یا مدل uncertainty مکانی ندارد.
- خروجی برای zoning دقیق agronomy کافی نیست.
- سطح اعتماد:
متوسطبرای visualization و درک trend کلی.کمبرای تصمیم آبیاری دقیق نقطهای یا نسخه agronomy.
POST /api/soile/health-summary/
- منبع داده: داده سنسور + خلاصهساز سلامت خاک.
- ضعفها:
- خلاصه سلامت ذاتا compression از چند متریک است و همه context مزرعه را در بر نمیگیرد.
- اگر سنسورهای مزرعه کمتعداد یا دادههایشان قدیمی باشد، summary گمراهکننده میشود.
- سطح اعتماد:
متوسطبرای dashboard summary.کم تا متوسطبرای تصمیم اصلاح خاک بدون نمونهبرداری میدانی.
POST /api/soile/anomaly-detection/
- منبع داده: anomaly آماری + تفسیر RAG.
- ضعفها:
- anomaly detection بر اساس context موجود است و به history و baseline کامل چندفصلی متکی نیست.
- تفسیر نهایی توسط RAG تولید میشود و deterministic نیست.
- اگر anomaly آماری واقعی نباشد، LLM ممکن است فقط آن را با متن تخصصی بسط دهد.
- سطح اعتماد:
متوسطبرای پیدا کردن موارد مشکوک.کمبرای diagnosis نهایی بدون تایید کارشناس.
3) Weather API
POST /api/weather/farm-card/
- منبع داده: forecastهای ذخیرهشده در DB از سرویس هواشناسی خارجی.
- ضعفها:
- docstring سرویس هنوز misleading است، ولی کد واقعا
requests.getمیزند. - اگر forecast تازه نباشد، کارت weather کهنه میشود.
- کارت فقط summary ساده از forecast است و uncertainty پیشبینی هوا را منتقل نمیکند.
- اگر forecast موجود نباشد، خروجی عملا صفر/نامشخص میشود.
- docstring سرویس هنوز misleading است، ولی کد واقعا
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- مشکل اصلی فرمول نیست؛ dependency به forecast خارجی و freshness داده است.
- سطح اعتماد:
متوسط تا زیادوقتی forecast تازه و کامل موجود باشد.کموقتی داده weather ناقص یا قدیمی باشد.
POST /api/weather/water-need-prediction/
- منبع داده:
- محاسبات ET/crop profile از
irrigation.evapotranspiration - forecast هفتروزه
- تفسیر تکمیلی از RAG
- محاسبات ET/crop profile از
- ضعفها:
- دقت خروجی به کیفیت crop profile، growth stage و راندمان روش آبیاری وابسته است.
- horizon فقط کوتاهمدت است.
- insight متنی توسط LLM تولید میشود و fallback هم دارد.
- اگر forecast ضعیف باشد، کل محاسبه نیاز آبی ضعیف میشود.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- برای برنامهریزی کوتاهمدت خوب است، اما irrigation scheduling دقیق در مزرعه واقعی هنوز به سنسور و بازخورد عملی نیاز دارد.
- سطح اعتماد:
متوسطبرای برنامهریزی 3 تا 7 روزه.کم تا متوسطبرای تصمیم اجرایی بدون کنترل میدانی.
4) Economy API
POST /api/economy/overview/
- منبع داده:
mockصریح در سرویس. - ضعفها:
- کل خروجی ساختگی است.
- اعداد هزینه آب، صرفهجویی، درآمد و هزینه کود از مزرعه واقعی استخراج نمیشوند.
- trend chart نیز mock است.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- این API فعلا برای عملیات واقعی قابل اتکا نیست.
- سطح اعتماد:
خیلی کم
5) Plant API
GET|POST /api/plants/ و GET|PUT|PATCH|DELETE /api/plants/{id}/
- منبع داده: رکوردهای DB.
- ضعفها:
- اعتماد به محتوای agronomic رکوردها بستگی به کسی دارد که داده را وارد کرده است.
- validation دامنهای یا علمی عمیق روی محتوا دیده نمیشود.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- مشکل اصلی از جنس data governance است، نه الگوریتم.
- سطح اعتماد:
زیادبرای اینکه رکوردی که ذخیره شده همان برگردد.متوسطبرای اعتماد علمی به محتوای متنی رکوردها.
POST /api/plants/fetch-info/
- منبع داده: قرار بوده API خارجی باشد، ولی فعلا
Noneبرمیگرداند. - ضعفها:
- عملا پیادهسازی نشده است.
- در حالت فعلی
503میدهد.
- سطح اعتماد:
خیلی کم
6) Farm Data API
POST /api/farm-data/
- منبع داده:
- boundary مزرعه
- sensor payload
- واکشی خودکار location و weather
- نقاط قوت فعلی:
- مرکز مزرعه با centroid هندسی polygon محاسبه میشود، نه average ساده.
- merge سنسورها flat و overwrite خاموش ندارد؛ payload هر sensor جدا میماند.
- ضعفها:
- centroid هندسی هنوز برای همه use-caseها بهترین نقطه نمونهبرداری نیست؛ مخصوصا در مزرعههای خیلی کشیده یا چندبخشی.
- health داده به شدت به درست بودن boundary ورودی وابسته است.
- location و weather فقط برای یک نقطه مرکزی resolve میشوند؛ variability در سطح مزرعه از بین میرود.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- این API بیشتر data-ingestion است؛ ضعف اصلی spatial representativeness است.
- سطح اعتماد:
زیادبرای ذخیرهسازی و linkage داده.متوسطبرای این فرض که یک center point نماینده کل مزرعه است.
GET /api/farm-data/{farm_uuid}/detail/
- منبع داده:
- sensor payload
- soil depth data
- weather
- plants و irrigation method
- resolved_metrics با aggregation deterministic
- نقاط قوت فعلی:
- conflict چند سنسور silent overwrite نمیشود.
- source هر metric در
metric_sourcesمشخص میشود.
- ضعفها:
- aggregation متریکهای عددی در تعارض، به average ختم میشود؛ این روش همیشه از نظر agronomy بهترین strategy نیست.
- sensor locality و timestamp تفکیکشده در resolved_metrics نهایی از بین میرود.
- برای farm چندناحیهای، یک resolved metric ممکن است variance مهم را پنهان کند.
- سطح اعتماد:
متوسط تا زیادبرای unified context.متوسطبرای تصمیم نقطهای داخل مزرعه.
POST /api/farm-data/parameters/
- منبع داده: DB و log تغییرات.
- ضعفها:
- افزودن پارامتر جدید به معنی معتبر بودن agronomic آن نیست.
- کیفیت metadata وابسته به داده ورودی کاربر است.
- سطح اعتماد:
زیادبرای ثبت و نگهداری metadata.متوسطبرای معنی علمی metadata.
7) Irrigation API
GET|POST /api/irrigation/ و GET /api/irrigation/{id}/
- منبع داده: رکوردهای روش آبیاری در DB.
- ضعفها:
- درصد راندمان و توضیحات روش آبیاری اگر دستی وارد شده باشند، لزوما calibrated برای مزرعه خاص نیستند.
- سطح اعتماد:
زیادبرای بازگرداندن داده ذخیرهشده.متوسطبرای کاربرد agronomic عمومی.
POST /api/irrigation/recommend/
- منبع داده:
- sensor/farm context
- plant data
- irrigation method
- محاسبات FAO-56 و optimizer
- متن نهایی از RAG
- نقاط قوت فعلی:
- پاسخ نهایی provenance دارد و مشخص میکند کدام فیلد از LLM و کدام از fallback آمده است.
- ضعفها:
- merge نهایی هنوز deterministic است و برای پایداری UI fallback را نگه میدارد.
- اگر crop profile، weather یا irrigation method درست نباشد، recommendation قابل اتکا نیست.
- optimizer و LLM هر دو وابسته به کیفیت ورودی هستند.
- خروجی ممکن است از نظر ظاهر کامل باشد، حتی وقتی بخشی از آن fallback است.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- برای تصمیم نهایی آبیاری در مزرعه، باید provenance و fallback بودن بخشها دیده شود.
- سطح اعتماد:
متوسطوقتی داده مزرعه کامل باشد و fallback محدود باشد.کم تا متوسطوقتی بخشهای زیادی fallback شده باشند.
POST /api/irrigation/water-stress/
- منبع داده:
- ابتدا سرویس crop simulation
- در صورت خطا fallback به فرمول ساده
clamp(round(35 - (soil_moisture / 2)), 0, 100)
- ضعفها:
- اگر engine اصلی خطا بدهد هنوز به فرمول ساده سنسوری fallback میشود.
- fallback فقط از
soil_moistureاستفاده میکند و ET0، بارش، root depth، نوع گیاه، مرحله رشد و روند زمانی را نادیده میگیرد. - بنابراین ظاهر endpoint ممکن است simulation-based باشد اما در failure عملا heuristic برگرداند.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- هر خروجیای که
sourceMetric.engine = sensor_fallbackداشته باشد برای KPI دقیق تنش آبی قابل اتکا نیست.
- هر خروجیای که
- سطح اعتماد:
متوسطاگر واقعا از simulation engine آمده باشد.کماگر fallback سنسوری فعال شده باشد.
8) Fertilization API
POST /api/fertilization/recommend/
- منبع داده:
- sensor/farm context
- plant data
- optimizer
- RAG
- نقاط قوت فعلی:
- مانند irrigation، provenance بخشها اضافه شده و تشخیص fallback بهتر شده است.
- ضعفها:
- merge نهایی هنوز deterministic است و ساختار UI را حتی در خروجی ضعیف حفظ میکند.
- وضعیت واقعی عناصر غذایی مزرعه به sample quality و coverage محدود است.
- مدل crop-specific کامل و region-specific صریح دیده نمیشود.
- پاسخ متنی نهایی LLM-based است.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- برای نسخه کود نهایی بدون آزمون خاک و تایید agronomist کافی نیست.
- سطح اعتماد:
متوسطبرای پیشنهاد اولیه.کم تا متوسطبرای prescription نهایی.
9) Pest & Disease API
POST /api/pest-disease/detect/
- منبع داده:
- تصویر ارسالی
- context مزرعه
- knowledge base
- LLM vision / RAG
- ضعفها:
- دقت شدیدا به کیفیت، زاویه، نور و فاصله تصویر وابسته است.
- خروجی deterministic نیست.
- confidence هم از خود مدل میآید و لزوما calibrated نیست.
- ممکن است علائم تغذیهای، abiotic stress و بیماری با هم اشتباه شوند.
- سطح اعتماد:
کم تا متوسطبرای triage اولیه.کمبرای تصمیم سمپاشی یا تشخیص قطعی.
POST /api/pest-disease/risk/
- منبع داده:
- context مزرعه
- weather
- knowledge base
- RAG
- ضعفها:
- هرچند intent آن RAG-based است، در لایه سرویس هنوز fallback heuristic نیز وجود دارد.
- risk forecast region-specific و crop-specific calibrated model ندارد.
- خروجی نهایی به retrieval quality و model behavior وابسته است.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- این endpoint باید فعلا به عنوان expert-assist دیده شود، نه predictive model قطعی.
- سطح اعتماد:
متوسطبرای آگاهی از ریسک کلی.کمبرای عملیات خودکار یا قطعی.
POST /api/pest-disease/risk-summary/
- منبع داده: خلاصه سبکتر از همان سرویس RAG.
- نقاط قوت فعلی:
- دیگر صرفا heuristic ثابت قبلی نیست و از RAG تغذیه میشود.
- ضعفها:
- چون summary است، جزئیات uncertainty کمتر دیده میشود.
- اگر RAG fallback یا retrieval ضعیف داشته باشد، summary هم ضعیف میشود.
- سطح اعتماد:
متوسط رو به کم
10) Crop Simulation API
POST /api/crop-simulation/growth/
- منبع داده:
- weather
- soil
- crop parameters
- agromanagement
- PCSE engine
- ضعفها:
- اگر پارامترهای واقعی مزرعه ناقص باشند، سیستم از defaultهای زیادی استفاده میکند.
- بخشی از پارامترها مثل
ELEV,IRRAD,RDMSOL,WAV,NAVAILIپیشفرضمحور هستند. - کیفیت شبیهسازی به کیفیت profile گیاه و agromanagement وابسته است.
- نکته مهم:
- در failure فعلی، خطا propagate میشود و دیگر fallback projection در مسیر اصلی برگردانده نمیشود؛ این از نظر شفافیت خوب است.
- سطح اعتماد:
متوسطوقتی ورودیها خوب باشند و PCSE درست اجرا شود.کم تا متوسطوقتی بخش زیادی از ورودیها default باشند.
GET /api/crop-simulation/growth/{task_id}/status/
- منبع داده: status تسک + نتیجه شبیهسازی.
- ضعفها:
- وضعیت
SUCCESSبه معنی خوب بودن ورودیهای مدل نیست. - pageبندی timeline فقط presentation است و تضمین کیفیت علمی مدل نمیدهد.
- وضعیت
- سطح اعتماد:
زیادبرای وضعیت فنی task.متوسطبرای محتوای simulation output.
POST /api/crop-simulation/current-farm-chart/
- منبع داده: simulation engine + context فعلی مزرعه.
- ضعفها:
- chart از شبیهسازی میآید، نه مشاهده واقعی برگ/بیوماس/weight.
leaf_count_estimateو برخی شاخصها derived هستند، نه measured.- اگر weather forecast یا plant profile ضعیف باشد، chart گمراهکننده میشود.
- سطح اعتماد:
متوسطبرای KPI بصری و trend.کم تا متوسطبرای تصمیم agronomy دقیق.
POST /api/crop-simulation/harvest-prediction/
- منبع داده:
- growth simulation
- GDD profile
- extrapolation تا رسیدگی
- ضعفها:
- اگر maturity داخل بازه forecast رخ ندهد، تاریخ برداشت با extrapolation از میانگین رشد برآورد میشود.
- بنابراین بخشهایی از تاریخ برداشت پیشبینیشده ممکن است فراتر از خروجی واقعی engine باشند.
- وابستگی زیاد به
required_gdd_for_maturityو current profile گیاه دارد.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- برای برنامهریزی برداشت به عنوان estimate مناسب است، نه تعهد تقویمی قطعی.
- سطح اعتماد:
متوسط
POST /api/crop-simulation/yield-prediction/
- منبع داده: خروجی شبیهسازی رشد و تبدیل آن به yield KPI.
- ضعفها:
- عملکرد نهایی به کیفیت شبیهسازی upstream وابسته است.
- اگر داده soil fertility، weather یا management واقعی نباشند، yield estimate فقط تقریبی است.
- حمایت از uncertainty interval یا confidence band دیده نمیشود.
- سطح اعتماد:
متوسط رو به کم
11) Farm Alerts API
POST /api/farm-alerts/tracker/
- منبع داده:
- rule-based tracker
- thresholdهای hard-coded
- خلاصه و notification با RAG/LLM
- ضعفها:
- alert tracker پایه، heuristic و threshold-driven است.
- آستانههای moisture، pH، EC، fungal risk و ... hard-coded هستند.
- region-specific و crop-specific calibration محدود است.
- اگر LLM JSON بد برگرداند، fallback rule-based جای آن را میگیرد.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- برای هشدارآگاهی مناسب است، نه برای auto-actuation.
- سطح اعتماد:
متوسطبرای شناسایی موارد مشکوک.کم تا متوسطبرای اقدام خودکار.
POST /api/farm-alerts/timeline/
- منبع داده: همان tracker + LLM timeline.
- ضعفها:
- timeline بیشتر narration است تا سنجش مستقل.
- اگر مبنای alertها heuristic باشد، timeline فقط همان heuristic را بازبستهبندی میکند.
- سطح اعتماد:
کم تا متوسط
12) RAG API
POST /api/rag/chat/
- منبع داده:
- farm context
- history
- images احتمالی
- retrieval از knowledge base
- LLM
- ضعفها:
- پاسخ stream میشود و structure قراردادی سختی ندارد.
- hallucination، retrieval miss، و dependence به prompt/tone وجود دارد.
- برای سوالهای policy/diagnosis/operation ممکن است confident but wrong باشد.
- اگر فرمول/اطلاعات قابل اتکا نباشد:
- این endpoint باید دستیار تحلیلی در نظر گرفته شود، نه source of truth.
- سطح اعتماد:
کم تا متوسط
POST /api/rag/recommend/irrigation/
- ماهیت:
- عملا همان recommendation RAG-based آبیاری را مستقیما expose میکند.
- ضعفها:
- همان ضعفهای
POST /api/irrigation/recommend/را دارد. - ظاهر کامل پاسخ میتواند fallback بودن بخشهایی از محتوا را پنهان کند، هرچند provenance اضافه شده است.
- همان ضعفهای
- سطح اعتماد:
متوسطبا ورودی خوبکم تا متوسطبا fallback زیاد
POST /api/rag/recommend/fertilization/
- ماهیت:
- مستقیمترین مسیر recommendation کودهی مبتنی بر RAG است.
- ضعفها:
- همان ضعفهای
POST /api/fertilization/recommend/را دارد.
- همان ضعفهای
- سطح اعتماد:
متوسط رو به کم
13) جمعبندی نهایی بر اساس کاربرد
APIهای مناسب برای استفاده عملیتر
POST /api/farm-data/GET /api/farm-data/{farm_uuid}/detail/GET|POST /api/soil-data/POST /api/weather/farm-card/
اینها بیشتر data-centric هستند و اگر داده منبع خوب باشد، قابل اتکاترند.
APIهای مناسب برای dashboard و insight، نه تصمیم قطعی
POST /api/soile/moisture-heatmap/POST /api/soile/health-summary/POST /api/weather/water-need-prediction/POST /api/crop-simulation/current-farm-chart/POST /api/crop-simulation/harvest-prediction/POST /api/crop-simulation/yield-prediction/POST /api/farm-alerts/tracker/POST /api/farm-alerts/timeline/
APIهای کماعتماد یا نیازمند بازطراحی
POST /api/economy/overview/POST /api/plants/fetch-info/POST /api/irrigation/water-stress/در حالت fallbackPOST /api/pest-disease/detect/برای diagnosis قطعیPOST /api/pest-disease/risk/POST /api/pest-disease/risk-summary/POST /api/rag/chat/برای پاسخهای حساس و اجرایی
14) پیشنهاد اولویت اصلاح
- حذف fallback ساده از
water-stressیا حداقل expose کردن صریح نوع engine در top-level response - جایگزینی mock در
economyبا data pipeline واقعی - پیادهسازی واقعی
plants/fetch-info - افزودن uncertainty و freshness صریح به heatmap و water-need outputs
- crop-specific و region-specific کردن alert/risk thresholds
- اضافه کردن confidence واقعی و source provenance استاندارد به تمام endpointهای RAG-based