يحدّد هذا القسم العقود الملزمة بين وحدة التصنيع وكل وحدة قائمة في النظام، باتباع الوصفة المُجرَّبة في وحدة المختبرات: الاستدعاءات الأمامية عبر Actions، والتفاعلات الخلفية عبر الأحداث (Events). الخلاصة الإدارية: التصنيع يعتمد على ثماني وحدات قائمة ولا تعتمد عليه أي وحدة؛ نقاط البيع والمتجر الإلكتروني والفوترة الإلكترونية بلا أي ارتباط مباشر — يصلهم أثر التصنيع عبر المخزون والمبيعات فقط. المطلوب بناؤه عند الجيران محدود: سبعة مداخل خدمية رقيقة فقط، والباقي قضبان جاهزة ومُجرَّبة. هوية الوحدة الملزمة لكل عقد أدناه (القرار D-01): طبقة التصنيع تعيش داخل Modules/Production الموسَّعة — بادئة الصلاحيات production.*، مفتاح الترقيم production (موصول أصلاً)، وفضاء الإعدادات production.*، ومراكز العمل هي production_centers الموسَّعة لا جدولاً جديداً.
Action معتمداً لديها داخل نفس المعاملة — لا اتصال HTTP ولا كتابة مباشرة في جداول الغير.Actions الوحدات المستهدفة، فيبقى اتجاه الاعتماد دائماً خارجاً من التصنيع.| الموديول | ماذا يأخذ منه التصنيع | ماذا يعطيه | الآلية |
|---|---|---|---|
| النواة (Core) | دليل الأصناف products، وحدات القياس والتحويلات product_units، الترقيم SequenceService، الإعدادات، نطاق الفروع، المرفقات، الموافقات | جدول امتداد إعدادات الصنف التصنيعية mfg_item_mrp_settings، تسجيل مساهم صلاحيات على البادئة القائمة production، إضافة حالة ApprovalModule::Production | قراءة + خدمات للأمام، وتسجيل عند الإقلاع |
| المخزون (Inventory) | StockService للتسعير قراءةً فقط (getIssueCost/getProductCost)، وإجراءا ApproveIssue وApproveReceipt هما قناة تغيير الأرصدة الوحيدة — لا استدعاء مباشر لزيادة أو إنقاص رصيد بلا مستند، أرصدة التوفر، المستودعات | حجوزات المواد عند الإصدار (بناء جديد reserve/release)، صرف خام ← تحت التشغيل، استلام تام بتكلفة مُجمَّعة، مخازن أمانة بعلم is_consignment لمواد العميل (Toll — قرار D-15) | Actions للأمام + مرجعية reference_type='production_order' + إضافة حالة ProductionOrder لتعدادي أنواع المرجعية |
| المشتريات (Purchases) | أوامر الشراء المفتوحة كعرض زمني لاحتساب صافي الاحتياج (MRP) | طلبات شراء آلية من تخطيط الاحتياجات تدخل دورة الاعتماد والتحويل القائمة | Action جديد رقيق CreatePurchaseRequest يُستدعى للأمام |
| المبيعات (Sales) | أوامر البيع المؤكدة = مصدر الطلب لخطة الإنتاج الرئيسية، ومحفّز أوامر التصنيع حسب الطلب | تاريخ تسليم موعود محسوب بالطاقة (CTP) يُكتب رجوعاً في عمود promised_date (الاسم القانوني الوحيد — D-16)، وربط الطلب بالعرض عبر جدول mfg_peggings المملوك للتصنيع | FK على جانب التصنيع فقط + Action جديد SetPromisedDate |
| الحسابات (Accounting) | قناة القيد الوحيدة CreateJournalEntry، مراكز التكلفة وبُعد السطر، توزيع الخدمات CostAllocationService، زرع الحسابات، إغلاق الفترات | خمس عائلات قيود لكل أمر إنتاج + قيد امتصاص الأعباء الشهري، كل قيد موسوم بـsource_type='production_order' ومركز التكلفة | Action للأمام حصراً؛ التسوية قبل CloseFiscalPeriod |
| الموارد البشرية (HRM) | سلسلة هوية المشغّل employees.user_id، الورديات والحضور؛ معدل الأجر في الإصدار الأول من مركز العمل labor_cost_rate (قرار D-06)، وحقول معدلات HRM مؤجلة كتجاوز اختياري لاحق | كميات أجر القطعة المؤكدة لكل موظف لتغذية الرواتب، وساعات العمل الفعلية | مستمع داخل التصنيع يستدعي Action جديداً بملكية HRM (RecordPieceworkEntry) يكتب جدولاً تملكه HRM (hrm_piecework_entries) تقرؤه الرواتب — لا تقرأ HRM أي جدول mfg_* إطلاقاً |
| الجودة (QMS) | نتائج الفحص التي تحكم تقدّم العملية وحالة جودة الاستلام (مفرج/معلّق/مرفوض) | طلبات فحص أثناء التشغيل للعمليات الموسومة inspection_required، وبلاغات عدم مطابقة عند تجاوز عتبة الخردة | Actions جديدة CreateInspection/CreateNonConformance؛ الجداول جاهزة بعمود production_order_id |
| الصيانة (CMMS) | سجل أصول الماكينات والقوالب cmms_assets، جداول الصيانة الوقائية بالعداد، ساعات التوقف لخصمها من الطاقة المتاحة | عدادات أشواط القوالب التراكمية بعد كل تأكيد، وإطلاق أمر صيانة وقائية عند بلوغ العتبة | FK على جانب التصنيع + Actions جديدة RecordMeterReading/CreateWorkOrder وجدول عدادات جديد + مدخل قراءة فقط GetDowntimeWindows يستهلكه CRP بدل أي قراءة مباشرة لجداول الصيانة |
| نقاط البيع والمتجر (POS/WebStore) | — | توفر المنتج التام بشكل غير مباشر فقط: الاستلام يرفع رصيد المخزون الذي يقرآنه أصلاً | صفر ارتباط مباشر — المخزون هو الوسيط |
| الفوترة الإلكترونية (EInvoicing) | — | لا شيء مباشر؛ فاتورة أجر التشغيل لحساب الغير (Toll) تصدر كفاتورة مبيعات عادية وتمر عبر القناة القائمة | صفر ارتباط مباشر — المبيعات هي الوسيط |
| الحدث | المُصدِر | المستهلكون | أهم حقول الحمولة |
|---|---|---|---|
ProductionOrderReleased | إصدار أمر الإنتاج (مع تجميد نسخة BOM والمسار) | حجز المواد، تجهيز خطط الفحص، إدراج أول عملية في طابور المحطة | order_id, product_id, quantity, production_type, material_ownership, bom_snapshot_id, routing_snapshot_id |
MaterialIssued | ترحيل صرف المواد بعد ApproveIssue والقيد | مُجمِّع تكلفة تحت التشغيل، فك الحجز، تحديث النواقص ولوحة المتابعة | issue_id, order_id, operation_no, lines[product, qty, unit_cost, batch_no, ownership], journal_entry_id |
ConfirmationPosted | ترحيل تأكيد العملية (يرحّل أجور وأعباء مُحمَّلة) — الاسم القانوني الموحّد (قرار D-17) | التقدّم الآلي للعملية التالية (حدث OperationCompleted)، مراكمة أشواط القالب، تغذية أجر القطعة عبر RecordPieceworkEntry، تقييم الخردة لبلاغ عدم مطابقة | order_id, operation_no, work_center_id, tool_id, employee_id, yield[grade, qty], scrap_quantity, labor_hours, reason_code |
GoodsReceiptPosted | ترحيل استلام التام بعد ApproveReceipt والقيد | إيفاء الربط مع أوامر البيع، تحديث التوفر والوعود، متابعة بوابة الجودة المعلّقة | gr_id, order_id, lines[item, grade_code, qty, unit_cost, quality_status, batch_no], journal_entry_id |
ProductionOrderClosed | إقفال الأمر عبر CloseProductionOrder (احتساب الانحرافات السبعة وتصفير WIP) — الاسم القانوني الموحّد (قرار D-17) | توجيه الانحرافات للمسؤولين حسب النوع وحدود التفاوت، قائمة مراجعة المعايير، تقرير باريتو | order_id, variances[type, amount, percent, band, owner_role], journal_entry_id |
MoldShotCountReached | مُراكِم أشواط الأدوات عند بلوغ عتبة العداد | إطلاق أمر صيانة وقائية في CMMS وتحويل حالة القالب إلى صيانة (يُستبعد من الطاقة) | tool_id, cmms_asset_id, cycles_used, life_cycles, threshold |
MrpRunCompleted | تشغيل تخطيط الاحتياجات | إنشاء طلبات الشراء المخططة، إنشاء أوامر الإنتاج المخططة، رسائل الاستثناءات | mrp_run_id, planned_purchase_count, planned_order_count, exceptions[] |
| المدخل | الموديول | الحالة | الاستخدام |
|---|---|---|---|
CreateJournalEntry | الحسابات | جاهز ومُجرَّب | كل قيود دورة التكلفة الخمسة وقيد الامتصاص الشهري |
ApproveIssue / ApproveReceipt / StockService::getIssueCost | المخزون | جاهز | الصرف والاستلام والتسعير بطريقتي FIFO/المتوسط |
StockService::reserve/release | المخزون | بناء جديد | حجز المواد عند الإصدار وفكّه عند الصرف (العمود موجود بلا منطق) |
CreatePurchaseRequest | المشتريات | بناء جديد | تحويل مخرجات MRP إلى طلبات شراء داخل الدورة القائمة |
SetPromisedDate | المبيعات | بناء جديد | كتابة تاريخ التسليم الموعود المحسوب بالطاقة رجوعاً في promised_date |
CreateInspection / CreateNonConformance | الجودة | بناء جديد | بوابات الفحص أثناء التشغيل وعند الاستلام وبلاغات الخردة |
RecordMeterReading / CreateWorkOrder | الصيانة | بناء جديد | عدادات أشواط القوالب وأوامر الصيانة الوقائية |
GetDowntimeWindows | الصيانة | بناء جديد | مدخل قراءة فقط يخصم نوافذ الأعطال من طاقة CRP بلا قراءة جداول مباشرة |
RecordPieceworkEntry | الموارد البشرية | بناء جديد | تغذية أجر القطعة في جدول تملكه HRM تقرؤه الرواتب |
GetLaborRate | الموارد البشرية | مؤجل بعد الإصدار الأول | تجاوز اختياري لمعدل الموظف لاحقاً — الإصدار الأول يعتمد معدل مركز العمل (D-06) |
CostAllocationService / SequenceService / SettingsService | الحسابات / النواة | جاهز | توزيع مراكز الخدمة، الترقيم المستندي، ربط الحسابات بالإعدادات |
WIP / دائن مخزون الخام — بالكمية × تكلفة الصرف الفعلية — نوع production_material_issue.WIP / دائن أجور مُحمَّلة — بالساعات × المعدل أو الكمية × أجر القطعة — نوع production_labor.WIP / دائن أعباء مُحمَّلة — بمُسبّب التكلفة × معدل التحميل (كلاهما على مركز العمل: عمود cost_driver الجديد × overhead_rate القائم) — نوع production_overhead؛ ومفاتيح الحسابات كلها في فضاء production.* الواحد الذي تبذره المرحلة 0 نفسها.مصروف خردة / دائن WIP — نوع production_scrap.مخزون التام / دائن WIP — نوع production_receipt.WIP يُحلَّل إلى الانحرافات السبعة (سعر واستخدام المواد ← المشتريات/الإنتاج، معدل وكفاءة العمالة ← الإنتاج، إنفاق وكفاءة الأعباء ← الإدارة، حجم الأعباء الثابتة ← المبيعات/الإدارة) ضمن حدود تفاوت: أقل من 2% طبيعي، 2–5% مراقبة، أكثر من 5% تحقيق — نوع production_variance.في أوامر التشغيل لحساب الغير (Toll) لا يُقيَّد أي عنصر مواد — مواد العميل أمانة بلا قيمة دفترية، وWIP يحمل تكلفة التحويل فقط، والإيراد فاتورة أجر تشغيل عبر المبيعات تمر للفوترة الإلكترونية كالمعتاد.
mfg_peggings.sales_order_id، mfg_tools.cmms_asset_id/fixed_asset_id، production_centers.cost_center_id؛ ولا تقرأ أي وحدة أجنبية جدول mfg_* (تغذية الرواتب تُدفع إلى جدول تملكه HRM).CreateJournalEntry، والمخزون حصراً عبر StockService وإجراءاته، والترقيم حصراً عبر SequenceService.