Soil API Reference for Frontend
این فایل برای فرانت آماده شده تا ساختار پاسخ APIهای خاک را سریع و شفاف داشته باشید.
Base Notes
- سه endpoint زیر
farm_uuid را به صورت query param لازم دارند:
GET /api/soil/anomalies/
GET /api/soil/moisture-heatmap/
GET /api/soil/summary/
- endpoint
GET /api/soil/avg-moisture/ بدون farm_uuid هم جواب میدهد، ولی اگر farm_uuid ارسال شود داده بر اساس همان مزرعه محاسبه میشود.
- در سه endpoint اول و سوم، اگر
farm_uuid ارسال نشود یا مزرعه پیدا نشود، پاسخ با ساختار code/msg/data برمیگردد.
- پاسخ موفق
avg-moisture با کلید status برمیگردد، ولی سه endpoint دیگر با کلیدهای code, msg, data برمیگردند.
1) Average Soil Moisture
Endpoint
Query Params
| name |
type |
required |
description |
farm_uuid |
string (uuid) |
no |
UUID مزرعه |
Success Response
Response Fields
| field |
type |
description |
status |
string |
در حالت موفق مقدار success |
data.id |
string |
شناسه کارت |
data.title |
string |
عنوان کارت |
data.subtitle |
string |
زیرعنوان کارت |
data.stats |
string |
مقدار اصلی به صورت درصد، مثل 48% |
data.avatarColor |
string |
رنگ آیکن/کارت |
data.avatarIcon |
string |
نام آیکن |
data.chipText |
string |
وضعیت متنی، مثل بهینه، متوسط، کم |
data.chipColor |
string |
رنگ وضعیت، مثل success، warning، error |
Frontend Notes
- این endpoint برای ساخت یک KPI card مناسب است.
stats همیشه string است و بهتر است مستقیم render شود.
chipText و chipColor برای badge یا status pill استفاده شوند.
2) Soil Anomalies
Endpoint
Query Params
| name |
type |
required |
description |
farm_uuid |
string (uuid) |
yes |
UUID مزرعه |
Success Response
Response Fields
| field |
type |
description |
code |
number |
در حالت موفق مقدار 200 |
msg |
string |
در حالت موفق مقدار success |
data.farm_uuid |
string |
UUID مزرعه |
data.summary |
string |
خلاصه کوتاه نتیجه anomaly detection |
data.explanation |
string |
توضیح readable برای فرانت |
data.likely_cause |
string |
علت احتمالی |
data.recommended_action |
string |
اقدام پیشنهادی |
data.monitoring_priority |
string |
سطح اهمیت پایش؛ مثل low, medium, high, urgent |
data.confidence |
number |
میزان اطمینان مدل |
data.generated_at |
string |
زمان تولید تحلیل |
data.anomalies |
array |
لیست anomalyها |
data.anomalies[].sensor |
string |
نام سنسور یا ناحیه |
data.anomalies[].value |
string |
مقدار فعلی |
data.anomalies[].expected |
string |
بازه یا مقدار مورد انتظار |
data.anomalies[].deviation |
string |
اختلاف با مقدار نرمال |
data.anomalies[].severity |
string |
شدت anomaly، مثل warning یا error |
data.interpretation |
object |
تفسیر ساختاریافته برای UI پیشرفته |
data.knowledge_base |
string | null |
مرجع دانشی در صورت وجود |
data.raw_response |
string | null |
متن خام upstream در صورت وجود |
Error Response - Missing farm_uuid
Error Response - Farm Not Found
Frontend Notes
anomalies میتواند برای table، list یا alert cards استفاده شود.
- اگر
anomalies خالی بود، UI بهتر است empty state نمایش دهد.
severity را میتوانید به color map وصل کنید.
3) Soil Moisture Heatmap
Endpoint
Query Params
| name |
type |
required |
description |
farm_uuid |
string (uuid) |
yes |
UUID مزرعه |
Success Response
Supported Response Shape in Current Backend
در serializer فعلی این فیلدها پشتیبانی میشوند:
| field |
type |
description |
data.farm_uuid |
string |
UUID مزرعه |
data.location |
object |
اطلاعات مکانی |
data.current_sensor |
object |
اطلاعات سنسور فعال |
data.soil_profile |
array<object> |
داده لایههای خاک |
data.timestamp |
string | null |
زمان تولید heatmap |
data.grid_resolution |
object |
رزولوشن grid |
data.grid_cells |
array<object> |
سلولهای grid |
data.sensor_points |
array<object> |
نقاط سنسور |
data.quality_legend |
object |
legend مقادیر |
data.depth_layers |
array<object> |
لایههای عمقی |
data.model_metadata |
object |
متادیتای مدل |
data.summary |
object |
خلاصه تفسیری |
Legacy / Mock Shape You May Also See
در داده mock داخلی پروژه یک ساختار سادهتر هم وجود دارد:
Error Response - Missing farm_uuid
Error Response - Farm Not Found
Frontend Notes
- چون upstream shape ممکن است object-based یا series-based باشد، فرانت بهتر است defensive parsing داشته باشد.
- اگر
grid_cells وجود داشت، heatmap را از grid render کنید.
- اگر
series وجود داشت، میتوانید آن را به chart heatmap یا matrix chart بدهید.
4) Soil Summary
Endpoint
Query Params
| name |
type |
required |
description |
farm_uuid |
string (uuid) |
yes |
UUID مزرعه |
Success Response
Response Fields
| field |
type |
description |
code |
number |
در حالت موفق مقدار 200 |
msg |
string |
در حالت موفق مقدار success |
data.farm_uuid |
string |
UUID مزرعه |
data.healthScore |
number |
امتیاز سلامت کلی خاک |
data.profileSource |
string |
منبع پروفایل یا محصول مرجع |
data.healthScoreDetails |
object |
جزئیات محاسبه health score |
data.healthLanguage |
object |
متنها و labelهای قابل نمایش |
data.avgSoilMoisture |
number |
میانگین گرد شده رطوبت خاک |
data.avgSoilMoistureRaw |
number |
میانگین خام |
data.avgSoilMoistureStatus |
string |
وضعیت متنی رطوبت خاک |
Error Response - Missing farm_uuid
Error Response - Farm Not Found
Frontend Notes
- این endpoint برای summary card یا hero panel خیلی مناسب است.
healthScoreDetails و healthLanguage را optional در نظر بگیرید.
- برای UI بهتر،
healthScore را هم به صورت عدد و هم به صورت progress/gauge نمایش دهید.
Suggested Frontend Handling
- برای
avg-moisture انتظار status/data داشته باشید.
- برای
anomalies, moisture-heatmap, summary انتظار code/msg/data داشته باشید.
- برای خطاهای 400 و 404، متن خطا را از
data.farm_uuid[0] بخوانید.
- در heatmap، parsing را flexible بنویسید چون shape داده ممکن است بسته به upstream تغییر کند.