# لیست APIهایی که با استفاده از PCSE تحلیل انجام می‌دهند این فایل APIهایی را فهرست می‌کند که در این پروژه یا مستقیماً از `PCSE` استفاده می‌کنند، یا بخشی از تحلیلشان به خروجی‌های شبیه‌سازی `PCSE` وابسته است. همچنین مشخص می‌کند: - از چه مدل `PCSE` استفاده می‌شود - ورودی‌های لازم `PCSE` در این پروژه از کجا تأمین می‌شوند - برنامه آبیاری، برنامه کودهی و داده آب‌وهوا چطور به مدل تزریق می‌شوند ## مدل PCSE مورد استفاده در پروژه مدل پیش‌فرضی که در سرویس شبیه‌سازی استفاده می‌شود این است: - `Wofost81_NWLP_CWB_CNB` توضیح کوتاه: - `Wofost81`: نسخه 8.1 از خانواده مدل‌های WOFOST - `NWLP`: شبیه‌سازی با محدودیت نیتروژن - `CWB`: water balance - `CNB`: carbon/nitrogen balance بنابراین APIهایی که واقعاً از موتور اصلی شبیه‌سازی استفاده می‌کنند، عملاً روی این مدل اجرا می‌شوند مگر اینکه بعداً در کد override شده باشد. ## PCSE در این پروژه چه ورودی‌هایی می‌خواهد؟ در این پروژه لایه شبیه‌سازی برای اجرای `PCSE` این ورودی‌ها را می‌سازد: ### 1. `weather` رکوردهای آب‌وهوا با فیلدهای زیر: - `DAY` - `LAT` - `LON` - `ELEV` - `IRRAD` - `TMIN` - `TMAX` - `VAP` - `WIND` - `RAIN` - `E0` - `ES0` - `ET0` ### 2. `soil` پارامترهای خاک، از جمله: - `SMFCF` - `SMW` - `SM0` - `RDMSOL` - `CRAIRC` - `SOPE` - `KSUB` و در این پروژه بعضی شاخص‌های کمکی هم کنار آن نگهداری می‌شوند، مثل: - `nitrogen` - `phosphorus` - `potassium` - `soil_ph` - `electrical_conductivity` ### 3. `site_parameters` پارامترهای سایت/شرایط اولیه، از جمله: - `WAV` - `SMLIM` - `IFUNRN` - `NOTINF` - `SSI` - `SSMAX` - `NAVAILI` ### 4. `crop_parameters` پارامترهای محصول. این‌ها یا از پروفایل شبیه‌سازی گیاه می‌آیند، یا اگر موجود نباشند به‌صورت default ساخته می‌شوند. مهم‌ترین defaultها: - `crop_name` - `TSUM1` - `TSUM2` - `YIELD_SCALE` - `MAX_LAI` - `MAX_BIOMASS` ### 5. `agromanagement` تقویم و رویدادهای زراعی، شامل: - `CropCalendar` - `TimedEvents` - `StateEvents` همین بخش جایی است که برنامه آبیاری و برنامه کودهی به شبیه‌سازی تزریق می‌شود. ## ورودی‌ها از کجا می‌آیند؟ ### آب‌وهوا منبع اصلی: - جدول `WeatherForecast` مسیر تولید: - با `farm_uuid` مزرعه پیدا می‌شود - از `center_location` مزرعه، forecastها خوانده می‌شوند - معمولاً تا `14` روز آینده برداشته می‌شوند - داده‌های `precipitation` و `et0` که در دیتابیس به `mm/day` هستند، برای `PCSE` به `cm/day` تبدیل می‌شوند فیلدهایی که از forecast استفاده می‌شوند: - `forecast_date` → `DAY` - `temperature_min` → `TMIN` - `temperature_max` یا `temperature_mean` → `TMAX` - `humidity_mean` → `VAP` - `wind_speed_max` → `WIND` - `precipitation` → `RAIN` - `et0` → `E0`, `ES0`, `ET0` اگر کاربر خودش `weather` را مستقیم بدهد، همان ورودی مستقیم استفاده می‌شود. ### خاک و وضعیت سایت منبع اصلی: - جدول `SensorData` - رابطه `center_location.depths` - بخشی از `sensor_payload` نحوه ساخت: - از لایه سطحی خاک (`top_depth`) پارامترهایی مثل `wv0033`, `wv1500`, `porosity` خوانده می‌شوند - از روی آن‌ها `SMFCF`, `SMW`, `SM0` ساخته می‌شود - از `sensor_payload`، شاخص‌هایی مثل `soil_moisture`, `nitrogen`, `phosphorus`, `potassium`, `soil_ph`, `electrical_conductivity` استخراج می‌شود - سپس از این‌ها `soil` و `site_parameters` نهایی ساخته می‌شود ### پارامترهای محصول منبع اصلی: - مدل `Plant` اولویت تأمین: 1. `simulation profile` داخل یکی از این profileها: - `growth_profile.simulation` - `irrigation_profile.simulation` - `health_profile.simulation` 2. اگر profile آماده وجود نداشته باشد، پارامترهای پیش‌فرض از روی اطلاعات رشد گیاه ساخته می‌شوند ### تقویم زراعی `agromanagement` منبع اصلی: - اگر در `simulation profile` گیاه موجود باشد، از همان استفاده می‌شود - وگرنه به‌صورت پیش‌فرض از بازه زمانی آب‌وهوای موجود ساخته می‌شود ساختار پیش‌فرض: - `crop_start_date` از اولین روز forecast - `crop_end_date` از آخرین روز forecast یا کمی بعد از آن - `TimedEvents` و `StateEvents` به‌صورت اولیه خالی هستند ## 1) APIهای مستقیم و قطعی مبتنی بر PCSE ### 1. `POST /api/crop-simulation/growth/` - کاربرد: اجرای شبیه‌سازی رشد گیاه. - نقش PCSE: هسته اصلی این API اجرای مدل شبیه‌سازی `PCSE/WOFOST` است. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - ورودی‌ها: - آب‌وهوا: از `WeatherForecast` یا ورودی مستقیم `weather` - خاک: از `SensorData` و `center_location.depths` - crop parameters: از `Plant` و `simulation profile` یا default - agromanagement: از `simulation profile` یا default - نوع استفاده: مستقیم. ### 2. `GET /api/crop-simulation/growth//status/` - کاربرد: دریافت وضعیت و نتیجه شبیه‌سازی رشد. - نقش PCSE: نتیجه‌ای که برمی‌گرداند خروجی همان شبیه‌سازی مبتنی بر `PCSE` است. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - نوع استفاده: مستقیم. ### 3. `POST /api/crop-simulation/current-farm-chart/` - کاربرد: تولید chart وضعیت فعلی مزرعه. - نقش PCSE: داده‌های chart مثل `LAI`، `TAGP`، `TWSO`، `SM` و `daily_output` از شبیه‌سازی `PCSE` ساخته می‌شوند. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - ورودی‌ها: - `farm_uuid` - آب‌وهوا از `WeatherForecast` - خاک/سایت از `SensorData` و داده‌های خاک location - پارامتر گیاه از `Plant` - نوع استفاده: مستقیم. ### 4. `POST /api/crop-simulation/yield-prediction/` - کاربرد: پیش‌بینی عملکرد مزرعه. - نقش PCSE: عملکرد پیش‌بینی‌شده از خروجی شبیه‌سازی رشد/خروجی‌های `PCSE` استخراج می‌شود. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - ورودی‌ها: همان ورودی‌های `current-farm-chart` - نوع استفاده: مستقیم. ### 5. `POST /api/crop-simulation/harvest-prediction/` - کاربرد: پیش‌بینی زمان تقریبی برداشت. - نقش PCSE: با استفاده از `daily_output`، `DVS` و سایر خروجی‌های شبیه‌سازی، زمان رسیدن به برداشت برآورد می‌شود. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - ورودی‌ها: همان ورودی‌های شبیه‌سازی رشد مزرعه - نوع استفاده: مستقیم. ### 6. `GET /api/crop-simulation/yield-harvest-summary/` - کاربرد: خلاصه عملکرد و برداشت. - نقش PCSE: چند بخش این API مثل `yield_prediction`، `harvest_prediction_card` و `yield_prediction_chart` از خروجی‌های شبیه‌سازی `PCSE` تغذیه می‌شوند. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - ورودی‌ها: - خروجی `yield_prediction` - خروجی `harvest_prediction` - خروجی `current-farm-chart` - همگی در نهایت متکی به همان ورودی‌های farm/weather/soil/plant هستند - نوع استفاده: مستقیم/ترکیبی. ### 7. `POST /api/irrigation/water-stress/` - کاربرد: محاسبه شاخص تنش آبی مزرعه. - نقش PCSE: این API از شبیه‌سازی `crop_simulation` استفاده می‌کند و شاخص تنش آبی را با تکیه بر خروجی‌هایی مثل `SM`، `DVS`، `ET0` و `RAIN` می‌سازد. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - ورودی‌ها: - آب‌وهوا از `WeatherForecast` - خاک و رطوبت خاک از `SensorData` - پارامتر گیاه از `Plant` - نوع استفاده: مستقیم، ولی شاخص نهایی یک فرمول داخلی روی خروجی شبیه‌سازی است. ## 2) APIهایی که بخشی از تحلیلشان ممکن است با PCSE انجام شود ### 8. `POST /api/irrigation/recommend/` - کاربرد: تولید توصیه آبیاری. - نقش PCSE: در صورت موجود بودن `simulation profile`، داده مزرعه و forecast مناسب، optimizer ابتدا سناریوهای آبیاری را با `PCSE` ارزیابی می‌کند. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - برنامه آبیاری از کجا می‌آید؟ - ابتدا در خود سیستم چند strategy ساخته می‌شود - بر اساس `daily_water_needs` و تعداد eventها، برای هر سناریو `irrigation_events` ساخته می‌شود - این eventها به شکل `TimedEvents` با سیگنال `irrigate` وارد `agromanagement` می‌شوند - آب‌وهوا از کجا می‌آید؟ - از forecastهای جدول `WeatherForecast` - سایر ورودی‌ها از کجا می‌آیند؟ - خاک و رطوبت و مواد غذایی: از `SensorData` - گیاه و simulation profile: از `Plant` - نکته: اگر شرایط کافی نباشد، به مسیر heuristic برمی‌گردد. - نوع استفاده: مشروط/جزئی. ### 9. `POST /api/fertilization/recommend/` - کاربرد: تولید توصیه کودهی. - نقش PCSE: در صورت موجود بودن `simulation profile` و forecast، سناریوهای کودهی با `PCSE` شبیه‌سازی و امتیازدهی می‌شوند. - مدل PCSE: `Wofost81_NWLP_CWB_CNB` - برنامه کودهی از کجا می‌آید؟ - optimizer چند سناریوی کودهی می‌سازد - برای هر سناریو event کودهی به شکل `TimedEvents` - با سیگنال `apply_n` - و payload شامل `N_amount` و `N_recovery` - وارد `agromanagement` می‌شود - آب‌وهوا از کجا می‌آید؟ - از forecastهای جدول `WeatherForecast` - سایر ورودی‌ها از کجا می‌آیند؟ - خاک و وضعیت عناصر از `SensorData` - پروفایل گیاه از `Plant` - نکته: اگر `PCSE` یا داده کافی در دسترس نباشد، fallback heuristic استفاده می‌شود. - نوع استفاده: مشروط/جزئی. ## 3) APIهایی که از PCSE استفاده نمی‌کنند این endpointها در همین حوزه هستند اما خودشان تحلیل مبتنی بر `PCSE` انجام نمی‌دهند: - `POST /api/irrigation/plan-from-text/` - `POST /api/fertilization/plan-from-text/` این دو بیشتر parser متن آزاد هستند و برنامه را از متن به JSON ساختاریافته تبدیل می‌کنند. ## جمع‌بندی کوتاه اگر بخواهیم فقط APIهایی را نام ببریم که واقعاً تحلیل یا شبیه‌سازی وابسته به `PCSE` دارند، مهم‌ترین‌ها این‌ها هستند: - `POST /api/crop-simulation/growth/` - `GET /api/crop-simulation/growth//status/` - `POST /api/crop-simulation/current-farm-chart/` - `POST /api/crop-simulation/yield-prediction/` - `POST /api/crop-simulation/harvest-prediction/` - `GET /api/crop-simulation/yield-harvest-summary/` - `POST /api/irrigation/water-stress/` - `POST /api/irrigation/recommend/` (مشروط) - `POST /api/fertilization/recommend/` (مشروط) ## جمع‌بندی فنی خیلی کوتاه - مدل اصلی `PCSE` در این پروژه: `Wofost81_NWLP_CWB_CNB` - آب‌وهوا عمدتاً از `WeatherForecast` می‌آید - خاک و رطوبت و بخشی از وضعیت تغذیه از `SensorData` و داده‌های خاک location می‌آید - پارامترهای گیاه و setup شبیه‌سازی از `Plant` و `simulation profile` می‌آید - برنامه آبیاری و کودهی در optimizer ساخته می‌شوند و از طریق `TimedEvents` داخل `agromanagement` به `PCSE` تزریق می‌شوند