342 lines
9.3 KiB
Markdown
342 lines
9.3 KiB
Markdown
# Fertilization Recommendation API Fields
|
||
|
||
این فایل فقط فیلدهای API مربوط به `POST /api/fertilization/recommend/` را توضیح میدهد.
|
||
|
||
## Endpoint
|
||
|
||
`POST /api/fertilization/recommend/`
|
||
|
||
## ساختار کلی پاسخ
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "success",
|
||
"data": {
|
||
"primary_recommendation": {},
|
||
"nutrient_analysis": {},
|
||
"application_guide": {},
|
||
"alternative_recommendations": [],
|
||
"sections": []
|
||
}
|
||
}
|
||
```
|
||
|
||
## فیلدهای Request
|
||
|
||
### `farm_uuid`
|
||
- نوع: `string`
|
||
- اجباری: بله
|
||
- توضیح: شناسه یکتای مزرعه که توصیه برای آن تولید میشود.
|
||
|
||
### `sensor_uuid`
|
||
- نوع: `string`
|
||
- اجباری: خیر
|
||
- توضیح: نام قدیمی برای `farm_uuid`. اگر `farm_uuid` ارسال نشده باشد، این مقدار به جای آن استفاده میشود.
|
||
|
||
### `crop_id`
|
||
- نوع: `string`
|
||
- اجباری: خیر
|
||
- توضیح: شناسه یا نام محصول. اگر `plant_name` ارسال نشده باشد، همین مقدار به عنوان نام گیاه استفاده میشود.
|
||
|
||
### `plant_name`
|
||
- نوع: `string`
|
||
- اجباری: خیر
|
||
- توضیح: نام گیاه یا محصول هدف برای تولید توصیه.
|
||
|
||
### `growth_stage`
|
||
- نوع: `string`
|
||
- اجباری: خیر
|
||
- توضیح: مرحله رشد گیاه مثل `flowering` یا `fruiting`.
|
||
|
||
### `query`
|
||
- نوع: `string`
|
||
- اجباری: خیر
|
||
- توضیح: سوال یا درخواست متنی اختیاری برای جهت دادن به توصیه.
|
||
|
||
## فیلدهای لایه اول Response
|
||
|
||
### `code`
|
||
- نوع: `number`
|
||
- توضیح: کد وضعیت پاسخ در قالب استاندارد API پروژه.
|
||
|
||
### `msg`
|
||
- نوع: `string`
|
||
- توضیح: پیام وضعیت پاسخ. در حالت موفق معمولاً `success` است.
|
||
|
||
### `data`
|
||
- نوع: `object`
|
||
- توضیح: بدنه اصلی توصیه کودهی ساختاریافته.
|
||
|
||
## فیلدهای `data`
|
||
|
||
### `primary_recommendation`
|
||
- نوع: `object`
|
||
- توضیح: پیشنهاد اصلی کودهی که فرانت باید در Hero Card و ماشین حساب مصرف از آن استفاده کند.
|
||
|
||
### `nutrient_analysis`
|
||
- نوع: `object`
|
||
- توضیح: تحلیل ساختاریافته عناصر غذایی اصلی و ریزمغذیها.
|
||
|
||
### `application_guide`
|
||
- نوع: `object`
|
||
- توضیح: هشدار ایمنی و مراحل اجرای مصرف.
|
||
|
||
### `alternative_recommendations`
|
||
- نوع: `array`
|
||
- توضیح: فهرست کودهای جایگزین قابل استفاده در شرایط مشابه.
|
||
|
||
### `sections`
|
||
- نوع: `array`
|
||
- توضیح: ساختار legacy برای سازگاری با فرانت یا کلاینتهای قدیمی.
|
||
|
||
## فیلدهای `data.primary_recommendation`
|
||
|
||
### `fertilizer_code`
|
||
- نوع: `string`
|
||
- توضیح: کد یکتای کود پیشنهادی.
|
||
|
||
### `fertilizer_name`
|
||
- نوع: `string`
|
||
- توضیح: نام اصلی کود پیشنهادی برای نمایش.
|
||
|
||
### `display_title`
|
||
- نوع: `string`
|
||
- توضیح: عنوان نمایشی آماده برای کارت اصلی.
|
||
|
||
### `fertilizer_type`
|
||
- نوع: `string`
|
||
- توضیح: نوع کود مثل `NPK`.
|
||
|
||
### `npk_ratio`
|
||
- نوع: `object`
|
||
- توضیح: نسبت NPK به صورت ساختاریافته.
|
||
|
||
### `application_method`
|
||
- نوع: `object`
|
||
- توضیح: روش مصرف کود.
|
||
|
||
### `application_interval`
|
||
- نوع: `object`
|
||
- توضیح: فاصله زمانی پیشنهادی بین دفعات مصرف.
|
||
|
||
### `dosage`
|
||
- نوع: `object`
|
||
- توضیح: مقادیر پایه مصرف که فرانت با آنها مقدار مورد نیاز را حساب میکند.
|
||
|
||
### `reasoning`
|
||
- نوع: `string`
|
||
- توضیح: توضیح علمی و عملی درباره دلیل انتخاب این توصیه.
|
||
|
||
### `summary`
|
||
- نوع: `string`
|
||
- توضیح: خلاصه کوتاه و مناسب نمایش در بخش اصلی فرانت.
|
||
|
||
## فیلدهای `data.primary_recommendation.npk_ratio`
|
||
|
||
### `n`
|
||
- نوع: `number`
|
||
- توضیح: درصد نیتروژن در کود پیشنهادی.
|
||
|
||
### `p`
|
||
- نوع: `number`
|
||
- توضیح: درصد فسفر در کود پیشنهادی.
|
||
|
||
### `k`
|
||
- نوع: `number`
|
||
- توضیح: درصد پتاسیم در کود پیشنهادی.
|
||
|
||
### `label`
|
||
- نوع: `string`
|
||
- توضیح: نمایش متنی نسبت NPK مثل `20-20-20`.
|
||
|
||
## فیلدهای `data.primary_recommendation.application_method`
|
||
|
||
### `id`
|
||
- نوع: `string`
|
||
- توضیح: شناسه استاندارد روش مصرف مثل `fertigation` یا `foliar_fertigation`.
|
||
|
||
### `label`
|
||
- نوع: `string`
|
||
- توضیح: متن آماده نمایش برای روش مصرف.
|
||
|
||
## فیلدهای `data.primary_recommendation.application_interval`
|
||
|
||
### `value`
|
||
- نوع: `number`
|
||
- توضیح: فاصله مصرف به صورت عددی.
|
||
|
||
### `unit`
|
||
- نوع: `string`
|
||
- توضیح: واحد فاصله مصرف مثل `day`.
|
||
|
||
### `label`
|
||
- نوع: `string`
|
||
- توضیح: متن آماده نمایش مثل `هر 14 روز`.
|
||
|
||
## فیلدهای `data.primary_recommendation.dosage`
|
||
|
||
### `base_amount_per_hectare`
|
||
- نوع: `number`
|
||
- توضیح: مقدار پایه مصرف در هر هکتار.
|
||
|
||
### `base_amount_per_square_meter`
|
||
- نوع: `number`
|
||
- توضیح: مقدار پایه مصرف در هر متر مربع.
|
||
|
||
### `unit`
|
||
- نوع: `string`
|
||
- توضیح: واحد مقدار مصرف مثل `kg`.
|
||
|
||
### `label`
|
||
- نوع: `string`
|
||
- توضیح: متن آماده نمایش دوز مثل `65 کیلوگرم در هکتار`.
|
||
|
||
### `calculation_basis`
|
||
- نوع: `string`
|
||
- توضیح: مبنای محاسبه دوز؛ معمولاً نام engine یا منبع محاسبه است.
|
||
|
||
## نکته محاسبه برای فرانت
|
||
|
||
فرانت باید مقدار نهایی را خودش با استفاده از نسبت پایه محاسبه کند.
|
||
|
||
فرمول پیشنهادی:
|
||
|
||
```text
|
||
مقدار کل = base_amount_per_square_meter × مساحت مزرعه
|
||
```
|
||
|
||
## فیلدهای `data.nutrient_analysis`
|
||
|
||
### `macro`
|
||
- نوع: `array`
|
||
- توضیح: لیست عناصر اصلی شامل N، P و K.
|
||
|
||
### `micro`
|
||
- نوع: `array`
|
||
- توضیح: لیست ریزمغذیها مثل آهن، روی، منگنز و غیره. ممکن است خالی باشد.
|
||
|
||
## فیلدهای هر آیتم در `data.nutrient_analysis.macro[]` و `data.nutrient_analysis.micro[]`
|
||
|
||
### `key`
|
||
- نوع: `string`
|
||
- توضیح: کلید استاندارد عنصر مثل `n`، `p`، `k`، `fe` یا `zn`.
|
||
|
||
### `name`
|
||
- نوع: `string`
|
||
- توضیح: نام نمایشی عنصر.
|
||
|
||
### `value`
|
||
- نوع: `number`
|
||
- توضیح: مقدار عنصر، معمولاً به صورت درصد.
|
||
|
||
### `unit`
|
||
- نوع: `string`
|
||
- توضیح: واحد عنصر، معمولاً `percent`.
|
||
|
||
### `description`
|
||
- نوع: `string`
|
||
- توضیح: توضیح کوتاه درباره نقش یا اهمیت آن عنصر.
|
||
|
||
## فیلدهای `data.application_guide`
|
||
|
||
### `safety_warning`
|
||
- نوع: `string`
|
||
- توضیح: هشدار ایمنی و اجرایی قبل از مصرف.
|
||
|
||
### `steps`
|
||
- نوع: `array`
|
||
- توضیح: مراحل پیشنهادی اجرا.
|
||
|
||
## فیلدهای هر آیتم در `data.application_guide.steps[]`
|
||
|
||
### `step_number`
|
||
- نوع: `number`
|
||
- توضیح: شماره مرحله اجرا.
|
||
|
||
### `title`
|
||
- نوع: `string`
|
||
- توضیح: عنوان کوتاه مرحله.
|
||
|
||
### `description`
|
||
- نوع: `string`
|
||
- توضیح: توضیح کامل مرحله.
|
||
|
||
## فیلدهای هر آیتم در `data.alternative_recommendations[]`
|
||
|
||
### `fertilizer_code`
|
||
- نوع: `string`
|
||
- توضیح: کد یکتای کود جایگزین.
|
||
|
||
### `fertilizer_name`
|
||
- نوع: `string`
|
||
- توضیح: نام کود جایگزین.
|
||
|
||
### `fertilizer_type`
|
||
- نوع: `string`
|
||
- توضیح: نوع کود جایگزین.
|
||
|
||
### `usage_method`
|
||
- نوع: `string`
|
||
- توضیح: روش مصرف کود جایگزین.
|
||
|
||
### `description`
|
||
- نوع: `string`
|
||
- توضیح: توضیح اینکه این جایگزین در چه شرایطی مفید است.
|
||
|
||
## فیلدهای هر آیتم در `data.sections[]`
|
||
|
||
### `type`
|
||
- نوع: `string`
|
||
- توضیح: نوع بخش مثل `recommendation`، `list` یا `warning`.
|
||
|
||
### `title`
|
||
- نوع: `string`
|
||
- توضیح: عنوان بخش.
|
||
|
||
### `icon`
|
||
- نوع: `string`
|
||
- توضیح: آیکون نمایشی بخش.
|
||
|
||
### `content`
|
||
- نوع: `string`
|
||
- توضیح: متن اصلی بخش.
|
||
|
||
### `items`
|
||
- نوع: `array`
|
||
- توضیح: لیست آیتمهای متنی برای بخشهای لیستی.
|
||
|
||
### `fertilizerType`
|
||
- نوع: `string`
|
||
- توضیح: نسخه legacy نوع کود برای نمایش در کلاینتهای قدیمی.
|
||
|
||
### `amount`
|
||
- نوع: `string`
|
||
- توضیح: نسخه legacy مقدار مصرف برای کلاینتهای قدیمی.
|
||
|
||
### `applicationMethod`
|
||
- نوع: `string`
|
||
- توضیح: نسخه legacy روش مصرف.
|
||
|
||
### `timing`
|
||
- نوع: `string`
|
||
- توضیح: نسخه legacy زمان مناسب اجرا.
|
||
|
||
### `validityPeriod`
|
||
- نوع: `string`
|
||
- توضیح: نسخه legacy مدت اعتبار توصیه.
|
||
|
||
### `expandableExplanation`
|
||
- نوع: `string`
|
||
- توضیح: نسخه legacy توضیح کاملتر برای نمایش بازشونده.
|
||
|
||
## فیلدهای حذف شده
|
||
|
||
فیلدهای زیر دیگر در خروجی اصلی استفاده نمیشوند:
|
||
|
||
- `recommendation_id`
|
||
- `crop`
|
||
- `growth_stage`
|
||
- `total_amount`
|
||
- `area` در request
|