163 lines
7.2 KiB
Markdown
163 lines
7.2 KiB
Markdown
## Backend Architecture – CropLogic Platform
|
||
|
||
پلتفرم **CropLogic** از سه سرویس کاملاً مستقل تشکیل شده است تا مقیاسپذیری، پایداری و امنیت دادهها در سطح بالایی حفظ شود. این سرویسها عبارتاند از:
|
||
|
||
- Backend Service
|
||
- AI Service
|
||
- FarmHub Service
|
||
|
||
جدا بودن این سرویسها باعث میشود هر بخش بتواند بهصورت مستقل توسعه داده شود، در صورت افزایش بار بهصورت جداگانه مقیاسپذیر باشد و در صورت بروز مشکل در یک سرویس، سایر سرویسها دچار اختلال نشوند.
|
||
|
||
---
|
||
|
||
## 1. Backend Service
|
||
|
||
سرویس **Backend** هستهی اصلی منطق سیستم محسوب میشود و نقش **Gateway** بین کلاینت و سایر سرویسهای داخلی را ایفا میکند.
|
||
|
||
### وظایف اصلی
|
||
- دریافت درخواستها از سمت کلاینت
|
||
- ارتباط با سرویسهای **AI** و **FarmHub**
|
||
- پردازش و مدیریت خروجی سرویسها
|
||
- آمادهسازی و ارسال پاسخ نهایی به کلاینت
|
||
|
||
به عبارت دیگر، Backend لایهی هماهنگکننده بین بخشهای مختلف سیستم است و تمام ارتباطات خارجی از طریق این سرویس انجام میشود.
|
||
|
||
### تکنولوژیها
|
||
- **Framework:** Django
|
||
- **Database:** MySQL
|
||
|
||
پروژه با استفاده از **Clean Architecture** طراحی شده است؛ بنابراین لایهی دیتابیس از منطق اصلی جدا بوده و در صورت نیاز امکان تغییر دیتابیس در آینده بهسادگی وجود دارد.
|
||
|
||
---
|
||
|
||
## 2. AI Service
|
||
|
||
سرویس **AI** به دلیل حجم بالای محاسبات و احتمال ایجاد بار سنگین روی سیستم، بهصورت کاملاً جدا از Backend پیادهسازی شده است. این سرویس مسئول انجام تمام پردازشهای مرتبط با **هوش مصنوعی و تحلیل دادهها** است.
|
||
|
||
### بخشهای اصلی این سرویس
|
||
|
||
#### 2.1 سیستم RAG (Retrieval-Augmented Generation)
|
||
|
||
این سیستم با استفاده از **Embedding مدلهای LLM** پیادهسازی شده و نقش ساخت **دستیار هوشمند مزرعه** را بر عهده دارد.
|
||
|
||
از این دستیار برای:
|
||
- پاسخ به سوالات کشاورزان
|
||
- ارائه راهنماییهای تخصصی کشاورزی
|
||
- تحلیل شرایط مزرعه
|
||
|
||
استفاده میشود.
|
||
|
||
---
|
||
|
||
#### 2.2 دریافت اطلاعات خاک بر اساس مختصات جغرافیایی
|
||
|
||
برای دریافت دادههای علمی مربوط به خاک از API زیر استفاده میشود:
|
||
|
||
`https://rest.isric.org/soilgrids`
|
||
|
||
این سرویس اطلاعات خاک را بر اساس مختصات جغرافیایی ارائه میدهد.
|
||
|
||
پارامترهای اصلی دریافت شده شامل موارد زیر است:
|
||
|
||
- depth_label
|
||
- bdod
|
||
- cec
|
||
- cfvo
|
||
- clay
|
||
- nitrogen
|
||
- ocd
|
||
- ocs
|
||
- phh2o
|
||
- sand
|
||
- silt
|
||
- soc
|
||
- wv0010
|
||
- wv0033
|
||
- wv1500
|
||
|
||
علاوه بر این، اطلاعات خاک برای عمقهای مختلف نیز دریافت میشود، از جمله:
|
||
|
||
- 0–5 سانتیمتر
|
||
- 5–10 سانتیمتر
|
||
- 10–15 سانتیمتر
|
||
|
||
این تفکیک عمق خاک اهمیت زیادی دارد، زیرا برخی گیاهان نسبت به ویژگیهای خاک در عمقهای خاص حساستر هستند.
|
||
|
||
---
|
||
|
||
#### 2.3 ترکیب دادههای خاک با دادههای سنسور
|
||
|
||
اطلاعات دریافتی از SoilGrids با دادههای **سنسورهای مزرعه** ترکیب میشوند.
|
||
|
||
هدف از این مرحله:
|
||
- تکمیل دادههای ناقص سنسورها
|
||
- افزایش دقت مدلهای تحلیلی
|
||
- ایجاد یک دیتاست کامل از شرایط واقعی مزرعه
|
||
|
||
---
|
||
|
||
#### 2.4 محاسبات تکمیلی ژئوفیزیک و خاک
|
||
|
||
در این مرحله، دادههایی که نه از طریق سنسورها و نه از طریق APIهای خارجی قابل دریافت نیستند، با استفاده از **فرمولهای علمی ژئوفیزیک و خاکشناسی کشاورزی** محاسبه میشوند.
|
||
|
||
این کار باعث میشود مدلهای تحلیلی تصویر کاملتری از شرایط مزرعه داشته باشند.
|
||
|
||
---
|
||
|
||
#### 2.5 تحلیل و مدلهای هوش مصنوعی
|
||
|
||
در مرحله نهایی، دادههای جمعآوریشده و پردازششده وارد سیستمهای تحلیلی میشوند که شامل موارد زیر است:
|
||
|
||
- استفاده از **سیستم RAG** برای تحلیل و تولید پاسخ
|
||
- استفاده از **Machine Learning** در سناریوهای تخصصیتر
|
||
- استفاده از **مدلهای از پیش آموزشدیده (Pretrained Models)**
|
||
|
||
خروجی این تحلیلها شامل مواردی مانند:
|
||
|
||
- توصیه زمان و میزان **آبیاری**
|
||
- توصیه **کوددهی**
|
||
- تحلیل وضعیت خاک و رشد گیاه
|
||
- پیشنهاد اقدامات بهینه برای مدیریت مزرعه
|
||
|
||
### دیتابیس
|
||
- **MySQL**
|
||
|
||
---
|
||
|
||
## 3. FarmHub Service
|
||
|
||
سرویس **FarmHub** مسئول دریافت، ذخیره و مدیریت دادههای سنسورهای مزرعه است.
|
||
|
||
به دلیل حساسیت بالای این دادهها و اهمیت **عدم از دست رفتن اطلاعات سنسورها**، این سرویس بهصورت مستقل از سایر بخشها پیادهسازی شده است.
|
||
|
||
### ویژگیهای این سرویس
|
||
- دریافت دادههای سنسورها در زمان واقعی
|
||
- ذخیرهسازی امن و پایدار دادهها
|
||
- ارائه دادهها به سرویس Backend برای تحلیل
|
||
|
||
### دیتابیس
|
||
|
||
برای این سرویس از **Apache Cassandra** استفاده شده است.
|
||
|
||
دلایل انتخاب Cassandra:
|
||
|
||
- دیتابیس **Distributed** و مناسب برای دادههای حجیم
|
||
- **Fault Tolerance بالا**
|
||
- جلوگیری از از دست رفتن دادهها
|
||
- مناسب برای **Time-Series Data** مانند دادههای سنسورها
|
||
|
||
---
|
||
|
||
## جمعبندی معماری
|
||
|
||
معماری CropLogic بر پایه **Microservice Architecture** طراحی شده است که مزایای زیر را فراهم میکند:
|
||
|
||
- مقیاسپذیری مستقل هر سرویس
|
||
- افزایش پایداری سیستم
|
||
- جداسازی مسئولیتها
|
||
- مدیریت بهتر بار پردازشی
|
||
- امنیت بیشتر برای دادههای حساس
|
||
|
||
این معماری باعث میشود پلتفرم بتواند در مقیاسهای بزرگ مزرعه و تعداد زیاد سنسورها نیز عملکرد پایدار و قابل اعتمادی داشته باشد.
|
||
:::
|