فشل الاتصال
| رقم الأوردر | تاريخ الأوردر | العميل | نوع الأوردر | نوع الفاتورة | عدد القطع | الإجمالي | الأصناف | الحالة | مرات الطباعة |
|---|
فشل الاتصال
| التاريخ | الوقت | رقم الأوردر | نوع الأوردر | نوع الفاتورة | الموظف | مرات الطباعة |
|---|
جاري تحضير الفواتير...
الصفحة دي جزء من الهب — الدخول بيحصل مرة واحدة في الشاشة
الرئيسية، والهوية بتوصل هنا من sessionStorage.
Ready — زي مسار الفاتورة
بالظبط: تاج Printed(S1) + printing_time_s1 + الحالة.
يعني أوردر بوسطة بيدخل طابور التغليف بعد الطباعة.Confirmed + Edit
أو Confirmed) وعليه أثر طباعة سابقة، يعني فيه ورقة بمحتوى
قديم في المخزن. تأكيد إلزامي لكل أوردر إن الورقة اتقطّعت.
ولو الأوردر متغلّف (s1_packing_date_time) الشارة
بتقول كده — الفاتورة جوّه الطرد.REPRINT_WARN_MINUTES) —
سجل اليوم بيتجاب طازة من D1 قبل كل دفعة.extra.guard بتاع صف الطباعة —
من غير type جديد.?order= — الجاي من طابور التغليف🔴 الباراميتر بيفلتر ويحدّد — مايطبعش. طباعة تلقائية من رابط = ورق بيطلع من غير ما حد يضغط. الموظف بيراجع وبيضغط بنفسه.
Ready، يعني مش موجود في الجدول بحكم التعريف. لما
?order= مايطابقش أي صف، الصفحة بتنادي
POST /lookup وبتطلّع كارت 🔁 إعادة طباعة الفاتورة./track عنده فرع صريح: الحالة
الحالية = الهدف → مفيش كتابة ومفيش خطأ. اللي بيتحدّث: التاج +
ميتافيلد وقت الطباعة بالوقت الجديد + صف جديد في السجل باسم الموظف.LOGS_FETCH_MAX بيقص، والصفوف القديمة مفيهاش موظف).Ready كان هيتقري S1 في القاعدة الافتراضية،
والنوع بيختار بنود الفاتورة مش العنوان. محتاج
Worker v2.4.0؛ الأقدم بيدّي رسالة صريحة في الكارت./lookup — قراءة بحتة.الهدف: الموظف بيختار الأوردرات الجاهزة للطباعة (عادي · استبدال/استرجاع)، بيطبع فواتيرها، والأداة بتسجّل الطباعة باسمه وبتحدّث حالة الأوردر لـ Ready على شوبيفاي.
المستخدمون المستهدفون: موظفو المخزن.
Confirmed وConfirmed + Edit (S1) وConfirmed + RETURN وConfirmed + EXCHANGE (S2) المنشأة من 2026-04-01.allZones) — مناديب وشو روم بيطبعوا فاتورة شوبيفاي، وOther_Regions بيطبع بوليصة بوسطة. والأوردر اللي زونه فاضي أو مش من القايمة بيتعرض ومربع تحديده مقفول./track لكل أوردر، وبتفتح نافذة النتيجة: العدد بتلات حالات (تم · تم جزئيًا · فشل)، والتفاصيل بتتعرض بس لو فيه تحذير أو فشل.| المسار / action | الوصف |
|---|---|
POST /orders | الأوردرات الجاهزة — عادي (S1) واستبدال/استرجاع (S2) — وzone/channel وzoneExcluded وprintingTimeS1/packingTimeS1 (حارس الفاتورة اللاغية · S1 بس) |
?action=bosta_lookup | تحويل أرقام الأوردرات لشحنات بوسطة — قراءة بحتة. بترجّع المعرّف والحالة والنوع والتحصيل، وبتسجّل «مش على بوسطة» |
?action=bosta_awb | البوليصة كـ PDF — مفردة أو مجمّعة، مع التحقق من عدد الصفحات |
POST /invoice | بيانات فاتورة أوردر واحد (+ truncatedLineItems · truncatedReturns · multiCycle · cycleCount) |
POST /track | تسجيل الطباعة + تاج + ميتافيلد الوقت + الحالة Ready — بيطلب employee، وبياخد guard اختياري (إقرار قطع الفاتورة → extra.guard) |
POST /logs | سجل الطباعة (+ cap · total · truncated) |
get_employees · check_employee · verify_employee · register_pin · log_logout | Universal D1 Auth |
diag | فحص ذاتي بدون كتابة — متغيرات · D1 · موظفين · OAuth · صلاحيات · Origin |
get_config | WORKER_VERSION — بيتقارن بـ MIN_WORKER_VERSION |
| النوع | الإجراءات على شوبيفاي بالترتيب |
|---|---|
S1 | قراءة custom.manual_status → تاج Printed(S1) → custom.printing_time_s1 → custom.manual_status = Ready (بعد تحقق التحوّل) → صف metafields_change في D1 |
S2 | قراءة custom.status_2_r_e → تاج Printed(S2) → custom.printing_time_s2 → custom.status_2_r_e = Ready (بعد تحقق التحوّل) → صف metafields_change في D1 |
§STYLES — التوكنز وكل CSS الأداة§LOGIN — شاشة الدخول على خطوتين (PIN)§SHELL — الهيدر الـ sticky + شريط التابات + chip التاب§TOOL — تاب الطباعة: KPIs · شريط الطباعة · القسم الموحّد (فلاتر + جدول)§LOG — تاب السجل: KPIs · بانر التقصّ · القسم الموحّد§MODALS — الإعدادات · تأكيد إعادة الطباعة · نتيجة تسجيل الطباعة · About · Changelog§CONFIG — WORKER_URL · LS_SECRET · apiRequest/apiPath/apiGet/apiPost§SHELL-JS — النسخ · حارس الـ Worker · التوست · playBeep · runDiag · Freeze on Scroll§AUTH-JS — ماكينة حالات الدخول الأربعة§TABLE-JS — منطق عام للقسمين: multi-select · الفترة · الترتيب · الـ chips§TOOL-JS — تحميل الأوردرات · الاختيار · mapLimit (حد التزامن) · الطباعة · نافذة النتيجة§LOG-JS — تحميل السجل · KPIs · التصدير§INVOICE-JS — رسم فواتير S1/S2 + الطباعة عبر iframecurrentEmployee — بييجي من sessionStorage عبر requireSession() (استثناء الهب الموثّق من بند ٥). بيموت مع قفل التاب، ولكل تاب لوحده، ومابيديش أي صلاحية جديدةTOOL_VERSION — نسخة الواجهة، مصدر واحد بيغذّي زرار الهيدر وشاشة الدخول والـ ChangelogMIN_WORKER_VERSION — أقل نسخة Worker مقبولة. مالهاش علاقة بـ TOOL_VERSIONLS_SECRET = 'order_printer_worker_secret' — المفتاح الوحيد في localStorageWORKER_URL — ثابت في §CONFIG، مش حقل إعدادات (Standards #28)msState — حالة كل فلاتر التابين بمفاتيح مسبوقة بـ p (طباعة) أو l (سجل)TYPE_LABEL — تسميات العرض بس (عادي / استبدال/استرجاع). قيم D1 وعقد الـ Worker بتفضل S1/S2sec.print / sec.log — حالة البحث والتاريخ والترتيب لكل قسم على حدةPRINT_CONCURRENCY = 4 — أقصى عدد نداءات /invoice أو /track شغّالة في نفس الوقت. مش ضبط أداء — هو اللي بيمنع فشل الدفعة كلها (R15)Delivered حالة نهائية — الطباعة بتتسجّل بس الحالة مش بتتكتب، والنتيجة بترجع warning.iframe بتاع الفاتورة مالوش وصول لكتلة التوكنز، فألوانه حرفية — استثناء تقني موثّق من Standards #35.warning أو error — ومع ذلك العدّادات التلاتة بتتعرض دايمًا، فالصفر الأصفر/الأحمر بيفضل ظاهر ومش مستنتَج.mapLimit)، مش Promise.all على الدفعة كلها. قبل v3.4.0 دفعة ٥٠ أوردر كانت بتولّد ٥٠ نداء متزامن، وأي واحد يفشل يلغي الخمسين برسالة CORS واحدة — صفر فاتورة وصفر صف في D1. لو رجّعت Promise.all، الباج بيرجع معاها.error في نافذة النتايج جنب نتايج التسجيل. الصفوف دي مالهاش logged عن قصد: مفيش أي فعل حصل، فتحذير «تمت لكن ما اتسجلتش» هيبقى مضلّل.MIN_WORKER_VERSION بقت 2.3.0 — الواجهة بقت معتمدة فعلاً على printingTimeS1 وpackingTimeS1 في رد /orders (حارس الفاتورة اللاغية)، وده بالظبط شرط ترفيع الحد الأدنى. Worker أقدم = الحارس بيشتغل بسجل D1 بس + توست صريح.×1). قبل كده كانت بتختفي على القطعة الواحدة، فغياب الرقم كان بيتقري «مش معروف» مش «واحدة».printing_time_s2 بإيده في الأدمن.Bosta_Uploaded_S1 لصف الشحن وBosta_Uploaded_S2 لصف الاستبدال/الاسترجاع. أوردر شحنته الأصلية مرفوعة وشحنة الاستبدال لأ مابيدخلش الطابور — ودي مش حالة نادرة.AWB / عادي / استبدال-استرجاع مع بعض — وAWB مستند بينما التانيين نوع أوردر. بقى عمودين بنفس قيم جدول الطابور بالظبط: «نوع الأوردر» (عادي · استبدال/استرجاع) و«نوع الفاتورة» (مناديب · شو روم · بوسطة)، وبفلتر وترتيب وتصدير لكل واحد.type، فطباعة بوسطة (AWB) ما كانتش بتتحسب في «S1» مع إنها طباعة S1 فعلاً.cod بتاع بوسطة).— عليها. ده مش عطل: «مش معروف» بتفضل فاضية بدل ما تتخمّن من زون الأوردر الحالي — الزون بيتغيّر بعد الطباعة. صفوف بوسطة شغّالة من أول يوم (المستند نفسه بيقولها).bostaUpdated من السجل (إقرار ما اتسألش عنه ماينفعش يتكتب).09-09-2026 - 11.51 - عدد 3 - بوسطة للفاتورة وللبوليصة. اسم البوليصة اتحط جوّه ملف الـ PDF نفسه (خانة /Title بإلحاق في آخر الملف) — الملف لسه بيتطبع بايت ببايت.barcode.min بقى 1.2.0 — Promote مطلوب لـ order-sku-barcode-printer-worker v1.2.0 (السجل + [[d1_databases]]).اليوم · منذ يومين …)، وعمود «النوع» بقى «نوع الأوردر» نص ملوّن بلا بادج — نفس عمودَي جدول التغليف بالحرف. ساعة إنشاء الأوردر مش معلومة المخزن بيتصرّف عليها؛ اللي بيفرق «بقاله قد إيه».— على الزرار المتعطّل ومربعات كلها مطفية — يعني الحالة ظاهرة، بس السبب مابقاش مكتوب.— مش رقم. القناة هي اللي بتحدد الورق والطابعة والمسار (فاتورة A4 مقابل بوليصة حرارية)، فدفعة من غير قناة معناها ورق مختلط — وسطر تحت المربعات بيقول للموظف السبب بدل زرار رمادي بلا تفسير.shared/shell.js §COURIER-GROUP.shared/shell.js §BOSTA-GATE — الرئيسية والطباعة بيعدّوا من مصدر واحد، ومستحيل يفترقوا.Bosta_Uploaded_S1. الأوردر اللي لسه ما اترفعش مستحيل تتطبع بوليصته، فكان بياخد مكان في الطابور ويرجع صف أحمر «مش على بوسطة» بعد الطباعة.visibility:hidden (بيخفي وبيسيب المكان محجوز) وmin-height:100vh على الـ body.Other_Regions) كانت مستبعَدة من الطابور خالص — دلوقتي ليها مكان، وبتطبع بوليصة بوسطة على الملصق الحراري.Ready. الموظف كان بيشوف «لا توجد أوردرات تطابق الفلاتر» وتوست بيقول إن الجدول اتفلتر عليه، والحل الوحيد كان إن حد يرجّع الحالة يدوي.Ready بيفضل Ready. اللي بيتحدّث: التاج + ميتافيلد وقت الطباعة بالوقت الجديد + صف جديد في السجل باسم الموظف. ⏱️ الثمن المُعلَن: عمود «الوقت منذ الطباعة» في طابور التغليف بيرجع لأول اليوم.status_2_r_e ∈ {Confirmed + RETURN, Confirmed + EXCHANGE} بس، فأوردر S2 حالته Ready كان هيتقري S1 — والنوع ده بيختار البنود نفسها، وبعدين بيتبعت لـ /track اللي بيكتب على ماكينة S1. النوع بقى بيتبعت صريح في مسار إعادة الطباعة بس.printer.min بقى 2.4.0. من غيره كارت إعادة الطباعة بيقول بالنص إن النسخة أقدم، وباقي الصفحة شغّال عادي.order-sku-barcode-printer-worker انضم لمجموعة السر warehouse_ops — نفس حقل السر بيخدم الأربعة.switchMainTab وكل §LOG-JS كانوا موجودين بالكامل بس مفيش أي زرار بينادي عليهم، فالتاب كان مستحيل يتفتح. واتضاف كمان تعبئة فلتر الموظف من get_employees — كانت أثر جانبي لشاشة الدخول اللي اتشالت من الصفحة.agoInfo) اتنقل لـ shared/shell.js — كان نسخة في الشاشة الرئيسية لوحدها.Confirmed + Edit أو Confirmed) وسبق طباعته معناه إن فيه ورقة بمحتوى قديم في المخزن — الأداة بقت تطلب من الموظف يأكّد إنه قطّعها قبل ما يطبع الجديدة، أوردر أوردر بالاسم.extra.guard).2.3.0 — الواجهة بقت معتمدة على بيانات جديدة في /orders. الـ Worker الأقدم بيدّي تنبيه صريح والحارس بيشتغل بالسجل بس.2.1.0.formatInvoiceDate is not defined — الدالة كانت اتشالت سهوًا في v3.0.0 والنداء عليها فضل. رجعت، وتاريخ الفاتورة بقى بيوم القاهرة زي باقي التواريخ.