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.
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# تسک ۱۲: ماژول امتیاز و نظرات
|
||||
|
||||
## توضیح
|
||||
سیستم امتیازدهی (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 بررسی میشود
|
||||
Reference in New Issue
Block a user