# توضیح فیلدهای پاسخ API هشدارهای مزرعه

این سند فیلدهای JSON خروجی `POST /api/farm-alerts/tracker/` را توضیح می‌دهد.

## ساختار کلی پاسخ

پاسخ API به شکل envelope برمی‌گردد:

```json
{
  "code": 200,
  "msg": "success",
  "data": {}
}
```

## فیلدهای سطح اول

### `code`

- نوع: `number`
- معنی: کد وضعیت داخلی API
- مقدار رایج:
  - `200`: موفق
  - `400`: ورودی نامعتبر
  - `500`: خطای داخلی

### `msg`

- نوع: `string`
- معنی: پیام خلاصه وضعیت پاسخ
- نمونه:
  - `success`
  - `داده نامعتبر.`
  - `خطا در تولید tracker هشدارها: ...`

### `data`

- نوع: `object | null`
- معنی: بدنه اصلی پاسخ
- در موفقیت شامل جزئیات تحلیل مزرعه است
- در بعضی خطاها ممکن است `null` باشد

## فیلدهای داخل `data`

### `farm_uuid`

- نوع: `string`
- معنی: شناسه مزرعه‌ای که تحلیل روی آن انجام شده

### `service_id`

- نوع: `string`
- معنی: شناسه سرویس تولیدکننده پاسخ
- مقدار فعلی: `farm_alerts`

### `tracker`

- نوع: `object`
- معنی: خروجی ساختاریافته‌ی موتور tracker قبل از خلاصه‌سازی نهایی AI
- شامل لیست alertها، آمار، خوشه‌بندی و مهم‌ترین مسئله است

### `headline`

- نوع: `string`
- معنی: تیتر کوتاه و سریع برای وضعیت فعلی مزرعه
- برای نمایش در کارت، header یا لیست اعلان مناسب است

### `overview`

- نوع: `string`
- معنی: جمع‌بندی کوتاه و اجرایی از مهم‌ترین وضعیت فعلی
- معمولا نسخه‌ی خلاصه‌شده‌ی مهم‌ترین alert یا نتیجه کلی تحلیل است

### `status_level`

- نوع: `string`
- مقادیر مجاز:
  - `info`
  - `warning`
  - `danger`
- معنی: سطح کلی وضعیت مزرعه از دید AI

### `notifications`

- نوع: `array`
- معنی: notificationهای نهایی که پس از تحلیل AI ساخته و در دیتابیس ذخیره شده‌اند
- اگر مورد مهمی وجود نداشته باشد، می‌تواند خالی باشد

### `raw_llm_response`

- نوع: `string | null`
- معنی: پاسخ خام JSON که مدل زبانی تولید کرده است
- بیشتر برای debug، audit یا بررسی رفتار AI مفید است

### `structured_context`

- نوع: `object`
- معنی: کانتکست ساختاریافته‌ای که به مدل داده شده است
- شامل اطلاعات مزرعه، tracker، forecastها و alertهای ورودی است

## فیلدهای `tracker`

### `tracker.totalAlerts`

- نوع: `number`
- معنی: تعداد کل alertهای شناسایی‌شده توسط tracker

### `tracker.alerts`

- نوع: `array`
- معنی: لیست خام alertهای تشخیص‌داده‌شده

هر آیتم در `tracker.alerts`:

#### `metric_type`

- نوع: `string`
- معنی: نوع شاخصی که alert از آن آمده
- نمونه:
  - `moisture`
  - `temperature`
  - `ph`
  - `ec`
  - `fungal_risk`

#### `title`

- نوع: `string`
- معنی: عنوان انسانی alert

#### `current_value`

- نوع: `number`
- معنی: مقدار فعلی شاخص

#### `threshold_value`

- نوع: `number | string`
- معنی: آستانه مرجع برای تشخیص alert

#### `severity`

- نوع: `string`
- مقادیر رایج:
  - `low`
  - `medium`
  - `high`
  - `critical`
- معنی: شدت alert در لایه tracker

#### `duration_hours`

- نوع: `number`
- معنی: مدت تداوم وضعیت هشدار به ساعت

#### `duration`

- نوع: `string`
- معنی: نسخه خوانای `duration_hours`
- نمونه: `3 ساعت`

#### `timestamp`

- نوع: `string`
- معنی: زمان مرجع alert با فرمت ISO datetime

#### `sensor_id`

- نوع: `string`
- معنی: شناسه مزرعه/سنسوری که alert برای آن محاسبه شده

#### `zone_id`

- نوع: `string | null`
- معنی: شناسه ناحیه، اگر alert مربوط به ناحیه خاصی باشد

#### `domain`

- نوع: `string`
- معنی: دامنه عملیاتی alert
- نمونه:
  - `water_balance`
  - `temperature_stress`
  - `root_chemistry`
  - `disease_pressure`

#### `direction`

- نوع: `string`
- معنی: جهت عبور از آستانه
- نمونه:
  - `below`: مقدار از حد مجاز کمتر شده
  - `above`: مقدار از حد مجاز بیشتر شده

#### `unit`

- نوع: `string`
- معنی: واحد شاخص
- نمونه:
  - `%`
  - `°C`
  - `pH`
  - `dS/m`

#### `icon`

- نوع: `string`
- معنی: نام آیکن پیشنهادی برای UI

#### `summary`

- نوع: `string`
- معنی: خلاصه انسانی و کوتاه alert

#### `recommended_action`

- نوع: `string`
- معنی: اقدام عملیاتی پیشنهادی tracker

#### `explanation`

- نوع: `string`
- معنی: توضیح قابل‌فهم درباره چرایی ایجاد alert

#### `metadata`

- نوع: `object`
- معنی: داده تکمیلی برای توسعه‌های بعدی

## فیلدهای `tracker.alertStats`

- نوع: `array`
- معنی: خلاصه آماری alertها برای نمایش سریع در UI

هر آیتم:

### `title`

- عنوان دسته alert

### `count`

- نوع: `string`
- تعداد alertها در آن دسته

### `avatarColor`

- نوع: `string`
- رنگ پیشنهادی UI

### `avatarIcon`

- نوع: `string`
- آیکن پیشنهادی UI

### `severity`

- نوع: `string`
- بالاترین شدت در آن دسته

### `topSummary`

- نوع: `string`
- مهم‌ترین خلاصه در آن دسته

## فیلدهای `tracker.alertClusters`

- نوع: `array`
- معنی: گروه‌بندی alertها بر اساس domain

هر آیتم:

### `domain`

- نوع: `string`
- نام دامنه خوشه

### `title`

- نوع: `string`
- عنوان انسانی خوشه

### `alert_count`

- نوع: `number`
- تعداد alertهای این خوشه

### `highest_severity`

- نوع: `string`
- بیشترین شدت بین alertهای این خوشه

### `primary_metric`

- نوع: `string`
- مهم‌ترین metric در آن خوشه

### `summary`

- نوع: `string`
- خلاصه وضعیت خوشه

### `alert_ids`

- نوع: `array`
- معنی: شناسه‌های alertهای عضو خوشه

## فیلد `tracker.mostCriticalIssue`

- نوع: `object | null`
- معنی: مهم‌ترین مسئله‌ای که tracker پیدا کرده
- ساختار آن مشابه هر آیتم در `tracker.alerts` است

## فیلدهای خلاصه‌ای `tracker`

### `tracker.prioritizedAlertSummaries`

- نوع: `array`
- معنی: لیستی از summaryهای مهم به ترتیب اولویت

### `tracker.recommendedOperationalActions`

- نوع: `array`
- معنی: لیستی از اقدام‌های عملیاتی پیشنهادی

### `tracker.humanReadableExplanations`

- نوع: `array`
- معنی: توضیح‌های متنی قابل‌خواندن برای نمایش یا گزارش

## فیلدهای `notifications`

- نوع: `array`
- معنی: اعلان‌های نهایی ذخیره‌شده در سیستم

هر آیتم در `notifications`:

### `id`

- نوع: `number`
- معنی: شناسه داخلی notification

### `uuid`

- نوع: `string`
- معنی: شناسه یکتای notification

### `farm_uuid`

- نوع: `string`
- معنی: شناسه مزرعه مربوط به notification

### `since_id`

- نوع: `number | null`
- معنی: شناسه مرجع برای زنجیره یا گروه‌بندی notificationها در سیستم

### `endpoint`

- نوع: `string`
- معنی: endpoint تولیدکننده notification
- مقدار فعلی: `tracker`

### `title`

- نوع: `string`
- معنی: عنوان notification

### `message`

- نوع: `string`
- معنی: متن اصلی notification

### `level`

- نوع: `string`
- مقادیر مجاز:
  - `info`
  - `warning`
  - `danger`
- معنی: سطح notification

### `suggested_action`

- نوع: `string`
- معنی: اقدام پیشنهادی نهایی برای کاربر

### `source_alert_id`

- نوع: `string`
- معنی: شناسه alert مبنا که notification از آن ساخته شده

### `source_metric_type`

- نوع: `string`
- معنی: نوع metric مبنا

### `payload`

- نوع: `object`
- معنی: داده تکمیلی notification

### `is_read`

- نوع: `boolean`
- معنی: آیا notification توسط کاربر خوانده شده یا نه

### `metadata`

- نوع: `object`
- معنی: اطلاعات جانبی درباره منبع یا نحوه تولید notification
- نمونه:
  - `source: farm_alerts_tracker_ai`

### `created_at`

- نوع: `string`
- معنی: زمان ایجاد notification

### `updated_at`

- نوع: `string`
- معنی: زمان آخرین به‌روزرسانی notification

## فیلدهای `structured_context`

این بخش برای debug و audit مفید است و نشان می‌دهد چه داده‌ای به مدل داده شده است.

### `structured_context.farm_profile`

- اطلاعات پایه مزرعه

فیلدهای مهم:
- `farm_uuid`: شناسه مزرعه
- `location.latitude`: عرض جغرافیایی
- `location.longitude`: طول جغرافیایی
- `plant_names`: لیست گیاه‌های ثبت‌شده
- `irrigation_method`: روش آبیاری یا `null`
- `last_sensor_update`: زمان آخرین داده سنسور

### `structured_context.tracker`

- همان داده tracker که به AI داده شده است

### `structured_context.forecasts`

- نوع: `array`
- معنی: پیش‌بینی‌های هواشناسی کوتاه‌مدت

هر آیتم:
- `date`: تاریخ پیش‌بینی
- `temperature_min`: کمینه دما
- `temperature_max`: بیشینه دما
- `humidity_mean`: میانگین رطوبت
- `precipitation`: بارش
- `et0`: تبخیر-تعرق مرجع

### `structured_context.incoming_alerts`

- نوع: `array`
- معنی: alertهایی که از request به API ارسال شده و در تحلیل استفاده شده‌اند
- اگر چیزی ارسال نشده باشد، آرایه خالی است

## تفاوت `severity` و `level`

این دو فیلد شبیه هم هستند ولی یکسان نیستند:

- `severity`: شدت داخلی alert در tracker با مقادیر `low/medium/high/critical`
- `level`: سطح نهایی notification یا status کلی با مقادیر `info/warning/danger`

به طور معمول:

- `low` معمولا به `info` نزدیک است
- `medium` معمولا به `warning` نزدیک است
- `high` و `critical` معمولا به `danger` نزدیک هستند

## نکته عملی

اگر می‌خواهید در frontend فقط پیام نهایی را نمایش دهید، معمولا این فیلدها کافی هستند:

- `data.headline`
- `data.overview`
- `data.status_level`
- `data.notifications`

اگر می‌خواهید صفحه تحلیلی یا داشبورد کامل بسازید، از این بخش‌ها هم استفاده کنید:

- `data.tracker.alerts`
- `data.tracker.alertStats`
- `data.tracker.alertClusters`
- `data.structured_context.forecasts`
