# تسک ۱۶: داشبورد هوشمند — چارت + فیلتر زمانی ## توضیح داشبوردهای موجود را با نمودار و فیلتر بازه زمانی تکمیل می‌کند. **هیچ endpoint جدیدی ایجاد نمی‌شود** — فقط پارامتر `from` و `to` (Unix timestamp) به endpoint های موجود اضافه می‌شود. همچنین چند فیلد جدید به response های موجود اضافه می‌شود. ## Endpoint های موجود که تغییر می‌کنند | متد | مسیر | تغییر | |-----|------|-------| | GET | `/api/v1/admin/dashboard/charts` | اضافه: query params `from` و `to` | | GET | `/api/v1/dashboard/clinic` | اضافه: `from`، `to` + فیلدهای جدید response | | GET | `/api/v1/dashboard/doctor` | اضافه: `from`، `to` + فیلدهای جدید response | ## فیلدهای جدید در Response ### GET /api/v1/dashboard/clinic فیلدهای اضافه‌شده به data موجود: ```json { "sms_wallet_balance": 150000, "unique_patients_count": 45, "revenue_period_rials": 12500000 } ``` ### GET /api/v1/dashboard/doctor فیلدهای اضافه‌شده: ```json { "unique_patients_count": 28, "revenue_period_rials": 7800000 } ``` ### GET /api/v1/admin/dashboard/charts?from=UNIX&to=UNIX ```json { "success": true, "data": { "appointments_by_day": [ { "date": 1718000000, "count": 12 }, { "date": 1718086400, "count": 8 } ], "revenue_by_day": [ { "date": 1718000000, "amount_rials": 4500000 }, { "date": 1718086400, "amount_rials": 3200000 } ], "subscription_sales_by_plan": [ { "plan": "basic", "count": 15, "total_rials": 3750000 }, { "plan": "professional", "count": 5, "total_rials": 2500000 } ] } } ``` ## پیش‌نیازها - همه تسک‌های ۱۰–۱۵ (نیاز به داده واقعی) - `yarn add recharts` برای نمودارها ## زمان تخمینی ۸ تا ۱۰ ساعت ## فیلتر بازه زمانی | preset | محاسبه | |--------|--------| | این هفته | from = شروع هفته جاری (شنبه) — to = now | | این ماه | from = اول ماه جاری (شمسی) — to = now | | ۳ ماه | from = now - 90 روز — to = now | | سفارشی | کاربر از PersianCalendar انتخاب می‌کند | **تبدیل تاریخ شمسی به Unix timestamp** برای ارسال به API: ```ts // از کتابخانه موجود در پروژه استفاده می‌شود // PersianCalendar component از assets/admin/components/ui/ ```