طبقة تتبّع لحظية تجيب على سؤال واحد: «أين يقف كل أمر إنتاج الآن؟». توفّر شاشة طرفية لكل قسم (مركز عمل) يُغلق عبرها العامل المرحلة الحالية، فينتقل الأمر تلقائياً إلى المرحلة التالية، مع لوحة متابعة حيّة للمشرف. هي طبقة فوق محرّك التنفيذ القائم، لا إعادة بناء له.
تقع رقابة الصالة بين التخطيط والتنفيذ وتربطهما لحظياً: تقرأ مسار التصنيع Routing (التسلسل المعرّف مسبقاً كبيانات أساسية ثابتة) لتعرف «ما العملية التالية»، وتكتب التأكيد Confirmation (الإنجاز الفعلي) عبر محرّك التنفيذ القائم. تنبيه جوهري: رقابة الصالة ليست هي المسار Routing — المسار هو التسلسل المعرّف الثابت، أما رقابة الصالة فهي التنفيذ اللحظي لذلك التسلسل.
Order_Operation قائمة، ومحرّك التأكيد جاهز.MES.كل قسم يقابله شاشة طرفية لمركز عمل؛ وإغلاق العامل للمرحلة هو تأكيد عملية؛ وانتقال الأمر للمرحلة التالية هو تقدّم آلي في خطوة المسار؛ ورؤية الجميع للحالة لحظياً هي المتابعة الحيّة لصالة الإنتاج.
هذا الكيان قائم مسبقاً على جدول Order_Operation (المعرّف في طبقة التنفيذ)؛ ودور رقابة الصالة هو تفعيل تتبّعه اللحظي فقط، لا إنشاء جدول جديد.
| الحقل | الوصف |
|---|---|
order_no | أمر الإنتاج الذي تتبع له العملية |
operation_no | رقم الخطوة داخل المسار (مثال: 10، 20، 30) |
work_center_id | مركز العمل / القسم المنفّذ |
tool_id | الأداة / القالب المرتبط بالعملية |
status | الحالة ضمن { Waiting, Ready, InProgress, Completed } |
actual_start_time | يُختم عند ضغط زر [Start] |
actual_end_time | يُختم عند ضغط زر [Done] |
confirmed_by | العامل الذي أغلق العملية |
quantity_completed | الكمية المسجّلة عند التأكيد |
| الحالة | الدلالة |
|---|---|
| Waiting | العملية السابقة لم تكتمل بعد؛ العملية غير قابلة للتنفيذ على طرفيتها |
| Ready | اكتملت السابقة؛ تظهر العملية في طابور الطرفية ويمكن بدؤها |
| InProgress | ضغط العامل [Start] وتم ختم actual_start_time |
| Completed | ضغط العامل [Done]؛ ختم actual_end_time وتسجيل التأكيد |
operation[N].status = Completed وختم end_time = now.routing.get_next(N) لقراءة المسار وتحديد العملية التالية.operation[next].status = Ready وإشعار مركز عملها فتظهر على طرفيته.order.status = Completed فيصبح الأمر جاهزاً لاستلام البضاعة GR.العلاقة الجسرية: routing.get_next(N) يجيب «ما التالي؟» (من المسار)، وحالة العملية تسجّل «أين نقف» (لحظياً).
WO-001؛ يضغط العامل [Start] فتصير العملية InProgress.Completed.Ready ويُشعر طرفيتها.WO-001 تلقائياً على طرفية إزالة الزوائد — وهذا هو «التقدّم».Completed وجاهزاً للاستلام.Ready، مرتّبة حسب الأولوية/الجدول الزمني.[Start] / [Done] فقط.reason_code.لوحة حيّة تُظهر لكل أمر عمليته الحالية ونسبة إنجازها، مثل: WO-001: Sanding (Op 30) — 60%، WO-002: Pressing — just started، WO-003: Waiting for press (mold busy). ومنها كشف الاختناق اللحظي: تكدّس أوامر بحالة Waiting قبل مورد معيّن يكشف أنه القيد الحالي — ترتبط بتخطيط السعة CRP لكنها لحظية لا تقديرية.
| # | الأثر |
|---|---|
| 1 | رؤية لحظية: تعرف الإدارة موقع كل أمر بلا سؤال العمّال. |
| 2 | تغذية تلقائية للتأكيد: كل Done يُنشئ تأكيداً فورياً (كمية + وقت) فتصير بيانات التكلفة حيّة ودقيقة بلا إدخال يدوي آخر اليوم. |
| 3 | كشف اختناق لحظي: تكدّس Waiting قبل مورد يفضح القيد الحالي. |
| 4 | أزمنة تشغيل فعلية: البدء/الانتهاء لكل عملية يغذّي OEE وضبط أزمنة المسار وانحرافات الزمن (الفعلي مقابل المخطّط). |
| 5 | فرض التسلسل: لا تظهر عملية قبل اكتمال سابقتها ⇐ سلامة الجودة والعملية. |
IoT، حساب OEE، مسح الباركود/RFID.OEE مذكور مرّتين دون أي معادلة أو تعريف — يُعدّ مرحلة مستقبلية؛ هذا الجزء يلتقط الأزمنة الفعلية فقط لتمكين حسابه لاحقاً.Order_Operation من طبقة التنفيذ، وتُضاف عليه آلة الحالة الرباعية كـ enum وفق وصفة الوحدات السريرية.Done ← مستمع يسجّل التأكيد ويستدعي routing.get_next ويُشعر مركز العمل التالي.Modules\Accounting\Actions\CreateJournalEntry — لا كتابة مباشرة في دفتر الأستاذ.mfg.{resource}.{action} (مثل mfg.terminal.confirm) تُسجَّل في PermissionDependencyRegistry بـ Core، ونطاق الفروع عبر DataScope، والترقيم عبر SequenceService.CRP كمرجع للسعة المخطّطة وتقابلها بالواقع — يتطلب جاهزية طبقتي التخطيط والتنفيذ أولاً (الطبقة 11 في ترتيب البناء).