# درخواست API‌های داشبورد

سلام تیم بک‌اند 👋

برای تکمیل صفحه داشبورد نیاز به API‌های زیر داریم. لطفاً این API‌ها را پیاده‌سازی کنید:

---

## 1. API آمار کلی داشبورد (Dashboard Overview Stats)

**Endpoint:** `GET /api/v1/admin/dashboard/stats`

**Description:** دریافت آمار کلی سیستم شامل سفارشات، درآمد، کاربران و محصولات

**Response:**

```json
{
  "orders": {
    "total": 1250,
    "pending": 45,
    "completed": 1100,
    "cancelled": 105,
    "today_count": 23,
    "today_amount": 45000000
  },
  "revenue": {
    "total": 2500000000,
    "today": 45000000,
    "this_month": 350000000,
    "last_month": 320000000,
    "growth_percentage": 9.4
  },
  "users": {
    "total": 8500,
    "active": 7200,
    "new_today": 15,
    "new_this_month": 450
  },
  "products": {
    "total": 1250,
    "active": 1100,
    "low_stock": 25,
    "out_of_stock": 8
  }
}
```

---

## 2. API فروش ماهانه (Monthly Sales Chart)

**Endpoint:** `GET /api/v1/admin/dashboard/monthly-sales`

**Description:** دریافت آمار فروش به صورت ماهانه برای نمایش در چارت

**Query Parameters:**

- `months` (optional, default: 6) - تعداد ماه‌های گذشته که باید برگردانده شود

**Response:**

```json
{
  "data": [
    {
      "month": "فروردین",
      "month_number": 1,
      "year": 1403,
      "total_amount": 350000000,
      "order_count": 450
    },
    {
      "month": "اردیبهشت",
      "month_number": 2,
      "year": 1403,
      "total_amount": 420000000,
      "order_count": 520
    }
    // ... برای تعداد ماه‌های درخواستی
  ]
}
```

**Note:** داده‌ها باید به ترتیب زمانی (از قدیمی‌ترین به جدیدترین) مرتب باشند.

---

## 3. API روند رشد (Growth Trend)

**Endpoint:** `GET /api/v1/admin/dashboard/growth-trend`

**Description:** دریافت روند رشد سیستم در بازه‌های زمانی مختلف

**Query Parameters:**

- `period` (optional, default: "monthly") - نوع بازه زمانی: `"daily"`, `"weekly"`, `"monthly"`
- `days` (optional, default: 30) - تعداد روزها برای `period=daily`
- `weeks` (optional, default: 12) - تعداد هفته‌ها برای `period=weekly`
- `months` (optional, default: 12) - تعداد ماه‌ها برای `period=monthly`

**Response:**

```json
{
  "period": "monthly",
  "data": [
    {
      "date": "1403/01",
      "revenue": 350000000,
      "orders": 450,
      "users": 120
    },
    {
      "date": "1403/02",
      "revenue": 420000000,
      "orders": 520,
      "users": 135
    }
    // ...
  ],
  "growth_rate": 9.4
}
```

---

## 4. API کاربران اخیر (Recent Users)

**Endpoint:** `GET /api/v1/admin/dashboard/recent-users`

**Description:** دریافت لیست کاربران جدید که اخیراً ثبت‌نام کرده‌اند

**Query Parameters:**

- `limit` (optional, default: 10) - تعداد کاربران

**Response:**

```json
{
  "users": [
    {
      "id": 1,
      "first_name": "علی",
      "last_name": "احمدی",
      "username": "ali_ahmadi",
      "email": "ali@example.com",
      "phone": "09123456789",
      "status": "active",
      "created_at": "2024-01-15T10:30:00Z"
    },
    {
      "id": 2,
      "first_name": "فاطمه",
      "last_name": "حسینی",
      "username": "fateme_hosseini",
      "email": "fateme@example.com",
      "phone": "09123456790",
      "status": "active",
      "created_at": "2024-01-14T15:20:00Z"
    }
    // ...
  ],
  "total": 10
}
```

**Note:** کاربران باید به ترتیب تاریخ ثبت‌نام (جدیدترین اول) مرتب باشند.

---

## 5. API توزیع دستگاه‌های کاربری (Device Distribution)

**Endpoint:** `GET /api/v1/admin/dashboard/device-distribution`

**Description:** دریافت آمار توزیع دستگاه‌های کاربری (دسکتاپ، موبایل، تبلت)

**Response:**

```json
{
  "data": [
    {
      "device_type": "desktop",
      "label": "دسکتاپ",
      "count": 4500,
      "percentage": 45.5
    },
    {
      "device_type": "mobile",
      "label": "موبایل",
      "count": 3500,
      "percentage": 35.2
    },
    {
      "device_type": "tablet",
      "label": "تبلت",
      "count": 2000,
      "percentage": 19.3
    }
  ],
  "total": 10000
}
```

**Note:** درصدها باید به صورت عدد صحیح (بدون اعشار) برگردانده شوند.

---

## 6. API سفارش‌های اخیر (Recent Orders)

**Endpoint:** `GET /api/v1/admin/dashboard/recent-orders`

**Description:** دریافت لیست آخرین سفارش‌های ثبت شده

**Query Parameters:**

- `limit` (optional, default: 10) - تعداد سفارش‌ها

**Response:**

```json
{
  "orders": [
    {
      "id": 1234,
      "order_number": "ORD-2024-001234",
      "customer_name": "علی احمدی",
      "customer_id": 45,
      "total_amount": 2500000,
      "status": "pending",
      "payment_status": "paid",
      "created_at": "2024-01-15T14:30:00Z"
    },
    {
      "id": 1233,
      "order_number": "ORD-2024-001233",
      "customer_name": "فاطمه حسینی",
      "customer_id": 46,
      "total_amount": 1800000,
      "status": "completed",
      "payment_status": "paid",
      "created_at": "2024-01-15T13:20:00Z"
    }
    // ...
  ],
  "total": 10
}
```

**Note:** سفارش‌ها باید به ترتیب تاریخ ایجاد (جدیدترین اول) مرتب باشند.

---

## 7. API محصولات پرفروش (Top Selling Products)

**Endpoint:** `GET /api/v1/admin/dashboard/top-products`

**Description:** دریافت لیست محصولات پرفروش

**Query Parameters:**

- `limit` (optional, default: 5) - تعداد محصولات
- `period` (optional, default: "month") - بازه زمانی: `"day"`, `"week"`, `"month"`

**Response:**

```json
{
  "products": [
    {
      "id": 45,
      "name": "محصول نمونه",
      "sku": "PRD-001",
      "sold_count": 250,
      "revenue": 125000000,
      "image_url": "https://example.com/images/product-45.jpg"
    },
    {
      "id": 78,
      "name": "محصول دیگر",
      "sku": "PRD-002",
      "sold_count": 180,
      "revenue": 90000000,
      "image_url": "https://example.com/images/product-78.jpg"
    }
    // ...
  ]
}
```

**Note:** محصولات باید به ترتیب تعداد فروش (بیشترین اول) مرتب باشند.

---

## 8. API آمار مقایسه‌ای (Comparison Stats)

**Endpoint:** `GET /api/v1/admin/dashboard/comparison`

**Description:** دریافت آمار مقایسه‌ای بین دوره فعلی و دوره قبلی

**Query Parameters:**

- `compare_with` (optional, default: "last_period") - نوع مقایسه: `"last_period"`, `"last_year"`
- `period` (optional, default: "month") - نوع دوره: `"day"`, `"week"`, `"month"`

**Response:**

```json
{
  "current": {
    "revenue": 350000000,
    "orders": 450,
    "users": 120
  },
  "previous": {
    "revenue": 320000000,
    "orders": 410,
    "users": 105
  },
  "changes": {
    "revenue": {
      "amount": 30000000,
      "percentage": 9.4,
      "trend": "up"
    },
    "orders": {
      "amount": 40,
      "percentage": 9.8,
      "trend": "up"
    },
    "users": {
      "amount": 15,
      "percentage": 14.3,
      "trend": "up"
    }
  }
}
```

**Note:**

- `trend` می‌تواند `"up"`, `"down"` یا `"stable"` باشد
- درصدها می‌توانند اعشار داشته باشند

---

## نکات مهم و الزامات:

1. **احراز هویت:** همه API‌ها باید نیاز به احراز هویت داشته باشند (Bearer Token)

2. **فیلتر تاریخ:** در صورت امکان، همه API‌ها باید قابلیت فیلتر بر اساس بازه زمانی را داشته باشند:

   - `from_date` (optional) - تاریخ شروع
   - `to_date` (optional) - تاریخ پایان

3. **فرمت تاریخ:**

   - تاریخ‌ها در Response باید به فرمت ISO 8601 برگردانده شوند: `"2024-01-15T14:30:00Z"`
   - تاریخ‌های ورودی می‌توانند به فرمت ISO 8601 یا timestamp باشند

4. **فرمت مبالغ:**

   - همه مبالغ به تومان هستند
   - مبالغ باید به صورت عدد (integer) برگردانده شوند

5. **ترتیب داده‌ها:**

   - داده‌های زمانی باید به ترتیب زمانی (از قدیمی‌ترین به جدیدترین) مرتب باشند
   - داده‌های مرتب‌سازی شده (مثل پرفروش‌ترین) باید به ترتیب مناسب مرتب باشند

6. **مقدار پیش‌فرض:**

   - در صورت نبود داده، آرایه خالی `[]` یا `null` برگردانده شود
   - مقادیر عددی در صورت نبود داده باید `0` باشند

7. **خطاها:**

   - در صورت خطا، کد HTTP مناسب برگردانده شود
   - پیام خطا به فارسی و واضح باشد

8. **Performance:**
   - برای بهینه‌سازی، می‌توان از کش استفاده کرد
   - Query‌ها باید بهینه باشند تا زمان پاسخگویی کم باشد

---

## اولویت پیاده‌سازی:

1. **اولویت بالا:**

   - API آمار کلی داشبورد (#1)
   - API فروش ماهانه (#2)
   - API کاربران اخیر (#4)
   - API سفارش‌های اخیر (#6)

2. **اولویت متوسط:**

   - API روند رشد (#3)
   - API محصولات پرفروش (#7)
   - API آمار مقایسه‌ای (#8)

3. **اولویت پایین:**
   - API توزیع دستگاه‌های کاربری (#5) - در صورت وجود داده

---

## مثال استفاده:

```bash
# دریافت آمار کلی
curl -X GET "https://api.example.com/api/v1/admin/dashboard/stats" \
  -H "Authorization: Bearer YOUR_TOKEN"

# دریافت فروش 6 ماه گذشته
curl -X GET "https://api.example.com/api/v1/admin/dashboard/monthly-sales?months=6" \
  -H "Authorization: Bearer YOUR_TOKEN"

# دریافت کاربران اخیر
curl -X GET "https://api.example.com/api/v1/admin/dashboard/recent-users?limit=10" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

---

**ممنون می‌شوم اگر این API‌ها را در اسرع وقت پیاده‌سازی کنید تا بتوانیم داشبورد را کامل کنیم.** 🙏

**در صورت نیاز به توضیحات بیشتر یا تغییرات، لطفاً اطلاع دهید.**
