office-transfer.html لـPackage-Transfer-To-Office.html، مطابقة حرفيًا لاسم ريبو الـ Worker المنفصل (نفس قاعدة Bosta-Orders-Shipped-Scanner.html في v1.34.0). ⚠️ الرابط القديم ما بقاش شغّال — حدّث أي بوكمارك على أجهزة المخزن.Warehouse أو فاضي): البوابة بتستبعد Office وCourier قبل ما الصف يدخل الطابور.Warehouse وقت التغليف (بند مفتوح)، فالحقل فاضي على كل أوردر في المتجر. بيبقى مفيد أول ما التغليف يبدأ يكتب.1.1.0: على نسخة أقدم السطر بيختفي والقايمة بترجع لكل الأوردرات.custom.package_whereabouts_s1/_s2، والسكان فوري: كل باركود بيتسجّل لوحده من غير دفعة ومن غير زرار تنفيذ.Ready (S1 أو S2) · اتغلّف فعلاً · وعهدة الطرد لسه Warehouse أو فاضية · ومش ملغي.Ready يوم القياس) هيظهروا هنا، ونفس الأوردر يتعدّ في صف «جاهز لتسليم بوسطة» وفي الصف ده.s2_packing_date_time) مش S1. الفحص بـS1 كان بيعدّي على طرد ما اتغلّفش — مقيس حيًا: ٦ من ٦ صفوف S2 كانت هتعدّي والصح ٢.Ready · حالة بره القايمة المعتمدة) — بتكمّل بإقرار مش بتتمنع.الهدف: تسجيل انتقال الطرد من المخزن للمكتب —
الموظف بيسكن باركود الأوردر، والأداة بتكتب
custom.package_whereabouts_s1 (أو _s2 لدورة
الاستبدال/الاسترجاع) بقيمة Office.
ليه الأداة موجودة: أوردرات قاهرة+جيزة والشو روم مابتتشحنش من المخزن على طول — بتعدّي على المكتب، اللي فيه منسّق الشحن والمناديب بيتقابلوا. ولما تسليم الدفعة مايكونش كامل، بيفضل طرد في المكتب ومفيش نظام بيسجّل إنه هناك. الحقل ده بيقفل الفجوة دي.
المستخدمون المستهدفون: فريق المخزن — لحظة تجهيز دفعة الانتقال للمكتب.
Bosta —
🔴 بوسطة خارج النطاق بالكامل: بتستلم من المخزن نفسه وتتبّع
طردها بييجي من بوسطة، مش من الحقل ده.Ready — S1 = Ready فالعهدة
بتتكتب على _s1، أو S1 = Delivered و
S2 = Ready فبتتكتب على _s2.s1_packing_date_time لصف S1 و
s2_packing_date_time لصف S2.Warehouse أو فاضية —
Office بترجّع «خلاص متعمل» وCourier بترفض.update
يا rejected.| action | الوصف |
|---|---|
get_ready_to_office | أوردرات Ready (الماكينتين) بحقولها الخام — قراءة بحتة |
scan | قراءة الأوردر حيًّا + الحكم + metafieldsSet + صف D1 |
get_logs / get_logs_count / get_logs_export | سجل العمليات — فلاتر server-side (employees · types · results · machines · search · dateFrom/dateTo) + صفحات + ترتيب، والتصدير بيرجّع cap/total/truncated |
get_employees | تعبئة فلتر الموظف في تاب السجل |
diag | فحص ذاتي بدون كتابة — المتغيرات (اسم وطول فقط) · OAuth · صلاحية write_orders · تعريف الميتافيلد الحيّ · D1 · تكلفة الاستعلام · الـ Origin |
get_config | بيرجّع WORKER_VERSION — الواجهة بتقارنه بـ min |
| الحالة | معناها |
|---|---|
| ✓ تم | العهدة اتكتبت واتأكدت من رد شوبيفاي (Office) |
| ⚠ تم بتحذير | اتكتبت، بس كان فيه حاجة محتاجة مراجعة والموظف أقرّ بيها |
| ✗ فشل | النداء وصل لشوبيفاي واترفض — العهدة ما اتكتبتش |
| ⏭ خلاص متعمل | العهدة هي المستهدفة أصلاً (Office) — لا نجاح ولا فشل ولا رفض: مفيش حاجة كانت مطلوبة. عدّاد مستقل ولون محايد |
| ⛔ مرفوض | اتوقف قبل أي محاولة كتابة (ملغي · بوسطة · ما اتغلّفش · مع المندوب · حالة مش Ready) — الصف بيتسجّل بالسبب |
shared/shell.js — الهوية والهيدر والإعدادات والتوست وحارس النسخة (نسخة واحدة مضمّنة للهب كله)shared/shell.js §OFFICE-GATE — 🔴 مصدر الأهلية الوحيد في الواجهة (wocOfficeGate · wocOfficeQueue). الصفحة دي والشاشة الرئيسية بينادوا نفس الدالة على نفس الرد§SCAN — سكانر بمهلة (١٥٠ms للسكانة · ٤٠٠ms للكتابة)، نفس قيم Orders-Packing-Checker.html بالحرف§TOOL-JS::scanOrder — نداء scan فوري لكل باركود، ومعالجة الخمس نتايج§TOOL-JS::outcomeModal — نافذة واحدة بأربع نغمات (مرفوض · خلاص متعمل · إقرار · فشل)، ومدخل واحد showOutcome§TOOL-JS::session — جدول سكانات الجلسة + العدّادات§OFFICE-QUEUE-JS — الطابور بالتحديث التلقائي وحراسه التلاتة§LOG-JS — القسم الموحّد: فلاتر multi-select + فترة سريعة + جدول + صفحات + تصدير§LOG-JS::logParams — المصدر الوحيد لفلاتر التلات نداءات§SHELL-JS::freezeOnScroll — قفل الهيدر وشريط التابات بعتبة مقيسة مش رقم ثابت§SCAN::evaluate (Worker) — 🔴 الحارس الحقيقي: بيقرا الأوردر حيًّا وقت الضغطة§SCAN::resolveOrder (Worker) — الرقم الطويل قراءة بمفتاح، والقصير بحث بمطابقة تامة على الاسم الراجعcheckWorkerVersion(PAGE_WORKERS) + wocRunDiag() (shell) — حارس النسخة وزرار 🩺 الفحص الذاتيcurrentEmployee — { username, displayName } جاي من sessionStorage عبر requireSession()TOOL_VERSION (shell) — نسخة الهب كلهWOC_WORKERS.office.min (shell) — أقل نسخة Worker مقبولة. مالهاش أي علاقة بـ TOOL_VERSIONLS_SECRET = 'warehouse_ops_worker_secret' (shell) — 🔴 الأداة دي عضو في مجموعة warehouse_ops من أول يوم: مفيش سر قديم خاص بيها لأنها مالهاش نسخة مستقلةWOC_API_TIMEOUT_MS (shell) — مهلة ٩٠ ثانية على كل نداءtool = "metafields_change" (سجل مشترك) + extra.sourceTool = "package_transfer_to_office" · type = "update" أو "rejected". أحداث الدخول/الخروج تحت warehouse_ops_center (الهب)extra.sourceTool — من غيره بيعدّ صفوف تلات أدوات مع بعضextra.result — success/warning/error/rejected/alreadyextra.machine — S1 أو S2: أنهي طرد اتسجّل، مش حالة الأوردرdoneThisSession — الأوردر اللي اتسجّل في الجلسة دي بيتشال من الطابور فورًا؛ الشاشة لازم تتغيّر بعد النجاحPackage-Transfer-To-Office فيه Worker وبس، والواجهة
الوحيدة هي الصفحة دي.package_whereabouts_s1
مش قابل للفلترة في بحث شوبيفاي: الفلتر عليه بيتجاهَل في صمت
ويرجّع المتجر كله (١٠٬٠٠٠ صف — مقيس 15-09-2026). فالـ Worker
بيجيب Ready بس، والأهلية بتتحسب في §OFFICE-GATE
بتاع الـ shell — مصدر واحد للصفحة وللشاشة الرئيسية.Warehouse وقت التغليف ولسه ما
اتعدّلتش. عشان كده العهدة الفاضية مقبولة في الطابور؛ لو اترفضت
الطابور كان هيفتح فاضي.CHUNK ولا MAX_BATCH في الأداة دي.dateFrom/dateTo بيتقارنوا بالـ timestamp
المخزّن (UTC) بينما العرض بتوقيت القاهرة — فرق الساعات ممكن يحط
عملية بعد ٩ مساءً في يوم UTC اللي بعده. مقبول لفلتر بالأيام، ومكتوب
هنا عشان مايتكتشفش كباج بعدين.diag بس —
مفيش قيمة أي سر بتتعرض.| الوقت | رقم الأوردر | الطرد | النتيجة | ملاحظة |
|---|
| رقم الأوردر | العميل | نوع الأوردر | عدد القطع | موقع الشحنة | تاريخ الأوردر | تاريخ التغليف | وقت التغليف | الوقت منذ التغليف | قام بالتغليف |
|---|
| التاريخ | الوقت | الموظف | رقم الأوردر | الطرد | من → إلى | النتيجة | السبب / ملاحظة |
|---|---|---|---|---|---|---|---|
| لا يوجد سجل بعد — اضغط تحديث | |||||||