- 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.
3.8 KiB
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 بررسی میشود