# تسک ۱۲: ماژول امتیاز و نظرات

## توضیح
سیستم امتیازدهی (rate) و نظرات (comment) و لایک کاربران برای دکترها،
شامل تأیید نظرات توسط ادمین.

## Endpoint ها (واقعی از Drupal)

### امتیازدهی (Rate)

| متد | مسیر | توضیح | نیاز به Auth |
|-----|------|-------|-------------|
| POST | `/api/v1/clinicpro/rate` | ثبت امتیاز جدید | بله |
| PATCH | `/api/v1/clinicpro/rate/{uuid}` | ویرایش امتیاز | بله (Owner) |
| DELETE | `/api/v1/rate/doctor/{uuid}` | حذف امتیاز | بله (Admin) |
| GET | `/api/v1/clinicpro/rate/{uuid}` | امتیاز من برای دکتر | بله |
| GET | `/api/v1/clinicpro-comment/doctor-rate/{doctor_uuid}` | آمار کلی امتیازهای دکتر | خیر |

### نظرات (Comment)

| متد | مسیر | توضیح | نیاز به Auth |
|-----|------|-------|-------------|
| POST | `/api/v1/clinicpro/comment` | ثبت نظر جدید | بله |
| PATCH | `/api/v1/clinicpro/comment/{uuid}` | ویرایش نظر | بله (Owner/Admin) |
| DELETE | `/api/v1/clinicpro/comment/{uuid}` | حذف نظر | بله (Owner/Admin) |
| GET | `/api/v1/clinicpro/comment/{uuid}` | دریافت یک نظر | بله |
| GET | `/api/v1/clinicpro/comments/{doctorId}` | لیست نظرات دکتر (با page/limit) | بله |
| GET | `/api/v1/clinicpro/unverified-comments/{doctorId}` | نظرات تأییدنشده (با page/limit) | بله (Admin) |
| PATCH | `/api/v1/clinicpro/unverified-comments/{commentId}` | تأیید/رد نظر | بله (Admin) |

### لایک (Like)

| متد | مسیر | توضیح | نیاز به Auth |
|-----|------|-------|-------------|
| POST | `/api/v1/clinicpro/like` | ثبت لایک/دیس‌لایک | بله |
| PATCH | `/api/v1/clinicpro/like/{uuid}` | ویرایش لایک | بله (Owner) |

## پیش‌نیازها
- تسک ۰۱، ۰۲، ۰۵ (Doctor)

## زمان تخمینی
۸ تا ۱۰ ساعت

---

## ⚠ نام فیلدهای Request (متفاوت از DB!)

| فیلد در Request | معادل در DB | توضیح |
|----------------|------------|-------|
| `correct_diagnosis` | `accuracy_of_diagnosis` | دقت تشخیص (0-100) |
| `doctor_skill` | `doctor_expertise` | مهارت پزشک (0-100) |
| `behavior_doctor` | `doctor_behavior` | برخورد پزشک (0-100) |
| `office_cleaning` | `clinic_cleanliness` | نظافت مطب (0-100) |
| `time_in_office` | `waiting_time_at_clinic` | زمان انتظار (0-100) |
| `doctor` | `doctor_id` | شناسه دکتر |
| `rate` | `starts` | امتیاز ستاره (ذخیره محاسبه‌شده) |

---

## نمونه واقعی Request — POST /api/v1/clinicpro/rate
```json
{
  "correct_diagnosis": 100,
  "doctor_skill": 100,
  "behavior_doctor": 100,
  "office_cleaning": 100,
  "time_in_office": 100,
  "doctor": 1,
  "rate": 2
}
```

## نمونه واقعی Request — PATCH /api/v1/clinicpro/rate/{uuid}
```json
{
  "correct_diagnosis": 50,
  "doctor_skill": 60,
  "behavior_doctor": 70,
  "office_cleaning": 80,
  "time_in_office": 90,
  "doctor": 1,
  "rate": 2
}
```

## نمونه واقعی Request — PATCH /api/v1/clinicpro/unverified-comments/{uuid}
_(تأیید نظر — بدنه خالی یا فقط `approved`)_
```json
{}
```

---

## نکات مهم
- هر کاربر فقط **یک امتیاز** برای هر دکتر می‌تواند ثبت کند (UNIQUE user_id + doctor_id)
- نظرات با `approved=0` ذخیره می‌شوند و باید توسط ادمین تأیید شوند
- لایک فقط برای **نظرات** است (نه بلاگ یا دکتر)
- هر کاربر فقط **یک لایک** برای هر نظر می‌تواند ثبت کند
- URL کامنت‌های تأییدنشده: `{doctorId}` در URL است اما فقط ROLE_ADMIN بررسی می‌شود
