⚙️ الإعدادات
📋 سجل التحديثات
12-09-2026
  • جديدإطلاق واجهة العرض للأداة — كانت Worker بس من غير أي شاشة.
  • جديدتاب «نظرة عامة»: عدّادات الفترة مقارنة بالفترة السابقة، وحالة سجل الحماية من التكرار، وجدول الأوردرات المحتاجة انتباه.
  • جديدتاب «سجل العمليات»: فلاتر متعددة الاختيار + بحث + فترة، ترتيب على الأعمدة، صفحات 100 صف، وتصدير XLSX.
  • جديدشاشة دخول الموظف (D1) وزرار فحص ذاتي في الإعدادات.
  • تغييرالأداة اتنقلت من الرفع اليدوي على الداشبورد إلى النشر الآلي من Git.
ℹ️ About — نقل أوردرات StyleBox
📋 وصف الأداة

الهدف: الأداة نفسها Worker بيستقبل ويبهوك من WooCommerce (stylebox.online) وبينشئ نفس الأوردر على Shopify تلقائيًا. الشاشة دي عرض فقط — بتجاوب على سؤال واحد: هل كل أوردرات StyleBox وصلت شوبيفاي، وإيه اللي وقف؟

المستخدمون المستهدفون: إدارة · متابعة الأوردرات.

⚠️ الشاشة مفيهاش أي أكشن — مفيش إعادة محاولة ولا تعديل. أي تدخل على أوردر واقف بيتعمل من شوبيفاي أو من WooCommerce مباشرة.

كيف تعمل — Workflow

  1. العميل بيعمل أوردر على stylebox.online، والـ COD gateway بيحوّل حالته لـ processing.
  2. WooCommerce بيبعت ويبهوك (Topic: Order updated) للـ Worker، والـ Worker بيتأكد من التوقيع (HMAC).
  3. الـ Worker بيحجز الأوردر في wc_order_sync_ledger (حماية من التكرار)، وبعدين بينشئ Draft Order على شوبيفاي وبيكمّله كأوردر COD حقيقي.
  4. بيكتب رقم أوردر WooCommerce في ميتافيلد custom.stylebox_order_id على أوردر شوبيفاي.
  5. النتيجة بتتسجّل في D1 — created أو skipped أو error — والشاشة دي بتقراها.

الـ Endpoints الرئيسية

actionالوصف
get_summaryعدّادات الفترة + الفترة السابقة + حالة الـ ledger + آخر حدث
get_attentionالأوردرات اللي حالتها failed أو in_progress عالقة، ومعاها آخر رسالة خطأ
get_logsصفحة من السجل (100 صف) — فلترة وترتيب server-side
get_logs_countإجمالي الصفوف المطابقة للفلاتر (للصفحات)
get_logs_exportالتصدير لـ XLSX + cap/total/truncated
get_config · diagنسخة الـ Worker والفحص الذاتي
get_employees · check_employee · register_pin · verify_employee · log_logoutشاشة الدخول (Universal D1 Auth)
🔧 تشريح الكود

FEATURE MAP

  • §CONFIG — الروابط الثابتة · esc() · توقيت القاهرة بـ Intl · apiRequest بمهلة
  • §SHELL-JS — الإعدادات · النسخة · التوست · الفحص الذاتي · حارس نسخة الـ Worker
  • §AUTH-JS — شاشة الدخول (4 حالات) والخروج
  • §TOOL-JS::overview — الطزاجة · مربعات KPI · شريط الـ ledger · جدول الانتباه
  • §LOG-JS — فلاتر السجل · الترتيب · الصفحات · تصدير XLSX

KEY VARIABLES

  • currentEmployee{ username, displayName } في الذاكرة فقط
  • LS_SECRET = 'wc_order_transfer_worker_secret' — المفتاح الوحيد في localStorage
  • WORKER_URL · ADMIN_WORKER_URL — ثوابت في §CONFIG، مش حقول إعدادات
  • TOOL_VERSION — مصدر واحد لرقم نسخة الواجهة
  • MIN_WORKER_VERSION — أقل نسخة Worker الشاشة دي بتشتغل معاها (مالهاش علاقة بـ TOOL_VERSION)

NOTES / QUIRKS

  • مفيش عمود «الموظف» في السجل — الأداة مستقبِل ويبهوك، فكل الصفوف بتتكتب من غير موظف. صفوف الدخول/الخروج مستثناة من السجل server-side.
  • skipped مش فشل — WooCommerce بيبعت order.updated لأي تعديل، فالويبهوك بيتكرر لنفس الأوردر. التكرار بيترفض بالـ ledger، وده السلوك الصح.
  • in_progress عالق = التنفيذ اتقطع قبل ما يخلص (مهلة Cloudflare 30 ثانية على ctx.waitUntil). الصف بيبقى قابل لإعادة المطالبة بعد 3 دقايق لو جه ويبهوك تاني لنفس الأوردر.
  • فلتر التاريخ بيقارن بـ UTC والعرض بتوقيت القاهرة — فرق الساعتين/التلاتة ممكن يحط عملية بالليل في يوم UTC اللي بعده.
  • الأرقام من D1 مباشرة — مفيش كاش ومفيش نداء لشوبيفاي، فكل ضغطة تحديث بترجّع الحالة اللحظية.
لسه ما اتحمّلش
👁️ الشاشة دي عرض فقط — مفيش أي أكشن بيتنفّذ منها. النقل نفسه بيحصل تلقائيًا لحظة ما الأوردر يبقى processing على stylebox.online.
فترة سريعة
اليوم
أمس
آخر 7 أيام
آخر 30 يوم
الشهر الحالي
الشهر السابق
من تاريخ
إلى تاريخ
سجل الحماية من التكرار (من أول يوم): اتنقل فشل تحت التنفيذ
🚨 أوردرات محتاجة انتباه
أوردر فشل نقله، أو فضل «تحت التنفيذ» أكتر من 3 دقايق (يعني التنفيذ اتقطع).
جارٍ التحميل…
بحث في رقم الأوردر أو التفاصيل
🔍
فترة سريعة
اليوم
أمس
آخر 7 أيام
آخر 30 يوم
الشهر الحالي
الشهر السابق
من تاريخ
إلى تاريخ
نوع العملية
تحديد الكل
النتائج:
التاريخ الوقت النتيجة أوردر شوبيفاي أوردر StyleBox الإجمالي التفاصيل