Browse Source
feat(hadis): add lightweight on-demand source details endpoint and documentation
master
feat(hadis): add lightweight on-demand source details endpoint and documentation
master
4 changed files with 287 additions and 11 deletions
-
142apps/hadis/serializers/hadis.py
-
4apps/hadis/urls.py
-
47apps/hadis/views/hadis.py
-
105docs/FLUTTER_MODALS_API_GUIDE.md
@ -0,0 +1,105 @@ |
|||
# 📱 راهنمای API و مپینگ دیتا برای مودالهای فلاتر (Source Details) |
|||
|
|||
این مستند نحوه نمایش اطلاعات منبع در مودالهای کلاینت فلاتر (Flutter) را مشخص میکند. |
|||
|
|||
--- |
|||
|
|||
### 📌 قاعده کلی مودالها |
|||
> **توجه:** در مودالها **متن اصلی (Original Text)** و **ترجمه (Translation)** قرار نمیگیرند (زیرا این دو مورد روی خود کارت در صفحه اصلی نمایش داده شدهاند). |
|||
> هدف اصلی این مودالها نمایش **اطلاعات و مستندات منبع (Source Details)** است. |
|||
|
|||
--- |
|||
|
|||
### ۱. تفکیک محتوای مودالها بر اساس نوع ارگیومنت |
|||
|
|||
| نوع ارگیومنت (Source Type) | فیلدهای مورد نیاز در مودال | فیلدهای نادیدهگرفتهشده در مودال | |
|||
| :--- | :--- | :--- | |
|||
| **`quote`** (نقلقول / متن اصلی راوی) | **آدرسها (`address`)** + **عکسهای کتاب (`images`)** | فاقد لینک و متن تکراری | |
|||
| **`fatwa`** (فتوا) | **آدرسها (`address`)** + **لینکها (`links`)** + **عکسهای کتاب (`images`)** | فاقد متن تکراری | |
|||
| **`history`** (تاریخ) | **آدرسها (`address`)** + **لینکها (`links`)** + **عکسهای کتاب (`images`)** | فاقد متن تکراری | |
|||
| **`interpretations`** (تفاسیر) | **آدرسها (`address`)** + **لینکها (`links`)** + **عکسهای کتاب (`images`)** | فاقد متن تکراری | |
|||
| **`corrections`** (تصحیحات) | **آدرسها (`address`)** + **لینکها (`links`)** + **عکسهای کتاب (`images`)** | فاقد متن تکراری | |
|||
|
|||
--- |
|||
|
|||
### ۲. منابع دریافت دیتا (API Endpoints) |
|||
|
|||
#### 🚀 اندپوینت سبک و اختصاصی باز کردن مودال (On-Demand Modal API): |
|||
برای بهینهسازی و عدم بارگذاری سنگین در لیستها، اندپوینت اختصاصی زیر ساخته شده تا هنگام باز شدن هر مودال، اطلاعات منبع (آدرس، لینکها و تصاویر) را مستقیماً دریافت کنید: |
|||
* **اندپوینت:** `GET /api/hadis/<hadis_slug_or_id>/source-details/` (یا `GET /api/hadis/<hadis_slug_or_id>/sources/`) |
|||
* **ورودی:** اسلاگ حدیث یا آیدی عددی آن. |
|||
* **خروجی:** آبجکت کامل منبع شامل `address` (لیست رشتهها)، `links` (لیست لینکها) و `images` (لیست تصاویر). |
|||
|
|||
--- |
|||
|
|||
#### الف) تفاسیر و تصحیحات (Interpretations & Corrections): |
|||
* **حالت آفلاین (Sync):** |
|||
* اندپوینت: `GET /api/hadis/sync/hadis/` |
|||
* تفاسیر: داخل آرایه `interpretations` هر آبجکت حدیث. |
|||
* تصحیحات: داخل آرایه `corrections` هر آبجکت حدیث. |
|||
* **حالت آنلاین:** |
|||
* اندپوینت جزئیات تصحیح: `GET /api/hadis/corrections/<correction_slug>/` |
|||
* اندپوینت جزئیات تفسیر: `GET /api/hadis/interpretations/<interpretation_slug>/` |
|||
|
|||
#### ب) متون اصلی راوی (Transmitter Original Texts / Quotes): |
|||
* **حالت آنلاین:** `GET /api/hadis/narrators/<narrator_slug>/original_texts/` یا `GET /api/hadis/original-texts/<original_text_slug>/` |
|||
* **حالت آفلاین (Sync):** `GET /api/hadis/sync/narrators/` $\rightarrow$ داخل آرایه `original_texts` هر آبجکت راوی. |
|||
|
|||
#### ج) سایر ارگیومنتها (فتاوا، تاریخ، نقلقولها): |
|||
* **حالت آنلاین (درخواست مودال):** `GET /api/hadis/<hadis_slug_or_id>/source-details/` |
|||
* **حالت آفلاین (Sync):** `GET /api/hadis/sync/hadis/` $\rightarrow$ فیلدهای `detail.address`، `detail.links` و `detail.reference_images`. |
|||
|
|||
--- |
|||
|
|||
### ۳. جدول مپینگ فیلدها در UI مودال |
|||
|
|||
| فیلد در API | نوع داده | نحوه استفاده و رندر در مودال فلاتر | |
|||
| :--- | :--- | :--- | |
|||
| `title` | `String` | عنوان بالای مودال (مثلاً نام کتاب یا عنوان موضوع) | |
|||
| `address` | `List<String>` یا `String` | لیست خطوط آدرس، جلد، صفحه و چاپ منبع | |
|||
| `images` | `List<{ id, image, thumbnail }>` | گالری افقی بندانگشتی تصاویر نسخ خطی با قابلیت کلیک و نمایش تمامصفحه | |
|||
| `links` | `List<String>` | دکمهها یا لیست لینکهای وبسایت منبع *(فقط در fatwa، history، interpretations و corrections)* | |
|||
|
|||
--- |
|||
|
|||
### 📦 نمونه دیتای مپینگ برای فلاتر |
|||
|
|||
#### ۱. نمونه مودال برای `quote` (بدون لینک): |
|||
```json |
|||
{ |
|||
"title": "رواية زرارة", |
|||
"address": [ |
|||
"الکافی، ج ۱، ص ۲۵، طبع دارالحدیث", |
|||
"التهذیب، ج ۲، ص ۱۰" |
|||
], |
|||
"images": [ |
|||
{ |
|||
"id": 10, |
|||
"image": "https://dovodi.newhorizonco.uk/media/hadis/book_references/kafi_p25.png", |
|||
"thumbnail": "https://dovodi.newhorizonco.uk/media/hadis/book_references/kafi_p25.png" |
|||
} |
|||
] |
|||
} |
|||
``` |
|||
|
|||
#### ۲. نمونه مودال برای `fatwa` / `history` / `interpretations` / `corrections` (همراه با لینک): |
|||
```json |
|||
{ |
|||
"title": "تفسیر آیه تطهیر", |
|||
"address": [ |
|||
"التبیان فی تفسیر القرآن، ج ۲، ص ۴۵، طبع دار احیاء التراث العربی", |
|||
"مجمع البیان، ج ۴، ص ۱۲" |
|||
], |
|||
"links": [ |
|||
"https://shamela.ws/book/123/45", |
|||
"https://lib.eshia.ir/12345/2/45" |
|||
], |
|||
"images": [ |
|||
{ |
|||
"id": 25, |
|||
"image": "https://dovodi.newhorizonco.uk/media/hadis/book_references/tibyan_p45.png", |
|||
"thumbnail": "https://dovodi.newhorizonco.uk/media/hadis/book_references/tibyan_p45.png" |
|||
} |
|||
] |
|||
} |
|||
``` |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue