# تسک ۱۲: ماژول امتیاز و نظرات ## توضیح سیستم امتیازدهی (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 بررسی می‌شود