Bu sayfa src/cluster_erp/modules/production/ içinde bir ürünün nasıl yapıldığını tanımlayan alt modülleri anlatır: routings/ (routings/scaffold.py içindeki iskeletle), operation_types/, routing_templates/ (kesim teknolojisi kurallarıyla) ve component_allocations/. Bir rota (Routing), bir ürün kırılımının operasyon dizisidir. Bileşen atamaları ürün ağacı kalemlerini ve diğer girdileri operasyonlara bağlar; birlikte operasyon ürün ağacını (eBOM) oluştururlar. Ürün ağacı tarafı BOM modülü sayfasındadır.
Kapsam ve kaynak¶
- Tanımlandığı yer: dört alt modülün
models.py,schemas.py,services.pyveroutes.pydosyaları,routings/scaffold.py(RoutingScaffolder) verouting_templates/metadata.py. - Sayım: 9 tablo; 28 rota ucu, 8 operasyon tipi ucu, 16 rota şablonu ve kural ucu ve 6 atama ucu (
@router.ve@rules_router.dekoratörleri).
Rota alanları¶
| Varlık | Tablo | Anahtar alanlar | Kaynak |
|---|---|---|---|
Routing |
production_routings |
product_id, product_model_id, product_version_id, code, name, status (varsayılan draft), valid_from, scaffold_bom_version_id, is_stale |
src/cluster_erp/modules/production/routings/models.py:15-68 |
RoutingOperation |
production_routing_operations |
operation_no, work_center_id, operation_type_code, description, setup_time_min, run_time_per_unit_min, scrap_pct, output_description, model ve versiyonuyla output_product_id, source, source_fields |
src/cluster_erp/modules/production/routings/models.py:71-140 |
PrepOperation |
production_prep_operations |
routing_id, bom_item_id, seq, operation_type_code, work_center_id, setup_time_min, run_time_per_unit_min, note, source |
src/cluster_erp/modules/production/routings/models.py:143-202 |
ComponentAllocation |
production_component_allocations |
routing_operation_id, input_kind (bom_item, operation_output veya product), bom_item_id, bom_version_id, source_operation_id, ürün kırılımı, qty |
src/cluster_erp/modules/production/component_allocations/models.py:14-117 |
OperationType |
production_operation_types |
code, name, numeric_code, op_group, has_material_io, default_setup_min, translations, is_active |
src/cluster_erp/modules/production/operation_types/models.py:13-57 |
RoutingTemplate, RoutingTemplateOp |
production_routing_templates, production_routing_template_ops |
code, name, product_category_id, material_type; seq, operation_type_code ve varsayılan sürelerle operasyonlar |
src/cluster_erp/modules/production/routing_templates/models.py:20-104 |
CutTechnologyRule |
production_cut_technology_rules |
material_type, stock_form (length veya sheet), operation_type_code |
src/cluster_erp/modules/production/routing_templates/models.py:107-146, src/cluster_erp/modules/production/routing_templates/schemas.py:104 |
Rota durumları¶
Bir rota draft durumundan active durumuna, oradan obsolete durumuna geçer (src/cluster_erp/modules/production/routings/services.py:44-48). Engeller kaldıkça etkinleştirme reddedilir: iş merkezi olmayan, operasyon tipi olmayan veya birim başına çalışma süresi sıfır olan bir operasyon ya da operasyon tipi olmayan bir hazırlık operasyonu (src/cluster_erp/modules/production/routings/services.py:541-599, src/cluster_erp/modules/production/routings/services.py:610-649). GET /routings/{routing_id}/readiness bu engelleri döndürür (src/cluster_erp/modules/production/routings/routes.py:319). Yeni bir ürün ağacı versiyonu etkin olduğunda aynı kırılımın canlı rotaları bayat olarak işaretlenir (src/cluster_erp/modules/production/module.py:195-224).
eBOM iskeleti¶
İskelet bir rotayı bir ürün kırılımının ürün ağacından türetir. Diyagram plan ve uygulama yolunu gösterir.
flowchart TD P["ürün, model, versiyon ile POST /routings/scaffold-plan"] --> T["load_tree: GetBomScaffoldTree"] T --> F["flatten_inputs: hayalet çocukları yukarı alınır, miktar çarpılır"] F --> J["malzeme girdili son birleştirme operasyonu"] F --> C["make_from_stock kalemleri için kesim hazırlığı"] J --> TP["resolve_template: kategori ve malzeme tipine göre RoutingTemplate"] C --> CR["cut_rules: malzeme ve stok biçimine göre CutTechnologyRule"] TP --> WC["iş merkezi yetkinliklerinden wc_candidates"] CR --> WC WC --> Q["sorular ve plan_hash ile plan"] Q --> A["yanıtlarla POST /routings/scaffold-apply"] A --> H["güncel ürün ağacından yeniden hesaplanan plan_hash"] H --> M["Routing, RoutingOperation, PrepOperation, ComponentAllocation satırları"] M --> I["operasyon çıktıları için CreateScaffoldIntermediate"]
Düz anlatımla: scaffold-plan tam ürün kırılımı isteyen bir deneme çalıştırmasıdır (src/cluster_erp/modules/production/routings/routes.py:155-206). İskeletçi ürün ağacını GetBomScaffoldTree ile okur (src/cluster_erp/modules/production/routings/scaffold.py:177-217). Hayalet olmayan kalemler tek bir son birleştirme operasyonunun malzeme girdileri olur; hayalet kalemler asla girdi olmaz, çocukları hayaletin miktarıyla çarpılarak yukarı alınır (src/cluster_erp/modules/production/routings/scaffold.py:8-12, src/cluster_erp/modules/production/routings/scaffold.py:247-335). Boy stoklu ve kesim boylu stoktan işlenen bir kalem zorunlu bir kesim hazırlık adımı alır; levha stoğu 2B kesim adayı alır (src/cluster_erp/modules/production/routings/scaffold.py:13-15, src/cluster_erp/modules/production/routings/scaffold.py:336-348). Ürünün kategori ve malzeme tipine uyan bir rota şablonu operasyon dizisini sağlar; eşit özgüllükte iki şablon reddedilir (src/cluster_erp/modules/production/routings/scaffold.py:22-28, src/cluster_erp/modules/production/routings/scaffold.py:470-540). Bir kesim teknolojisi kuralı kesim sorusunu yanıtlar (src/cluster_erp/modules/production/routings/scaffold.py:29-31, src/cluster_erp/modules/production/routings/scaffold.py:589-622). İş merkezleri yalnızca bildirilmiş yetkinliklerden gelir (src/cluster_erp/modules/production/routings/scaffold.py:16-21, src/cluster_erp/modules/production/routings/scaffold.py:388-469). Süreç operasyonları bir şablon bildirmedikçe asla otomatik oluşturulmaz (src/cluster_erp/modules/production/routings/scaffold.py:22-24). Plan, kırılım, ürün ağacı versiyonu ve kalem miktarları üzerinden bir plan_hash taşır (src/cluster_erp/modules/production/routings/scaffold.py:41-43, src/cluster_erp/modules/production/routings/scaffold.py:218-246).
scaffold-apply planı tek bir işlemde yazar. Değişmiş bir ürün ağacı 409, eksik bir zorunlu yanıt 422, kırılımda mevcut canlı bir rota 409 verir (src/cluster_erp/modules/production/routings/routes.py:207-262, src/cluster_erp/modules/production/routings/scaffold.py:1038-1354). Bir operasyonun çıktısı varsa iskeletçi products_and_services modülünden CreateScaffoldIntermediate ile bir ara ürün oluşturmasını veya yeniden kullanmasını ister (src/cluster_erp/modules/production/routings/scaffold.py:2234). Ağaç kipi alt montajları hep ya da hiç ilkesiyle planlar ve uygular (src/cluster_erp/modules/production/routings/scaffold.py:962-1037, src/cluster_erp/modules/production/routings/scaffold.py:1355-1425). copy-to bir rotayı başka bir kırılıma derin kopyalar ve atamaları hedefin etkin ürün ağacına yeniden bağlar; eşleşmeyen satırlar raporlanır (src/cluster_erp/modules/production/routings/scaffold.py:35-39, src/cluster_erp/modules/production/routings/scaffold.py:2077-2460).
Uçlar¶
| Yöntem ve yol | İzin | Kaynak |
|---|---|---|
GET, POST /routings/; GET, PUT, DELETE /routings/{routing_id}; POST /routings/bulk-delete; POST /routings/{routing_id}/status |
routing.read, .create, .update, .delete, .bulk_delete |
src/cluster_erp/modules/production/routings/routes.py:46-398 |
POST /routings/scaffold-from-bom, /scaffold-tree-from-bom, /scaffold-plan, /scaffold-apply, /{routing_id}/copy-to |
routing.create |
src/cluster_erp/modules/production/routings/routes.py:86-263 |
GET /routings/for-product/{product_id}, /{routing_id}/readiness, /{routing_id}/full |
routing.read |
src/cluster_erp/modules/production/routings/routes.py:298-333 |
/routings altındaki operasyonlar, operasyon girdileri ve hazırlık operasyonları |
routing.read, routing.update |
src/cluster_erp/modules/production/routings/routes.py:415-672 |
POST /operation-types/seed-defaults dahil /operation-types uçları |
routing.* |
src/cluster_erp/modules/production/operation_types/routes.py:26-121 |
/routing-templates, şablon operasyonları ve kesim teknolojisi kuralları |
routing_template.*, routing_template_op.*, cut_technology_rule.* |
src/cluster_erp/modules/production/routing_templates/routes.py:42-261 |
| Bileşen atamaları | routing.read, routing.update, routing.bulk_delete |
src/cluster_erp/modules/production/component_allocations/routes.py:29-114 |
Kısıtlar ve doğrulama¶
- Bir bileşen ataması canlı satırlar arasında ürün ağacı kalemi ve operasyon başına, operasyon ve kaynak operasyon başına ve operasyon ve ürün başına benzersizdir (
src/cluster_erp/modules/production/component_allocations/models.py:27-56). bommodülü patlatmasında operasyon tipini ve iş merkezini doldurmak için atamalarıGetComponentAllocationsile okur (src/cluster_erp/modules/production/module.py:145-147).
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| routing | Routing |
Bir ürün kırılımını yapan operasyon dizisi. | Rota | src/cluster_erp/modules/production/routings/models.py:15 |
| prep operation | PrepOperation |
Bir ürün ağacı kalemi için kesim gibi bir hazırlık adımı. | Hazırlık operasyonu | src/cluster_erp/modules/production/routings/models.py:143 |
| component allocation | ComponentAllocation |
Hangi operasyonun hangi kalemi, çıktıyı veya ürünü tükettiğini söyleyen girdi bağı. | Bileşen ataması | src/cluster_erp/modules/production/component_allocations/models.py:14 |
| routing scaffold | RoutingScaffolder |
Bir rotayı ürün ağacından türeten ve eksik bilgileri soran sihirbaz. | Rota iskeleti | src/cluster_erp/modules/production/routings/scaffold.py:167 |
| cut technology rule | CutTechnologyRule |
Malzeme tipini ve stok biçimini bir kesim operasyon tipine eşleyen kural. | Kesim teknolojisi kuralı | src/cluster_erp/modules/production/routing_templates/models.py:107 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.