طبقة الأساس في وحدة التصنيع. تعرّف «ما هو المنتج وكيف يُصنع»: قائمة المكونات (BOM)، ومسار التصنيع (Routing)، وموارد الإنتاج (Work Center وTool/Mold). تُنشأ مرة واحدة وتُعدَّل فقط عبر أوامر تغيير هندسي محكومة (ECO). القاعدة الحاكمة: «إن كانت البيانات الأساسية خاطئة، فكل ما يليها خاطئ» — ولهذا تُلتقط نسخة مجمّدة (Frozen Snapshot) منها عند إطلاق أمر الإنتاج.
تلتزم هذه الطبقة بـ«تفويض العمومية» (Genericity Mandate): لا يُكتب أي سلوك خاص بمصنع واحد كمسار برمجي مستقل، بل يُعبَّر عنه بحقل/قيمة تعداد (config) ينحاز افتراضيًا للسلوك الشائع ثم يتفرّع منه. مصنع الميلامين مذكور كحالة اختبار إجهاد فقط — وليس قالبًا يُبرمَج عليه.
BOM والـRouting النشطين؛ أي تعديل لاحق لا يمسّ الأوامر المُطلَقة (حماية التكلفة التاريخية والتدقيق).status بانتقالات وشروط وآثار محددة، لا تغييرات عشوائية.BOM يدعم التداخل اللانهائي (منتج نهائي ← تجميعة فرعية ← مكوّن ← خام) عبر التكرار (recursion).Resource من نوع { Machine, Tool, Labor }؛ طاقة العملية محكومة بـأدنى مورد متاح.هوية تصنيع المنتج: ما المكوّنات وكمياتها لإنتاج وحدة واحدة. يجب أن يدعم التداخل متعدد المستويات. يتكوّن من رأس (BOM_Header) وأسطر (BOM_Line).
| الحقل | الوصف / القاعدة |
|---|---|
bom_id | المفتاح الأساسي |
parent_item_id | مفتاح خارجي ← الصنف (المنتج الأب) |
bom_type | تعداد { Production, Engineering, Phantom } |
version | تُحفظ عدة إصدارات للتاريخ |
base_quantity | عادة 1 — الوحدة التي تُعرَّف القائمة لكل واحدة منها |
uom | وحدة قياس الأب |
status | تعداد { Draft, Active, Inactive, Obsolete } |
effective_from / effective_to | نافذة الصلاحية |
created_by / approved_by | تدقيق الإنشاء والاعتماد |
| الحقل | الوصف / القاعدة |
|---|---|
bom_id | مفتاح خارجي ← رأس القائمة |
line_no | ترتيب السطر |
component_id | مفتاح خارجي ← الصنف (المكوّن) |
quantity | لكل base_quantity واحدة من الأب |
uom | وحدة قياس السطر |
scrap_percentage | الهدر المتوقع؛ يضرب الـMRP الكمية في (1 + scrap%) |
issue_type | تعداد { Manual, Backflush, AutoIssue } |
issue_level | تعداد { PerOrder, PerShift, PerOperation } |
operation_seq | أي عملية مسار تستهلك السطر — الرابط بين BOM والـRouting |
substitute_items | بدائل عند عدم توفّر الأساسي |
BOM (تجميعة فرعية / نصف مصنّع)، والـMRP يفكّكه تكراريًا.overhead) عبر علم أو حذف.Phantom في bom_type تمثّل تجميعة عابرة يُفكَّك من خلالها دون تخزينها — مذكورة دون تفصيل سلوكها هنا.مسار التصنيع: تسلسل العمليات ومن ينفّذ كلًا منها وكم تستغرق — يتيح الجدولة وحساب الزمن. يتكوّن من رأس (Routing_Header) وعمليات (Routing_Operation).
| الحقل | الوصف / القاعدة |
|---|---|
routing_id | المفتاح الأساسي |
item_id | مفتاح خارجي ← الصنف |
routing_type | تعداد { Production, Repair, Inspection } |
version | مُؤصَّل بالإصدار |
lot_size_from / lot_size_to | قد يكون للمنتج مسارات مختلفة حسب حجم الدفعة |
status | تعداد { Draft, Active, Inactive } |
effective_from / effective_to | نافذة الصلاحية |
total_lead_time | محسوب آليًا |
| الحقل | الوصف / القاعدة |
|---|---|
operation_no | تسلسل 10، 20، 30 — مضاعفات 10 للسماح بالإدراج (15، 25) دون إعادة ترقيم |
description | وصف العملية |
work_center_id | مفتاح خارجي ← مركز العمل |
tool_id | مفتاح خارجي ← الأداة (قابل لـ null) — الإسطمبة/القالب المطلوب |
setup_time | زمن إعداد ثابت مستقل عن حجم الدفعة |
run_time_per_unit | زمن التشغيل لكل وحدة |
cavity_count | وحدات لكل دورة — الافتراضي 1؛ أكبر من 1 لتعدد التجاويف |
cycle_time | زمن الدورة/الكبسة الواحدة — يُستخدم مع cavity_count |
queue_time | انتظار قبل البدء — يُضاف لزمن التوريد لا للتكلفة |
move_time | نقل للعملية التالية — زمن توريد لا تكلفة |
inspection_required | منطقي (هل تتطلب فحصًا) |
critical_operation | منطقي — لا يمكن تخطّيها |
required_skill_code | المهارة المطلوبة |
time_per_piece = cycle_time / cavity_count؛ والافتراضي cavity_count = 1 يعيدها للسلوك العادي للتصنيع المنفصل.queue_time وmove_time يؤثران في زمن التوريد لكن غالبًا لا يُحسبان في التكلفة.حيث يحدث العمل. هو الواجهة بين الإنتاج والمحاسبة — كل التكاليف تتدفّق من خلاله.
| الحقل | الوصف / القاعدة |
|---|---|
wc_id | المفتاح الأساسي |
description | وصف |
category | تعداد { Machine, Labor, SetupGroup } |
plant_location | الموقع داخل المصنع |
cost_center_id | مفتاح خارجي ← مركز التكلفة |
capacity_unit | تعداد { Hours, Pieces, Kg } |
daily_capacity | الطاقة اليومية لوحدة واحدة |
capacity_multiplier | عدد الآلات/العمال المتطابقين في المركز (تجميع طاقة) |
efficiency_percent | معامل الكفاءة |
utilization_percent | معامل الاستغلال |
calendar_id | الورديات والعطلات |
setup_cost_rate / labor_cost_rate / machine_cost_rate / overhead_rate | معدلات التكلفة (إعداد/عمالة/آلة/غير مباشر) |
labor_calc | تعداد { Hourly, PieceRate } |
bottleneck_flag | منطقي — اختناق |
معادلة الطاقة الفعّالة: effective_capacity = daily_capacity × capacity_multiplier × efficiency% × utilization% — ويستخدم الـCRP الطاقة الفعّالة لا الإجمالية.
في صناعات القولبة الإسطمبة هي قيد الطاقة لا الآلة. مُعمَّمة كـResource من نوع Tool. مصنع بلا قوالب ببساطة لا يملك موارد أدوات — فينهار التجريد بسلاسة.
| الحقل | الوصف / القاعدة |
|---|---|
tool_id | المفتاح الأساسي |
description | وصف |
product_id | المنتج الذي تصنعه — أو عدة منتجات |
cavity_count | قطع لكل دورة |
setup_time | التركيب/الفك — غالبًا كبير |
status | تعداد { Available, Mounted, Maintenance, Retired } |
life_cycles | الدورات المتوقعة قبل الاستبدال (إهلاك بالاستخدام) |
cycles_used | عدّاد جارٍ |
purchase_cost | للإهلاك لكل دورة |
available_start = MAX(earliest free time across all required resources).depreciation_per_piece = purchase_cost / life_cycles / cavity_count.يحدّد حقل labor_calc على مركز العمل (أو الصنف) طريقة حساب تكلفة العمالة المباشرة:
Hourly: cost = labor_hours × labor_ratePieceRate: cost = quantity × piece_rate (وقد يتغيّر معدل القطعة حسب المنتج/المقاس)الأثر: تحت PieceRate يتحمّل العامل البطيء تكلفته (يكسب أقل) لا المصنع — فلا يوجد «انحراف كفاءة عمالة» تقليدي، وينتقل الانحراف إلى الآلة/التكلفة غير المباشرة. يجب أن يدعم النظام كلا النمطين.
حالة قائمة المكوّنات BOM_Header.status:
حالة المسار Routing_Header.status:
حالة الأداة Tool.status (والمركّبة فقط تتآكل):
| الحقل | الموضع | القيم / الافتراضي |
|---|---|---|
bom_type | BOM_Header | Production / Engineering / Phantom |
scrap_percentage | BOM_Line | مضاعِف الـMRP (1+scrap%) |
issue_type | BOM_Line | Manual / Backflush / AutoIssue |
issue_level | BOM_Line | PerOrder / PerShift / PerOperation |
routing_type | Routing_Header | Production / Repair / Inspection |
cavity_count | Operation و Tool | عدد التجاويف؛ الافتراضي 1 |
capacity_multiplier | Work Center | تجميع الطاقة؛ الافتراضي 1 |
labor_calc | Work Center / item | Hourly / PieceRate |
resource_type | Resource | Machine / Tool / Labor |
| علم المستهلك الزهيد | BOM line / item | الحذف ← تكلفة غير مباشرة |
Production الحالية هيكل رفيع: جداول bill_of_materials وbom_components وbom_operations وproduction_centers تغطّي جزءًا فقط؛ المواصفة تتجاوزها بكثير وتتطلّب توسعة أو إعادة بناء وفق «وصفة الوحدات السريرية» (جداول مسبوقة، enums لكل آلة حالات، أحداث ومستمعون، Actions للاستدعاء عبر الوحدات).BOM الحالي: الإصدارات والصلاحية (effective_from/to، approved_by)، وbom_type، وissue_type/issue_level، وoperation_seq الرابط بين المكوّن والعملية، والبدائل، والتداخل متعدد المستويات (recursion).Routing: لا يوجد كيان مسار مستقل بإصدار وصلاحية ونوع، ولا حقول cavity_count/cycle_time/queue_time/move_time/critical_operation/required_skill_code — وهي مفصلية للقولبة والجدولة.life_cycles/cycles_used). مرشّح للتمثيل عبر resource_type أو ربطه بوحدة CMMS للأصول والصيانة.production_centers الحالي مبسّط (capacity_per_hour/cost_per_hour) ويفتقد capacity_multiplier، الكفاءة/الاستغلال، التقويم، فصل معدلات الإعداد/العمالة/الآلة، وlabor_calc، وbottleneck_flag — كلها مطلوبة للطاقة الفعّالة والتكلفة.Product/Unit)، مراكز التكلفة (Accounting)، الترقيم (SequenceService)، الاعتمادات (ApprovalWorkflowService — يحتاج توسعة تعداد لـECO)، والتقويم/المهارات من HRM؛ وكلها تتكامل عبر Actions لا إعادة بناء.BOM+Routing النشطَين كلقطة — نمط جديد على وحدة Production الحالية يجب إدخاله.