إبقاء المنتجات متزامنة
أرسل كل تغيير، ونفّذ مزامنة كاملة مرة في اليوم، واعرف ما يحدث إذا توقفت المزامنة.
يبحث SeekGist في المنتجات التي ترسلها إليه. لذلك أرسل كل تغيير في منتجات متجرك عند حدوثه، وأرسل كل المنتجات مرة في اليوم. بهذا تبقى نتائج البحث مطابقة لمتجرك، ولا تبقى فيها منتجات حذفتها.
هل متجرك على OpenCart أو WooCommerce أو Magento؟ إضافة SeekGist تقوم بكل هذا عنك: ترسل المنتج عند حفظه، وتشغّل مهمة مجدولة (cron) كل 5 دقائق، وتنفّذ مزامنة كاملة مرة في اليوم. كل ما عليك أن تُبقي المهمة المجدولة للإضافة تعمل. راجع دليل OpenCart أو WooCommerce أو Magento 2.
بقية هذه الصفحة للمتاجر التي تستدعي الواجهة البرمجية من خادمها الخاص.
1. أرسل كل تغيير
عند حفظ منتج، وعند تغيّر المخزون أو السعر، وعند حذف منتج، استدعِ POST /v1/products/batch من خادمك باستخدام المفتاح السري:
curl -X POST https://api.seekgist.com/v1/products/batch \
-H "Authorization: Bearer $SEEKGIST_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: change-42-0001" \
-d '{"upsert": [{"id": "42", "name": {"ar": "قميص تجريبي"}, "price": "19.00", "currency": "USD"}], "delete": ["id-123"]}'- حتى 1,000 منتج في كل طلب (
upsertوdeleteمعًا). - أرسل
Idempotency-Key. إذا أعدت الطلب نفسه فلن تتكرر العملية. - المنتج الذي يصل مرة أخرى دون أي تغيير لا يكلّف شيئًا، ولا تُعاد فهرسته.
المنتج في المثال غير حقيقي.
2. نفّذ مزامنة كاملة مرة في اليوم
مرة في اليوم، ترسل مهمة مجدولة (cron) كل منتجاتك. استخدم قيمة sync_id نفسها في كل دفعات هذه المزامنة. وفي الدفعة الأخيرة أرسل أيضًا sync_complete: true وreplace_all: true. عندها يحذف SeekGist المنتجات التي لم ترسلها في هذه المزامنة.
{"upsert": [...], "sync_id": "nightly-run-118"}
{"upsert": [...], "sync_id": "nightly-run-118", "sync_complete": true, "replace_all": true}إذا لم تُرسل المزامنة أي منتج على الإطلاق فلا يُحذف شيء.
مثال على سطر في crontab (كل يوم الساعة 03:00):
0 3 * * * php /path/to/seekgist-full-sync.phpوالسطر نفسه مع Node.js أو Python:
0 3 * * * node /path/to/seekgist-full-sync.mjs
0 3 * * * python3 /path/to/seekgist_full_sync.py3. إذا كان إرسال كل تغيير صعبًا
بعض المتاجر لا تستطيع استدعاء SeekGist عند كل حفظ لمنتج. في هذه الحالة شغّل مهمة مجدولة ثانية كل 5 إلى 15 دقيقة ترسل المنتجات التي تغيّرت منذ آخر تشغيل لها، وأبقِ المزامنة الكاملة اليومية:
*/10 * * * * php /path/to/seekgist-send-changes.php
0 3 * * * php /path/to/seekgist-full-sync.phpاستخدم حزمة تطوير
تقسم حزم التطوير منتجاتك إلى دفعات حتى 1,000 منتج، وترسل Idempotency-Key مع كل دفعة، وتعيد المحاولة عند الأخطاء. والمزامنة الكاملة استدعاء واحد:
| اللغة | التثبيت | المزامنة الكاملة |
|---|---|---|
| JavaScript / Node.js | npm install @seekgist/sdk | client.upsertProducts(products, { replaceAll: true }) |
| Python | pip install seekgist | client.upsert_products(products, replace_all=True) |
| PHP | composer require seekgist/seekgist-php | $client->upsertProducts($products, ['replace_all' => true]) |
مع replace_all ترسل الحزمة sync_id في كل دفعة، وsync_complete مع replace_all في الدفعة الأخيرة. راجع صفحات JavaScript وPython وPHP.
إذا توقفت المزامنة
إذا نفّذ متجرك مزامنة كاملة ثم لم يصل منه أي شيء لأكثر من 26 ساعة، نرسل بريدًا إلى مالكي المتجر، ونعرض تنبيهًا في كل صفحات لوحة التحكم. السبب المعتاد مهمة مجدولة توقفت، أو إضافة أُوقفت أو تغيّرت مفاتيحها.
ما الذي يجب التحقق منه:
- في متجر يستخدم إضافة: افتح صفحة إضافة SeekGist في لوحة تحكم متجرك واضغط «اختبار الاتصال».
- تأكد أن المهمة المجدولة تعمل (مثلًا
crontab -lعلى خادمك، أو صفحة المهام المجدولة لدى الاستضافة). - في المتجر المبني خصيصًا: تحقق من المهمة التي تستدعي
POST /v1/products/batchومن سجلاتها.
تعرض صفحة الكتالوج في لوحة التحكم وقت آخر مزامنة تلقائية وآخر مزامنة كاملة. أما المتاجر التي ترفع الملفات من لوحة التحكم فقط فلا يشملها هذا الفحص.