Files
clinicpro/docs/tasks/task-04-blog/task.md
T
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

72 lines
1.9 KiB
Markdown

# تسک ۰۴: ماژول بلاگ
## توضیح
پیاده‌سازی سیستم مدیریت مقالات (بلاگ) شامل ایجاد، ویرایش، حذف،
نمایش لیست، بلاگ‌های برتر و آپلود تصویر.
## Endpoint ها
| متد | مسیر | توضیح | نیاز به Auth |
|-----|------|-------|-------------|
| POST | `/api/v1/blog/` | ایجاد بلاگ جدید | بله (Admin/Doctor) |
| PATCH | `/api/v1/blog/{uuid}` | ویرایش بلاگ | بله (Owner/Admin) |
| DELETE | `/api/v1/blog/{uuid}` | حذف بلاگ | بله (Owner/Admin) |
| GET | `/api/v1/blog/{uuid}` | دریافت یک بلاگ | خیر |
| GET | `/api/v1/blogs` | لیست بلاگ‌ها (با pagination) | خیر |
| GET | `/api/v1/blogs/top` | بلاگ‌های برتر | خیر |
| POST | `/api/v1/blog/image` | آپلود تصویر بلاگ | بله |
## پیش‌نیازها
- تسک ۰۱ و ۰۲
## خروجی‌های مورد انتظار
- [ ] CRUD کامل برای بلاگ
- [ ] pagination در لیست
- [ ] آپلود و ذخیره تصویر
- [ ] بلاگ‌های برتر (براساس بازدید یا لایک)
- [ ] slug برای SEO
## زمان تخمینی
۶ تا ۸ ساعت
## نمونه Request/Response
### POST /api/v1/blog/
```json
// Request
{
"title": "راهنمای کامل دیابت",
"body": "<p>محتوای مقاله...</p>",
"summary": "خلاصه مقاله",
"tags": [1, 2, 3],
"status": "published",
"image_uuid": "abc-..."
}
// Response 201
{
"data": {
"uuid": "72522a1d-...",
"title": "راهنمای کامل دیابت",
"slug": "rahnamai-kamel-diabet",
"status": "published",
"created_at": "2024-01-01T00:00:00Z"
}
}
```
### GET /api/v1/blogs
```
Query params: page=1&limit=10&category=1&tag=2
```
### GET /api/v1/blogs/top
```json
// Response
{
"data": [
{ "uuid": "...", "title": "...", "views": 1250, "image": "..." }
]
}
```