## Backend Architecture – CropLogic Platform پلتفرم **CropLogic** از سه سرویس کاملاً مستقل تشکیل شده است تا مقیاس‌پذیری، پایداری و امنیت داده‌ها در سطح بالایی حفظ شود. این سرویس‌ها عبارت‌اند از: - Backend Service - AI Service - SensorHub Service جدا بودن این سرویس‌ها باعث می‌شود هر بخش بتواند به‌صورت مستقل توسعه داده شود، در صورت افزایش بار به‌صورت جداگانه مقیاس‌پذیر باشد و در صورت بروز مشکل در یک سرویس، سایر سرویس‌ها دچار اختلال نشوند. --- ## 1. Backend Service سرویس **Backend** هسته‌ی اصلی منطق سیستم محسوب می‌شود و نقش **Gateway** بین کلاینت و سایر سرویس‌های داخلی را ایفا می‌کند. ### وظایف اصلی - دریافت درخواست‌ها از سمت کلاینت - ارتباط با سرویس‌های **AI** و **SensorHub** - پردازش و مدیریت خروجی سرویس‌ها - آماده‌سازی و ارسال پاسخ نهایی به کلاینت به عبارت دیگر، 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. SensorHub Service سرویس **SensorHub** مسئول دریافت، ذخیره و مدیریت داده‌های سنسورهای مزرعه است. به دلیل حساسیت بالای این داده‌ها و اهمیت **عدم از دست رفتن اطلاعات سنسورها**، این سرویس به‌صورت مستقل از سایر بخش‌ها پیاده‌سازی شده است. ### ویژگی‌های این سرویس - دریافت داده‌های سنسورها در زمان واقعی - ذخیره‌سازی امن و پایدار داده‌ها - ارائه داده‌ها به سرویس Backend برای تحلیل ### دیتابیس برای این سرویس از **Apache Cassandra** استفاده شده است. دلایل انتخاب Cassandra: - دیتابیس **Distributed** و مناسب برای داده‌های حجیم - **Fault Tolerance بالا** - جلوگیری از از دست رفتن داده‌ها - مناسب برای **Time-Series Data** مانند داده‌های سنسورها --- ## جمع‌بندی معماری معماری CropLogic بر پایه **Microservice Architecture** طراحی شده است که مزایای زیر را فراهم می‌کند: - مقیاس‌پذیری مستقل هر سرویس - افزایش پایداری سیستم - جداسازی مسئولیت‌ها - مدیریت بهتر بار پردازشی - امنیت بیشتر برای داده‌های حساس این معماری باعث می‌شود پلتفرم بتواند در مقیاس‌های بزرگ مزرعه و تعداد زیاد سنسورها نیز عملکرد پایدار و قابل اعتمادی داشته باشد. :::