Files
hamed de1a78a235 feat: Implement SMS sending functionality with KavehNegar and Rangineh providers
- Add SendSmsMessage class for encapsulating SMS message data.
- Create KavehNegarProvider and RanginehProvider classes implementing SmsProviderInterface for sending SMS.
- Implement SmsLogRepository and SmsTemplateRepository for managing SMS logs and templates.
- Develop SendSmsHandler for handling SMS sending messages.
- Create SmsService to manage SMS dispatching and logging.
- Add UserProfileController for managing user profiles with CRUD operations.
- Implement UserProfile entity and repository for user profile data management.
- Update symfony.lock and bootstrap.php for project dependencies and environment setup.
2026-06-09 22:00:34 +03:30

3.8 KiB

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

توضیح

سیستم امتیازدهی (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

{
  "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}

{
  "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)

{}

نکات مهم

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