""" تسک‌های Celery برای RAG """ from config.celery import app from .ingest import ingest @app.task def rag_ingest_task(recreate: bool = True): """ embed و ذخیره دیتای همه کاربران در Qdrant. هر چند ساعت یکبار اجرا شود (از طریق Celery Beat). recreate=True: collection از نو ساخته می‌شود تا دیتای قدیمی حذف شود. """ result = ingest(recreate=recreate) return result @app.task(bind=True) def irrigation_recommendation_task( self, farm_uuid: str, plant_name: str | None = None, growth_stage: str | None = None, irrigation_method_name: str | None = None, query: str | None = None, ) -> dict: """ تسک Celery برای تولید توصیه آبیاری. داده‌های سنسور، گیاه و روش آبیاری را از DB بارگذاری کرده و از سرویس RAG توصیه می‌گیرد. """ from rag.services.irrigation import get_irrigation_recommendation self.update_state( state="PROGRESS", meta={"message": "در حال پردازش توصیه آبیاری..."}, ) result = get_irrigation_recommendation( farm_uuid=farm_uuid, plant_name=plant_name, growth_stage=growth_stage, irrigation_method_name=irrigation_method_name, query=query, ) result["status"] = "completed" return result @app.task(bind=True) def fertilization_recommendation_task( self, farm_uuid: str, plant_name: str | None = None, growth_stage: str | None = None, query: str | None = None, ) -> dict: """ تسک Celery برای تولید توصیه کودهی. داده‌های سنسور و گیاه را از DB بارگذاری کرده و از سرویس RAG توصیه می‌گیرد. """ from rag.services.fertilization import get_fertilization_recommendation self.update_state( state="PROGRESS", meta={"message": "در حال پردازش توصیه کودهی..."}, ) result = get_fertilization_recommendation( farm_uuid=farm_uuid, plant_name=plant_name, growth_stage=growth_stage, query=query, ) result["status"] = "completed" return result