744 lines
19 KiB
Markdown
744 lines
19 KiB
Markdown
|
|
# مستند کامل APIهای آپدیتشده مرتبط با PCSE
|
||
|
|
|
||
|
|
این فایل APIهایی را توضیح میدهد که اخیراً آپدیت شدهاند تا بتوانند `برنامه آبیاری` و `برنامه کودهی` را از ورودی بگیرند و به شبیهسازی `PCSE` پاس بدهند.
|
||
|
|
|
||
|
|
APIهای این سند:
|
||
|
|
|
||
|
|
- `POST /api/crop-simulation/growth/`
|
||
|
|
- `GET /api/crop-simulation/growth/<task_id>/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/`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## فرمت مشترک `irrigation_recommendation`
|
||
|
|
|
||
|
|
این فیلد در APIهای این سند میتواند ارسال شود:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-25",
|
||
|
|
"amount": 2.5,
|
||
|
|
"efficiency": 0.8
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح فیلدها
|
||
|
|
|
||
|
|
- `events`: آرایهای از رویدادهای آبیاری
|
||
|
|
- `date`: تاریخ اجرای آبیاری
|
||
|
|
- `amount`: مقدار آبیاری برای event
|
||
|
|
- `efficiency`: راندمان آبیاری، اختیاری
|
||
|
|
|
||
|
|
### رفتار در PCSE
|
||
|
|
|
||
|
|
این دادهها به `TimedEvents` با سیگنال `irrigate` تبدیل میشوند.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## فرمت مشترک `fertilization_recommendation`
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-20",
|
||
|
|
"N_amount": 45,
|
||
|
|
"N_recovery": 0.7
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح فیلدها
|
||
|
|
|
||
|
|
- `events`: آرایهای از رویدادهای کودهی
|
||
|
|
- `date`: تاریخ اجرای کودهی
|
||
|
|
- `N_amount`: مقدار نیتروژن
|
||
|
|
- `N_recovery`: ضریب بازیافت/جذب نیتروژن
|
||
|
|
|
||
|
|
### رفتار در PCSE
|
||
|
|
|
||
|
|
این دادهها به `TimedEvents` با سیگنال `apply_n` تبدیل میشوند.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1) `POST /api/crop-simulation/growth/`
|
||
|
|
|
||
|
|
### کاربرد
|
||
|
|
|
||
|
|
شروع شبیهسازی رشد گیاه بهصورت async و برگرداندن `task_id`.
|
||
|
|
|
||
|
|
### ورودی
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"dynamic_parameters": ["DVS", "LAI", "TAGP", "TWSO", "SM"],
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"weather": [
|
||
|
|
{
|
||
|
|
"DAY": "2026-04-01",
|
||
|
|
"LAT": 35.7,
|
||
|
|
"LON": 51.4,
|
||
|
|
"TMIN": 12,
|
||
|
|
"TMAX": 24,
|
||
|
|
"RAIN": 0.0,
|
||
|
|
"ET0": 0.32
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"soil_parameters": {
|
||
|
|
"SMFCF": 0.34,
|
||
|
|
"SMW": 0.14,
|
||
|
|
"RDMSOL": 120.0
|
||
|
|
},
|
||
|
|
"site_parameters": {
|
||
|
|
"WAV": 40.0
|
||
|
|
},
|
||
|
|
"crop_parameters": {},
|
||
|
|
"agromanagement": {},
|
||
|
|
"irrigation_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-02",
|
||
|
|
"amount": 2.5
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"fertilization_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-02",
|
||
|
|
"N_amount": 45,
|
||
|
|
"N_recovery": 0.7
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"page_size": 2
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح پارامترهای ورودی
|
||
|
|
|
||
|
|
- `plant_name`: نام گیاه
|
||
|
|
- `dynamic_parameters`: لیست پارامترهای دینامیک موردنیاز در خروجی
|
||
|
|
- `farm_uuid`: شناسه مزرعه؛ اگر باشد، داده مزرعه و forecast از سیستم خوانده میشود
|
||
|
|
- `weather`: آبوهوا بهصورت مستقیم؛ اگر `farm_uuid` نباشد لازم است
|
||
|
|
- `soil_parameters`: override برای پارامترهای خاک
|
||
|
|
- `site_parameters`: override برای پارامترهای site
|
||
|
|
- `crop_parameters`: override برای پارامترهای crop
|
||
|
|
- `agromanagement`: override برای تقویم زراعی
|
||
|
|
- `irrigation_recommendation`: برنامه آبیاری برای تزریق به PCSE
|
||
|
|
- `fertilization_recommendation`: برنامه کودهی برای تزریق به PCSE
|
||
|
|
- `page_size`: اندازه صفحه مراحل رشد در endpoint وضعیت task
|
||
|
|
|
||
|
|
### اعتبارسنجی
|
||
|
|
|
||
|
|
- حداقل یکی از `farm_uuid` یا `weather` باید ارسال شود
|
||
|
|
- `dynamic_parameters` نباید خالی باشد
|
||
|
|
- `page_size` باید بین `1` تا `50` باشد
|
||
|
|
|
||
|
|
### پاسخ موفق
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 202,
|
||
|
|
"msg": "تسک شبیه سازی رشد در صف قرار گرفت.",
|
||
|
|
"data": {
|
||
|
|
"task_id": "growth-task-1",
|
||
|
|
"status_url": "/api/crop-simulation/growth/growth-task-1/status/",
|
||
|
|
"plant_name": "گوجهفرنگی"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح فیلدهای پاسخ
|
||
|
|
|
||
|
|
- `code`: کد داخلی پاسخ
|
||
|
|
- `msg`: پیام پاسخ
|
||
|
|
- `data.task_id`: شناسه task
|
||
|
|
- `data.status_url`: آدرس پیگیری وضعیت task
|
||
|
|
- `data.plant_name`: نام گیاه
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2) `GET /api/crop-simulation/growth/<task_id>/status/`
|
||
|
|
|
||
|
|
### کاربرد
|
||
|
|
|
||
|
|
بررسی وضعیت اجرای شبیهسازی رشد و دریافت نتیجه نهایی.
|
||
|
|
|
||
|
|
### پارامترهای Query
|
||
|
|
|
||
|
|
- `page`: شماره صفحه
|
||
|
|
- `page_size`: اندازه صفحه
|
||
|
|
|
||
|
|
### پاسخ موفق
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 200,
|
||
|
|
"msg": "موفق",
|
||
|
|
"data": {
|
||
|
|
"task_id": "growth-task-1",
|
||
|
|
"status": "SUCCESS",
|
||
|
|
"status_fa": "موفق",
|
||
|
|
"result": {
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"dynamic_parameters": ["DVS", "LAI", "TAGP"],
|
||
|
|
"engine": "موتور شبیه سازی PCSE",
|
||
|
|
"model_name": "مدل ووفوست",
|
||
|
|
"scenario_id": 12,
|
||
|
|
"simulation_warning": null,
|
||
|
|
"summary_metrics": {
|
||
|
|
"yield_estimate": 5400.0,
|
||
|
|
"biomass": 9800.0,
|
||
|
|
"max_lai": 4.2
|
||
|
|
},
|
||
|
|
"stage_timeline": [
|
||
|
|
{
|
||
|
|
"order": 1,
|
||
|
|
"stage_code": "vegetative",
|
||
|
|
"stage_name": "رشد رویشی",
|
||
|
|
"start_date": "2026-04-01",
|
||
|
|
"end_date": "2026-04-05",
|
||
|
|
"days_count": 5,
|
||
|
|
"metrics": {
|
||
|
|
"DVS": {
|
||
|
|
"start": 0.1,
|
||
|
|
"end": 0.8,
|
||
|
|
"min": 0.1,
|
||
|
|
"max": 0.8,
|
||
|
|
"avg": 0.45
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"stages_page": [],
|
||
|
|
"pagination": {
|
||
|
|
"page": 1,
|
||
|
|
"page_size": 10,
|
||
|
|
"total_items": 1,
|
||
|
|
"total_pages": 1,
|
||
|
|
"has_next": false,
|
||
|
|
"has_previous": false
|
||
|
|
},
|
||
|
|
"daily_records_count": 14,
|
||
|
|
"default_page_size": 10
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح کامل فیلدهای `result`
|
||
|
|
|
||
|
|
- `plant_name`: نام گیاه
|
||
|
|
- `dynamic_parameters`: پارامترهای پویا
|
||
|
|
- `engine`: نام فارسی موتور اجرا
|
||
|
|
- `model_name`: نام فارسی مدل
|
||
|
|
- `scenario_id`: شناسه سناریوی ذخیرهشده
|
||
|
|
- `simulation_warning`: هشدار fallback یا خطای غیرکشنده
|
||
|
|
- `summary_metrics.yield_estimate`: برآورد عملکرد
|
||
|
|
- `summary_metrics.biomass`: بیوماس
|
||
|
|
- `summary_metrics.max_lai`: بیشینه شاخص سطح برگ
|
||
|
|
- `stage_timeline`: خلاصه مراحل رشد
|
||
|
|
- `stages_page`: همان `stage_timeline` بهصورت صفحهبندیشده
|
||
|
|
- `pagination`: متادیتای صفحهبندی
|
||
|
|
- `daily_records_count`: تعداد رکوردهای روزانه
|
||
|
|
- `default_page_size`: اندازه صفحه پیشفرض
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3) `POST /api/crop-simulation/current-farm-chart/`
|
||
|
|
|
||
|
|
### کاربرد
|
||
|
|
|
||
|
|
ساخت chart وضعیت فعلی مزرعه بر اساس شبیهسازی.
|
||
|
|
|
||
|
|
### ورودی
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"irrigation_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-25",
|
||
|
|
"amount": 2.5
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"fertilization_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-20",
|
||
|
|
"N_amount": 45,
|
||
|
|
"N_recovery": 0.7
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح ورودی
|
||
|
|
|
||
|
|
- `farm_uuid`: شناسه مزرعه
|
||
|
|
- `plant_name`: نام گیاه، اختیاری
|
||
|
|
- `irrigation_recommendation`: برنامه آبیاری
|
||
|
|
- `fertilization_recommendation`: برنامه کودهی
|
||
|
|
|
||
|
|
### پاسخ موفق
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 200,
|
||
|
|
"msg": "موفق",
|
||
|
|
"data": {
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"engine": "موتور شبیه سازی PCSE",
|
||
|
|
"model_name": "مدل ووفوست",
|
||
|
|
"scenario_id": 15,
|
||
|
|
"simulation_warning": null,
|
||
|
|
"categories": ["2026-04-01", "2026-04-02"],
|
||
|
|
"series": [
|
||
|
|
{
|
||
|
|
"name": "تعداد برگ تخمینی",
|
||
|
|
"key": "leaf_count_estimate",
|
||
|
|
"data": [2400, 3600]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"summary": [
|
||
|
|
{
|
||
|
|
"title": "تعداد برگ تخمینی",
|
||
|
|
"subtitle": "وضعیت فعلی",
|
||
|
|
"amount": 3600,
|
||
|
|
"unit": "برگ",
|
||
|
|
"avatarColor": "success",
|
||
|
|
"avatarIcon": "tabler-leaf"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"current_state": {
|
||
|
|
"date": "2026-04-02",
|
||
|
|
"leaf_count_estimate": 3600,
|
||
|
|
"leaf_area_index": 0.3,
|
||
|
|
"biomass_weight": 120.5,
|
||
|
|
"storage_organ_weight": 0.0,
|
||
|
|
"soil_moisture_percent": 41.2,
|
||
|
|
"development_stage": 0.15,
|
||
|
|
"gdd": 12.5
|
||
|
|
},
|
||
|
|
"metrics": {
|
||
|
|
"yield_estimate": 5400,
|
||
|
|
"biomass": 9800,
|
||
|
|
"max_lai": 4.2
|
||
|
|
},
|
||
|
|
"daily_output": []
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح کامل پاسخ
|
||
|
|
|
||
|
|
- `categories`: محور تاریخ chart
|
||
|
|
- `series`: سریهای نمودار
|
||
|
|
- `summary`: کارتهای summary
|
||
|
|
- `current_state`: وضعیت آخرین روز شبیهسازی
|
||
|
|
- `metrics`: متریکهای خلاصه شبیهسازی
|
||
|
|
- `daily_output`: خروجی روزانه کامل PCSE
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4) `POST /api/crop-simulation/yield-prediction/`
|
||
|
|
|
||
|
|
### کاربرد
|
||
|
|
|
||
|
|
تبدیل خروجی شبیهسازی به پیشبینی عملکرد.
|
||
|
|
|
||
|
|
### ورودی
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"irrigation_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-25",
|
||
|
|
"amount": 2.5
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"fertilization_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-20",
|
||
|
|
"N_amount": 45,
|
||
|
|
"N_recovery": 0.7
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### پاسخ موفق
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 200,
|
||
|
|
"msg": "موفق",
|
||
|
|
"data": {
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"predictedYieldTons": 5.4,
|
||
|
|
"predictedYieldRaw": 5400.0,
|
||
|
|
"unit": "تن",
|
||
|
|
"sourceUnit": "کیلوگرم در هکتار",
|
||
|
|
"simulationEngine": "موتور شبیه سازی PCSE",
|
||
|
|
"simulationModel": "مدل ووفوست",
|
||
|
|
"scenarioId": 15,
|
||
|
|
"simulationWarning": null,
|
||
|
|
"supportingMetrics": {
|
||
|
|
"yield_estimate": 5400.0,
|
||
|
|
"biomass": 9800.0,
|
||
|
|
"max_lai": 4.2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح فیلدها
|
||
|
|
|
||
|
|
- `predictedYieldTons`: عملکرد پیشبینیشده بر حسب تن
|
||
|
|
- `predictedYieldRaw`: عملکرد خام بر حسب کیلوگرم در هکتار
|
||
|
|
- `unit`: واحد نهایی
|
||
|
|
- `sourceUnit`: واحد منبع
|
||
|
|
- `simulationEngine`: نام موتور
|
||
|
|
- `simulationModel`: نام مدل
|
||
|
|
- `scenarioId`: شناسه سناریو
|
||
|
|
- `simulationWarning`: هشدار احتمالی
|
||
|
|
- `supportingMetrics`: متریکهای پشتیبان شبیهسازی
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5) `POST /api/crop-simulation/harvest-prediction/`
|
||
|
|
|
||
|
|
### کاربرد
|
||
|
|
|
||
|
|
پیشبینی زمان تقریبی برداشت.
|
||
|
|
|
||
|
|
### ورودی
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"irrigation_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-25",
|
||
|
|
"amount": 2.5
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"fertilization_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-20",
|
||
|
|
"N_amount": 45,
|
||
|
|
"N_recovery": 0.7
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### پاسخ موفق
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 200,
|
||
|
|
"msg": "موفق",
|
||
|
|
"data": {
|
||
|
|
"date": "2026-05-14",
|
||
|
|
"dateFormatted": "14 May 2026",
|
||
|
|
"daysUntil": 23,
|
||
|
|
"description": "توضیح زمان برداشت",
|
||
|
|
"optimalWindowStart": "2026-05-11",
|
||
|
|
"optimalWindowEnd": "2026-05-17",
|
||
|
|
"gddDetails": {
|
||
|
|
"current_cumulative_gdd": 50,
|
||
|
|
"required_gdd_for_maturity": 1200,
|
||
|
|
"remaining_gdd": 1150,
|
||
|
|
"estimated_days_to_harvest": 23,
|
||
|
|
"predicted_harvest_date": "2026-05-14",
|
||
|
|
"predicted_harvest_window": {
|
||
|
|
"start": "2026-05-11",
|
||
|
|
"end": "2026-05-17"
|
||
|
|
},
|
||
|
|
"daily_gdd_forecast": [],
|
||
|
|
"simulation_engine": "pcse",
|
||
|
|
"simulation_model_name": "Wofost81_NWLP_CWB_CNB",
|
||
|
|
"simulation_warning": null,
|
||
|
|
"scenario_id": 18
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح فیلدها
|
||
|
|
|
||
|
|
- `date`: تاریخ برداشت پیشبینیشده
|
||
|
|
- `dateFormatted`: تاریخ فرمتشده برای UI
|
||
|
|
- `daysUntil`: تعداد روز تا برداشت
|
||
|
|
- `description`: توضیح خلاصه
|
||
|
|
- `optimalWindowStart`: شروع بازه بهینه برداشت
|
||
|
|
- `optimalWindowEnd`: پایان بازه بهینه برداشت
|
||
|
|
- `gddDetails`: جزئیات مبتنی بر GDD و شبیهسازی
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6) `GET /api/crop-simulation/yield-harvest-summary/`
|
||
|
|
|
||
|
|
### کاربرد
|
||
|
|
|
||
|
|
ساخت داشبورد خلاصه عملکرد و برداشت.
|
||
|
|
|
||
|
|
### ورودی
|
||
|
|
|
||
|
|
این API از query string استفاده میکند.
|
||
|
|
|
||
|
|
### پارامترهای query
|
||
|
|
|
||
|
|
- `farm_uuid`: شناسه مزرعه
|
||
|
|
- `season_year`: سال زراعی
|
||
|
|
- `crop_name`: نام محصول
|
||
|
|
- `include_narrative`: اگر `true` باشد، تلاش برای تولید narrative میشود
|
||
|
|
- `irrigation_recommendation`: JSON string برنامه آبیاری
|
||
|
|
- `fertilization_recommendation`: JSON string برنامه کودهی
|
||
|
|
|
||
|
|
### نمونه درخواست
|
||
|
|
|
||
|
|
```text
|
||
|
|
GET /api/crop-simulation/yield-harvest-summary/?farm_uuid=11111111-1111-1111-1111-111111111111&season_year=1404&crop_name=wheat&include_narrative=true&irrigation_recommendation={"events":[{"date":"2026-04-25","amount":2.5}]}&fertilization_recommendation={"events":[{"date":"2026-04-20","N_amount":45,"N_recovery":0.7}]}
|
||
|
|
```
|
||
|
|
|
||
|
|
### پاسخ موفق
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 200,
|
||
|
|
"msg": "موفق",
|
||
|
|
"data": {
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"season_highlights_card": {
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"crop_name": "wheat",
|
||
|
|
"season_year": "1404",
|
||
|
|
"title": "خلاصه فصل",
|
||
|
|
"subtitle": "",
|
||
|
|
"total_predicted_yield": 5.4,
|
||
|
|
"yield_unit": "تن",
|
||
|
|
"target_harvest_date": "2026-05-14",
|
||
|
|
"days_until_harvest": 23,
|
||
|
|
"average_readiness": 74,
|
||
|
|
"primary_quality_grade": "A",
|
||
|
|
"estimated_revenue": null,
|
||
|
|
"soil_type": "loam"
|
||
|
|
},
|
||
|
|
"yield_prediction": {},
|
||
|
|
"harvest_prediction_card": {},
|
||
|
|
"harvest_readiness_zones": {},
|
||
|
|
"yield_quality_bands": {},
|
||
|
|
"harvest_operations_card": {},
|
||
|
|
"yield_prediction_chart": {}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### ساختار response
|
||
|
|
|
||
|
|
- `season_highlights_card`: خلاصه فصل
|
||
|
|
- `yield_prediction`: بلوک پیشبینی عملکرد
|
||
|
|
- `harvest_prediction_card`: بلوک پیشبینی برداشت
|
||
|
|
- `harvest_readiness_zones`: آمادگی برداشت نواحی
|
||
|
|
- `yield_quality_bands`: باندهای کیفیت محصول
|
||
|
|
- `harvest_operations_card`: پیشنهاد عملیات برداشت
|
||
|
|
- `yield_prediction_chart`: نمودار عملکرد و بیوماس
|
||
|
|
|
||
|
|
### توضیح مهم
|
||
|
|
|
||
|
|
این API بخشهایی از response را از چند سرویس مختلف میسازد، بنابراین بعضی بلوکها ساختار nested و بزرگ دارند. مخصوصاً:
|
||
|
|
|
||
|
|
- `yield_prediction`
|
||
|
|
- `harvest_prediction_card`
|
||
|
|
- `yield_prediction_chart`
|
||
|
|
|
||
|
|
این سه بخش مستقیماً تحت تأثیر `irrigation_recommendation` و `fertilization_recommendation` قرار میگیرند چون از اجرای PCSE استفاده میکنند.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7) `POST /api/irrigation/water-stress/`
|
||
|
|
|
||
|
|
### کاربرد
|
||
|
|
|
||
|
|
محاسبه شاخص تنش آبی با استفاده از خروجی شبیهسازی.
|
||
|
|
|
||
|
|
### ورودی
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"irrigation_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-25",
|
||
|
|
"amount": 2.5
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"fertilization_recommendation": {
|
||
|
|
"events": [
|
||
|
|
{
|
||
|
|
"date": "2026-04-20",
|
||
|
|
"N_amount": 45,
|
||
|
|
"N_recovery": 0.7
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح ورودی
|
||
|
|
|
||
|
|
- `farm_uuid`: شناسه مزرعه
|
||
|
|
- `sensor_uuid`: نام قدیمی برای `farm_uuid`
|
||
|
|
- `plant_name`: نام گیاه، اختیاری
|
||
|
|
- `irrigation_recommendation`: برنامه آبیاری
|
||
|
|
- `fertilization_recommendation`: برنامه کودهی
|
||
|
|
|
||
|
|
### پاسخ موفق
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 200,
|
||
|
|
"msg": "success",
|
||
|
|
"data": {
|
||
|
|
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||
|
|
"plant_name": "گوجهفرنگی",
|
||
|
|
"waterStressIndex": 37,
|
||
|
|
"level": "متوسط",
|
||
|
|
"sourceMetric": {
|
||
|
|
"soilMoisturePercent": 46.0,
|
||
|
|
"availableWaterRatio": 0.72,
|
||
|
|
"fieldCapacity": 0.34,
|
||
|
|
"wiltingPoint": 0.14,
|
||
|
|
"rootDepthCm": 120.0,
|
||
|
|
"recentEt0": 0.33,
|
||
|
|
"recentRain": 1.0,
|
||
|
|
"soilMoistureDrop": 4.2,
|
||
|
|
"developmentStage": 1.02,
|
||
|
|
"stageCode": "flowering",
|
||
|
|
"stageSensitivity": 1.2,
|
||
|
|
"engine": "crop_simulation",
|
||
|
|
"formula": "stress = clamp(((moisture_deficit + et0_pressure + trend_pressure - rainfall_relief - root_depth_relief) * stage_sensitivity), 0, 100)"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### توضیح فیلدهای response
|
||
|
|
|
||
|
|
- `farm_uuid`: شناسه مزرعه
|
||
|
|
- `plant_name`: نام گیاه resolved شده
|
||
|
|
- `waterStressIndex`: شاخص نهایی تنش آبی بین `0` تا `100`
|
||
|
|
- `level`: سطح تنش آبی (`پایین`، `متوسط`، `بالا`)
|
||
|
|
- `sourceMetric`: جزئیات محاسبه
|
||
|
|
|
||
|
|
### توضیح `sourceMetric`
|
||
|
|
|
||
|
|
- `soilMoisturePercent`: درصد رطوبت خاک
|
||
|
|
- `availableWaterRatio`: نسبت آب قابل استفاده
|
||
|
|
- `fieldCapacity`: ظرفیت مزرعه
|
||
|
|
- `wiltingPoint`: نقطه پژمردگی
|
||
|
|
- `rootDepthCm`: عمق ریشه
|
||
|
|
- `recentEt0`: تبخیر و تعرق مرجع اخیر
|
||
|
|
- `recentRain`: بارش اخیر
|
||
|
|
- `soilMoistureDrop`: افت رطوبت خاک
|
||
|
|
- `developmentStage`: مرحله رشد عددی
|
||
|
|
- `stageCode`: کد مرحله رشد
|
||
|
|
- `stageSensitivity`: حساسیت مرحله رشد
|
||
|
|
- `engine`: منبع محاسبه
|
||
|
|
- `formula`: فرمول محاسبه شاخص
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## خطاهای رایج
|
||
|
|
|
||
|
|
### خطای 400
|
||
|
|
|
||
|
|
وقتی ورودی نامعتبر باشد:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 400,
|
||
|
|
"msg": "داده نامعتبر.",
|
||
|
|
"data": {
|
||
|
|
"farm_uuid": ["farm_uuid الزامی است."]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### خطای 404
|
||
|
|
|
||
|
|
بیشتر در `water-stress` وقتی مزرعه پیدا نشود:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 404,
|
||
|
|
"msg": "Farm not found.",
|
||
|
|
"data": null
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### خطای 500
|
||
|
|
|
||
|
|
وقتی اجرای شبیهسازی یا ساخت response شکست بخورد:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 500,
|
||
|
|
"msg": "خطا در پیش بینی عملکرد: ...",
|
||
|
|
"data": null
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## جمعبندی
|
||
|
|
|
||
|
|
APIهایی که در این سند توضیح داده شدند، حالا میتوانند از ورودی کاربر:
|
||
|
|
|
||
|
|
- `irrigation_recommendation`
|
||
|
|
- `fertilization_recommendation`
|
||
|
|
|
||
|
|
را دریافت کنند و آنها را به لایه شبیهسازی `PCSE` پاس بدهند. این یعنی خروجیهای:
|
||
|
|
|
||
|
|
- رشد
|
||
|
|
- chart مزرعه
|
||
|
|
- پیشبینی عملکرد
|
||
|
|
- پیشبینی برداشت
|
||
|
|
- خلاصه Yield/Harvest
|
||
|
|
- شاخص تنش آبی
|
||
|
|
|
||
|
|
میتوانند تحت تأثیر برنامه آبیاری و برنامه کودهی ارسالی کاربر قرار بگیرند.
|