🧾

Duplicate Order Checker

سجل فحص الأوردرات المكررة — عرض فقط
⚙️ الإعدادات
📋 سجل التحديثات
12-09-2026
  • جديدإطلاق واجهة عرض سجل الأداة — عرض فقط، مفيش أي زرار بيعدّل أوردر أو بيشغّل فحص.
  • جديدشاشة دخول بالـ PIN من جدول الموظفين المشترك.
  • جديدفلاتر اختيار متعدد (نوع العملية · الموظف) + فترة سريعة + من/إلى تاريخ + بحث برقم الأوردر أو الملاحظات — كلها server-side.
  • جديدترتيب على الأعمدة (server-side) + صفحات ١٠٠ صف + تصدير XLSX بتحذير صريح لو الملف اتقص.
ℹ️ About — Duplicate Order Checker
📋 وصف الأداة

الهدف: عرض سجل عمليات الـ Worker اللي بيفحص الأوردرات الجديدة تلقائيًا وبيكشف التكرار المحتمل بنفس رقم تليفون الشحن. الواجهة دي قراءة فقط — بتعرض اللي حصل، ومابتعملش أي فعل.

المستخدمون المستهدفون: خدمة العملاء والإدارة — لمتابعة الأوردرات اللي اتعلّم عليها Duplicate ومراجعة أي فشل في الويبهوك.

إزاي الأداة الأصلية بتشتغل (الـ Worker)

  1. شوبيفاي بيبعت ويبهوك orders/create على POST /webhook.
  2. الـ Worker بيتحقق من الـ HMAC ويرد 200 فورًا، والشغل بيكمّل في الخلفية.
  3. بيدوّر على أوردرات تانية غير منفَّذة وغير ملغية في آخر 90 يوم بنفس رقم التليفون بعد تنضيفه.
  4. لو لقى مطابقات: بيضيف تاج Duplicate وسطر في نوت الأوردر، وبيسجّل duplicate_found.
  5. لو مفيش: بيسجّل checked_clear. وأي حالة تانية بتتسجّل بنوعها.

إزاي تستخدم الشاشة دي

  1. اختار اسمك وادخل الـ PIN.
  2. افتح الفلاتر واختار نوع العملية أو الفترة، أو ابحث برقم أوردر.
  3. اضغط رأس أي عمود للترتيب (تصاعدي ← تنازلي ← بلا ترتيب).
  4. صدّر XLSX لو محتاج تراجع بره الشاشة — لو الملف اتقص هيظهر بانر أصفر بالرقمين.

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

actionالوصف
get_logsصفحة ١٠٠ صف من السجل — فلترة وترتيب server-side
get_logs_countالعدد الكلي المطابق للفلاتر (رقم «النتائج»)
get_logs_exportكل المطابق حتى السقف للتصدير + cap · total · truncated
get_log_typesقيم type الموجودة فعليًا — بتغذّي فلتر نوع العملية
get_employeesقائمة الموظفين النشطين لشاشة الدخول وفلتر الموظف
check_employee · register_pin · verify_employeeالدخول بالـ PIN
get_configنسخة الـ Worker — لحارس الحد الأدنى
diagفحص ذاتي بدون أي كتابة (زرار 🩺 في الإعدادات)

⚙️ معنى كل نوع عملية

النوعمعناه
duplicate_foundاتحدد كتكرار محتمل — التاج والنوت اتكتبوا فعلاً على الأوردر
checked_clearاتفحص ومفيش تكرار في آخر ٩٠ يوم — مفيش أي تعديل
skippedاتخطّى: مفيش رقم تليفون · payload فاضي · اتعالج قبل كده · خطأ أثناء المعالجة (السبب في الملاحظات)
scan_cappedالفحص وصل لسقف الصفحات قبل ما يخلّص الـ ٩٠ يوم — النتيجة ممكن تكون ناقصة
hmac_failedوصل طلب على مسار الويبهوك والتوقيع مش مظبوط — راجع SHOPIFY_WEBHOOK_SECRET
🔧 تشريح الكود

FEATURE MAP

  • §CONFIG — الروابط الثابتة · esc() · orderLink() · دوال توقيت القاهرة · apiRequest/apiGet/apiPost بمهلة
  • §SHELL-JS — الإعدادات · النسخة · Changelog · About · التوست · runDiag() · حارس نسخة الـ Worker
  • §AUTH-JS — شاشة الدخول بخطوتين (اختيار الموظف ← الـ PIN)
  • §LOG-JS — الفلاتر multi-select · فلتر التاريخ · الترتيب · الصفحات · الرسم · تصدير XLSX
  • الـ Worker: §AUTH · §LOG-ENDPOINTS · §WEBHOOK (الأخير مالوش أي واجهة هنا)

KEY VARIABLES

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

NOTES / QUIRKS

  • الواجهة دي مابتكتبش أي حاجة — مفيش زرار بيعدّل أوردر، ولا بيعيد تشغيل الفحص، ولا بيمسح صف من السجل.
  • عمود «الموظف» غالبًا «🔔 ويبهوك تلقائي» — صفوف الأداة دي بيكتبها الـ Worker من الويبهوك، مش موظف. فلتر الموظف موجود للتوافق مع المعيار وهيرجّع صفر نتايج طول ما مفيش صفوف بموظف.
  • الأداة مابتسجّلش login/logout في D1 — القيمتين مش مسجّلتين لها في ecommoda-constants §7، والقاعدة إن القيمة تتسجّل هناك قبل أول كتابة.
  • فلتر التاريخ بيقارن بـ UTC والعرض بتوقيت القاهرة — عملية متأخرة بالليل ممكن تقع في يوم UTC اللي بعده. مقبول لفلتر بالأيام، ومكتوب عشان مايتكتشفش كباج.
  • الترتيب والفلترة والصفحات كلها server-side — applySort() في الواجهة تمرير مباشر، ورقم «النتائج» جاي من get_logs_count مش من طول الصفحة.
👁️ الأداة دي عرض فقط — بتقرا سجل الفحص التلقائي وبس. مفيش أي زرار هنا بيعدّل أوردر أو تاج أو نوت.
▲
نوع العملية
تحديد الكل
بحث برقم الأوردر أو الملاحظات
🔍
فترة سريعة
اليوم✓
أمس✓
آخر 3 أيام✓
آخر 7 أيام✓
آخر 30 يوم✓
آخر 90 يوم✓
📅 شهر محدد‹
اختَر الشهر والسنة — الفلتر بيتطبّق تلقائيًا بمجرد اختيار الاتنين. لسنة أقدم اختَر "سنة تانية..." واكتبها يدويًا.
الشهر الحالي✓
الشهر السابق✓
الربع الحالي✓
العام الحالي✓
العام السابق✓
من تاريخ
إلى تاريخ
الموظف
تحديد الكل
▲
النتائج: —
التاريخ الوقت نوع العملية رقم الأوردر الأوردرات المكررة صفحات مفحوصة الموظف الملاحظات
سجّل دخولك عشان يتحمّل السجل.