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

100 lines
3.8 KiB
Markdown

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