هدف پروژه: طراحی و توسعه یک سیستم کراولر برای استخراج دادههای محصولات (شامل قیمت، موجودی، توضیحات، تصاویر و دستهبندیها) از سایتهای مختلف و بروزرسانی روزانه اطلاعات در سیستم فروشگاه اینترنتی (Magento 2).
نیازمندیهای اصلی:
پویایی و انعطافپذیری سیستم:
سیستم باید به گونهای طراحی شود که قابلیت افزودن سایتهای جدید به راحتی در آینده فراهم باشد.
هر سایت ممکن است ساختار مختلفی برای دادهها و اطلاعات محصولات داشته باشد، بنابراین کراولر باید قادر به سازگاری با هر نوع ساختار باشد.
API برای ارتباط با Magento 2:
سیستم کراولر باید از طریق API با Magento 2 ارتباط برقرار کند تا بتواند محصولات جدید را وارد سیستم، قیمتها و موجودیها را بروزرسانی کند.
استفاده از API موجود در Magento 2 برای ارسال اطلاعات به سیستم و بروزرسانیهای روزانه.
سازگاری با سایتهای مختلف:
هر سایت هدف ممکن است از ساختار متفاوتی برای نمایش محصولات استفاده کند. بنابراین کراولر باید قادر به تشخیص ساختار هر سایت و استخراج اطلاعات مورد نظر باشد.
امکان افزودن پیکربندیهای مختلف برای هر سایت (مانند URLهای محصولات، ساختار دستهبندیها، نحوه نمایش قیمت و موجودی، و غیره).
مدیریت دستهبندیها:
سیستم باید قادر به ایجاد و مدیریت دستهبندیها برای محصولات جدید باشد.
امکان تعیین دستهبندیهای مناسب برای محصولات جدید که از سایتهای مختلف کراول میشوند.
مکانیزم بروزرسانی اطلاعات:
سیستم باید قابلیت بروزرسانی خودکار روزانه اطلاعات محصولات (قیمت و موجودی) را داشته باشد.
اطلاعرسانی در صورت بروز خطا در کراول یا آپدیت اطلاعات.
امنیت و جلوگیری از محدودیتهای رباتها:
سیستم باید روشهای مناسب برای شبیهسازی رفتار انسان (مثل تعیین سرعت مناسب برای ارسال درخواستها) داشته باشد.
در نظر گرفتن مکانیزمهایی برای جلوگیری از بلاک شدن IP یا شناسایی به عنوان ربات.
قابلیت تنظیمات برای زمانبندی:
امکان زمانبندی کراولر برای اجرا در زمانهای مشخص (مثلاً هر 24 ساعت یک بار یا روزانه در زمان خاص).
تنظیمات برای فعال یا غیرفعال کردن کراولر برای سایتهای خاص.
گزارشها و مانیتورینگ:
ایجاد داشبورد یا گزارش برای مشاهده وضعیت کراولها، تعداد محصولات استخراج شده، تعداد بروزرسانیها و هرگونه خطای رخ داده.
امکان مشاهده لاگها و خطاهای کراولر برای اشکالزدایی و تحلیل مشکلات.
مدیریت اشتباهات و گزارشگیری:
سیستم باید قادر باشد گزارشهای مفصلی از خطاها و مشکلات استخراج دادهها ارائه دهد.
قابلیت ارسال ایمیل یا نوتیفیکیشن برای هشدار به مسئولان سیستم در صورت وقوع خطا.
نیازمندیهای فنی:
زبانها و تکنولوژیها:
زبان برنامهنویسی: Python یا Node.js برای ایجاد کراولر (با توجه به تواناییهای هرکدام در پردازش درخواستهای HTTP و مدیریت دادهها).
فریمورک کراولینگ: Scrapy یا BeautifulSoup برای استخراج دادهها از صفحات وب.
پایگاه داده: MySQL یا PostgreSQL برای ذخیرهسازی اطلاعات استخراجشده.
استفاده از ابزارهایی مانند Celery (در صورت استفاده از Python) برای زمانبندی و مدیریت وظایف.
پایگاه داده:
یک پایگاه داده برای ذخیرهسازی اطلاعات محصولات، قیمتها، موجودیها و سایر دادههای مورد نیاز.
طراحی جداول برای ذخیرهسازی اطلاعات سایتها و تنظیمات مربوط به هر سایت.
استفاده از API Magento 2:
استفاده از API موجود در Magento 2 برای وارد کردن دادهها به سیستم و بروزرسانی موجودی و قیمت.
ارتباط امن از طریق API Keys و استفاده از OAuth برای احراز هویت.
فرایند توسعه و تست:
مراحل تست و بررسی کارکرد صحیح سیستم در زمان اجرای کراولها.
ایجاد تستهای واحد و اطمینان از صحت دادههای استخراجشده.
مشخصات پروژه در برونسپاری:
توضیحات وظایف:
ایجاد کراولر برای سایتهای مختلف.
پیادهسازی API برای ارتباط با Magento 2.
تنظیمات برای استخراج و بروزرسانی قیمت، موجودی، و دستهبندیها.
ایجاد گزارشها و مانیتورینگ برای مشاهده وضعیت کراولر.
مهارتهای مورد نیاز:
تجربه در برنامهنویسی با Python/Node.js.
تجربه در استفاده از فریمورکهای کراولینگ مانند Scrapy یا BeautifulSoup.
آشنایی با Magento 2 و API آن.
توانایی طراحی پایگاه داده و مدیریت سیستمهای زمانبندی.