Add AST JSON files for NotificationMobileController and manifest.json; create SmsServiceLookupOnlyTest for SMS service functionality

This commit is contained in:
hamed
2026-07-07 14:41:22 +03:30
parent 57d081246f
commit 4ee1524f31
50 changed files with 7945 additions and 2676 deletions
+17 -21
View File
@@ -4,6 +4,11 @@
> **Provider:** همیشه `kavenegar` (پیش‌فرض و تنها گزینه فعال).
> All send operations are dispatched **asynchronously** via Symfony Messenger → Redis queue.
> **سیاست lookup-only (مهم):** همه‌ی پیامک‌ها فقط از طریق الگوی تأییدشده‌ی کاوه‌نگار
> (`verify/lookup.json`) ارسال می‌شوند. ارسال متن آزاد با `sms/send.json` **غیرفعال** است
> (در ایران برای پیام خدماتی فیلتر می‌شود). هر پیامی که الگو/کد VerifyLookup نداشته باشد
> ارسال **نمی‌شود**؛ در `SmsLog` با `success=false` ثبت و در لاگ برنامه خطا می‌خورد.
## Configuration
- **کلید API کاوه‌نگار فقط از متغیر محیطی `KAVENEGAR_API_KEY` خوانده می‌شود** — نه از دیتابیس و نه از پنل. در پنل ادمین فقط وضعیت read-only «تنظیم‌شده/نشده» نمایش داده می‌شود.
@@ -14,32 +19,22 @@
---
## POST `/api/v1/sms/send`
## POST `/api/v1/sms/send` — ⛔ غیرفعال (Deprecated)
Send a direct SMS message (free text).
ارسال متن آزاد **دیگر مجاز نیست** (سیاست lookup-only). این endpoint اکنون همیشه `422`
برمی‌گرداند و هیچ پیامکی ارسال نمی‌کند. برای ارسال دستی از
[`POST /api/v1/sms/send-template`](#post-apiv1smssend-template) با یک تمپلیت تأییدشده
که کد VerifyLookup کاوه‌نگار دارد استفاده کنید.
**Permission:** `ROLE_ADMIN`
### Request Body (`application/json`)
### Response `422` (همیشه)
```json
{
"mobile": "09123456789",
"message": "سلام، پیام آزمایشی",
"provider": "kavenegar"
}
```
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `mobile` | string | ✅ | Recipient mobile (`09XXXXXXXXX`) |
| `message` | string | ✅ | Message text |
| `provider` | string | ❌ | نادیده گرفته می‌شود؛ همیشه `kavenegar` استفاده می‌شود |
### Response `200`
```json
{
"success": true,
"data": { "message": "پیامک با موفقیت ارسال شد" }
"success": false,
"errors": [
{ "code": "ERR_VALIDATION_001", "message": "ارسال متن آزاد مجاز نیست؛ از تمپلیت تأییدشده (VerifyLookup) استفاده کنید" }
]
}
```
@@ -48,7 +43,7 @@ Send a direct SMS message (free text).
|------|------|-------------|
| `ERR_AUTH_001` | 401 | Missing token |
| `ERR_AUTH_006` | 403 | Not admin |
| `ERR_VALIDATION_001` | 422 | Invalid mobile format |
| `ERR_VALIDATION_001` | 422 | ارسال متن آزاد غیرفعال است (همیشه) |
---
@@ -93,6 +88,7 @@ Send an SMS using an approved template.
| `ERR_AUTH_006` | 403 | Not admin |
| `ERR_NOT_FOUND_001` | 404 | Template not found |
| `ERR_VALIDATION_001` | 422 | Template not approved |
| `ERR_VALIDATION_001` | 422 | تمپلیت کد VerifyLookup کاوه‌نگار ندارد و قابل ارسال نیست (`provider_code` خالی) |
---