src/cluster_erp/modules/nesting/ içindeki nesting modülü parçaların metal levhalardan nasıl kesileceğini planlar. Bir yerleşim işi levhayı ve parçaları tanımlar; iş harici bir yerleşim aracına dışa aktarılır ve aracın yerleşimi geri içe aktarılır, denetlenir ve saklanır. Modül ardından yerleşimi SVG veya DXF olarak çizer, malzemeyi maliyetlendirir, inventory modülü üzerinden levha stokunu ayırır ve tüketir, yeniden kullanılabilir artıkları kaydeder ve kullanım KPI'larını raporlar. Yerleşimin kendisi modül içinde hesaplanmaz; bkz. yerleşim motoru.
Bir bakışta¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Paket | src/cluster_erp/modules/nesting/ |
klasör |
| Modül sınıfı | Module |
src/cluster_erp/modules/nesting/module.py:15 |
name / version |
nesting / 0.1.0 |
src/cluster_erp/modules/nesting/module.py:16-22 |
| API öneki | /api/v1/nesting (ModuleBase.api_prefix) |
src/cluster_erp/core/module_base.py:37-38 |
| Alt modüller | 6 klasör: nesting_jobs, nesting_parts, nesting_remnants, integration, kpi, engine |
klasör listesi |
| Tablolar | 3: nesting_nesting_jobs, nesting_nesting_parts, nesting_nesting_remnants |
src/cluster_erp/modules/nesting/nesting_jobs/models.py:23, src/cluster_erp/modules/nesting/nesting_parts/models.py:14, src/cluster_erp/modules/nesting/nesting_remnants/models.py:15 |
| Metadata'daki varlıklar | 3: nesting_job, nesting_part, nesting_remnant |
src/cluster_erp/modules/nesting/module.py:212-216 |
| Uçlar | Pakette 27 uç dekoratörü | @router. için grep |
| Web uygulamasında yeri | Kapılı bir paketten gelen nesting_viewer özel bileşeniyle katalog uygulaması nesting |
src/cluster_erp/modules/app_store/catalog.json (nesting girdisi), gated_apps/nesting/app.js |
| Masaüstünde yeri | Yalnızca genel bileşenler; masaüstü özel görüntüleyici bölümünü atlar | src/cluster_erp/modules/nesting/module.py:178-187 |
Modül ne yapar¶
- Levha ölçüsü, kalınlık, malzeme kalitesi, kaplama, kesim payı, parça aralığı, kenar payı, izin verilen döndürmeler, aynalama, en çok levha sayısı ve isteğe bağlı bir levha malzemesi kırılımı ve depoyla bir yerleşim işi kaydeder (
src/cluster_erp/modules/nesting/nesting_jobs/models.py:22-291). - Yerleştirilecek parçaları elle veya üretim ve satış siparişlerinden çekerek listeler (
src/cluster_erp/modules/nesting/nesting_jobs/services.py:676-802). - Bir işi harici bir araç için dışa aktarır ve aracın yerleşimlerini, artıklarını ve parça dış hatlarını içe aktarır (
src/cluster_erp/modules/nesting/integration/services.py:114-363). - Yerleşimi SVG olarak çizer ve DXF olarak yazar (
src/cluster_erp/modules/nesting/nesting_jobs/routes.py:307-396). - Malzemeyi maliyetlendirir, artıkları alacak olarak düşer ve net maliyeti parçalara dağıtır (
src/cluster_erp/modules/nesting/nesting_jobs/services.py:555-675). - Bir işi onaylar, ayrılmış malzemeyi tüketir, artıkları oluşturur ve stoka kaydeder (
src/cluster_erp/modules/nesting/nesting_jobs/services.py:311-390). - Bir dönem için kullanım ve fire KPI'larını raporlar (
src/cluster_erp/modules/nesting/kpi/services.py:36-238).
Alt modüller¶
| Alt modül | Amaç | Ana varlıklar | Yönlendirici | Kaynak |
|---|---|---|---|---|
nesting_jobs |
İşler, yaşam döngüsü, malzeme, maliyetler, çizimler | NestingJob |
/api/v1/nesting/nesting-jobs |
src/cluster_erp/modules/nesting/nesting_jobs/routes.py:30 |
nesting_parts |
Bir işin parçaları | NestingPart |
/api/v1/nesting/nesting-parts |
src/cluster_erp/modules/nesting/nesting_parts/routes.py:25 |
nesting_remnants |
Yeniden kullanılabilir artanlar | NestingRemnant |
/api/v1/nesting/nesting-remnants |
src/cluster_erp/modules/nesting/nesting_remnants/routes.py:27 |
integration |
Harici bir araçla dışa ve içe aktarım | yok | nesting_jobs uçları tarafından kullanılır |
src/cluster_erp/modules/nesting/integration/services.py:109 |
kpi |
Kullanım KPI'ları | yok | /api/v1/nesting/nesting-jobs/kpi |
src/cluster_erp/modules/nesting/kpi/routes.py:13-16 |
engine |
Geometri türleri, dönüşümler, DXF ve SVG çıktısı | yok | yok | src/cluster_erp/modules/nesting/engine/ |
Ayrıntılar işler, parçalar ve artıklar, entegrasyon ve KPI ve yerleşim motoru sayfalarındadır.
Veri modeli¶
| Varlık | Tablo | Anahtar alanlar | Notlar | Kaynak |
|---|---|---|---|---|
NestingJob |
nesting_nesting_jobs |
code, name, status, levha ve süreç alanları, sheet_material_id üçlüsü, warehouse_id, result_source, external_software, layout_placements, remnants, kullanım ve alan alanları, maliyet alanları |
yerleşim ve artıklar JSON | src/cluster_erp/modules/nesting/nesting_jobs/models.py:22-291 |
NestingPart |
nesting_nesting_parts |
nesting_job_id, part_id, qty_requested, qty_placed, part_length_mm, part_width_mm, geometry_polygon, yerleşim alanları, source_order_id, allocated_material_cost |
iş ve parça başına bir canlı satır | src/cluster_erp/modules/nesting/nesting_parts/models.py:13-131 |
NestingRemnant |
nesting_nesting_remnants |
code, nesting_job_id, sheet_index, x, y, width, height, area_mm2, material_grade, thickness_mm, status, warehouse_id |
durum available olarak başlar |
src/cluster_erp/modules/nesting/nesting_remnants/models.py:14-98 |
Ekranlar ve metadata¶
get_metadata üç bölümlü bir Yerleşim & Optimizasyon (İngilizce Nesting & Optimization) kenar çubuğu grubu bildirir: yerleşim görüntüleyicisi (nesting_viewer özel bileşeni), Yerleşim İşleri ve Artıklar (src/cluster_erp/modules/nesting/module.py:162-217). Görüntüleyici KPI'ları, iş listesini, bir özeti, SVG çizimi ve indirmeleri gösterir; bileşeni olmayan bir istemci bölümü atlar (src/cluster_erp/modules/nesting/module.py:178-187).
Durumlar ve aksiyonlar¶
İş durumları queued, running, completed ve failed olur (src/cluster_erp/modules/nesting/nesting_jobs/schemas.py:10). Bir iş queued olarak başlar ve bir sonuç içe aktarıldığında completed olur (src/cluster_erp/modules/nesting/nesting_jobs/models.py:31-36, src/cluster_erp/modules/nesting/integration/services.py:322). "running" ve "failed" için yapılan grep bu commit'te bu durumlardan birini ayarlayan bir kod bulmaz. Artık durumları arasında available, reserved, consumed ve scrapped vardır (src/cluster_erp/modules/nesting/nesting_remnants/services.py:83, src/cluster_erp/modules/nesting/nesting_remnants/services.py:188-194, src/cluster_erp/modules/nesting/nesting_remnants/services.py:256-262).
| Aksiyon | Etiket | Koşul | Uç | İzin | Kaynak |
|---|---|---|---|---|---|
approve |
Onayla | status değeri completed |
POST /nesting-jobs/{id}/approve |
nesting_job.approve |
src/cluster_erp/modules/nesting/nesting_jobs/metadata.py:79-86, src/cluster_erp/modules/nesting/nesting_jobs/routes.py:213-224 |
pull_parts |
Siparişlerden Parça Çek | status değeri queued veya failed |
POST /nesting-jobs/{id}/pull-parts |
nesting_job.update |
src/cluster_erp/modules/nesting/nesting_jobs/metadata.py:87-94, src/cluster_erp/modules/nesting/nesting_jobs/routes.py:284-293 |
calculate_costs |
Maliyetleri Hesapla | status değeri completed |
POST /nesting-jobs/{id}/calculate-costs |
nesting_job.update |
src/cluster_erp/modules/nesting/nesting_jobs/metadata.py:95-105, src/cluster_erp/modules/nesting/nesting_jobs/routes.py:227-236 |
reserve_material |
Malzeme Rezerve Et | status değeri queued veya failed |
POST /nesting-jobs/{id}/reserve-material |
nesting_job.update |
src/cluster_erp/modules/nesting/nesting_jobs/metadata.py:106-116, src/cluster_erp/modules/nesting/nesting_jobs/routes.py:239-248 |
scrap (artık) |
Hurda Et | status değeri available veya reserved |
POST /nesting-remnants/{id}/scrap |
nesting_remnant.update |
src/cluster_erp/modules/nesting/nesting_remnants/metadata.py:41-54, src/cluster_erp/modules/nesting/nesting_remnants/routes.py:113-123 |
Yerleşim hattı¶
Şema bir işin oluşturulmasından onaylanmasına kadar olan yolunu gösterir.
flowchart TD A["iş oluşturma (queued)"] --> B["parça ekleme veya siparişlerden parça çekme"] B --> C["malzeme ayırma (isteğe bağlı, ReserveStock)"] C --> D["işi dışa aktarma"] D --> E["harici yerleşim aracı"] E --> F["import-result: yerleşimi denetleme ve saklama (completed)"] F --> G["svg ve dxf çizimleri"] F --> H["maliyet hesaplama (NestingCostCalculated)"] H --> I["onay (NestingApproved)"] I --> J["malzeme tüketimi (ConsumeReservation, PostGoodsIssue)"] I --> K["artık oluşturma ve stoka kaydetme (PostGoodsReceipt)"] I --> L["NestingScrapRecorded"]
Düz anlatımla: bir iş queued olarak oluşturulur ve parçalarla doldurulur (src/cluster_erp/modules/nesting/nesting_jobs/services.py:111-160). İş kuyruktayken levha stoku ayrılabilir (src/cluster_erp/modules/nesting/nesting_jobs/services.py:394-468). İş dışa aktarılır, harici bir araçla yerleştirilir ve sonuç içe aktarılır; içe aktarım yerleşimleri denetler ve işi completed olarak işaretler (src/cluster_erp/modules/nesting/integration/services.py:114-363). Tamamlanmış bir iş çizilebilir ve maliyetlendirilebilir (src/cluster_erp/modules/nesting/nesting_jobs/services.py:555-675). Onay kullanımı denetler, sonra ayrılmış malzemeyi tüketir, içe aktarılan artanlardan artıklar oluşturur, bunları stoka kaydeder ve fireyi kaydeder (src/cluster_erp/modules/nesting/nesting_jobs/services.py:311-390).
İş kuralları¶
- Bir işin levha malzemesi isteğe bağlıdır; verildiğinde modeli ve versiyonu doğrulanır (
src/cluster_erp/modules/nesting/nesting_jobs/services.py:116-122). - Bir iş yalnızca
queuedveyafaileddurumundayken düzenlenebilir ve silinebilir; tamamlanmış bir iş yalnızcalow_utilization_acknowledgedvenotesalanlarını kabul eder (src/cluster_erp/modules/nesting/nesting_jobs/services.py:187-199,src/cluster_erp/modules/nesting/nesting_jobs/services.py:228-232). - Kullanımı eşiğin altında olan bir işin onayı
low_utilization_acknowledgedister; eşik varsayılanı 60 olannesting_low_utilization_thresholdayarıdır (src/cluster_erp/modules/nesting/nesting_jobs/services.py:332-342,src/cluster_erp/modules/nesting/nesting_jobs/routes.py:221-222,src/cluster_erp/config/settings.py:418). - Malzeme ayırmak bir levha malzemesi kırılımı ve bir depo ister (
src/cluster_erp/modules/nesting/nesting_jobs/services.py:394-426). - Para sonuçları
ROUND_HALF_EVENile dört basamağa yuvarlanır (src/cluster_erp/modules/nesting/nesting_jobs/services.py:594-628). codedeğerinesting_jobvenesting_remnantyıllık dizilerinden gelir (src/cluster_erp/modules/nesting/nesting_jobs/services.py:123,src/cluster_erp/modules/nesting/nesting_remnants/services.py:135).
Olaylar ve sorgular¶
Modül 2 sözleşme tüketir ve 16 sözleşme üretir; sayım parties modülü sayfasındaki gibi yapıldı.
| Yön | Sözleşme sınıfı | İşleyici veya yayan | Kaynak |
|---|---|---|---|
| yayar | NestingCompleted |
içe aktarım | src/cluster_erp/modules/nesting/integration/services.py:350-361 |
| yayar | NestingApproved, NestingScrapRecorded |
onay | src/cluster_erp/modules/nesting/nesting_jobs/services.py:351-359, src/cluster_erp/modules/nesting/nesting_jobs/services.py:377-388 |
| yayar | NestingMaterialReserved, NestingMaterialConsumed |
ayırma, tüketim | src/cluster_erp/modules/nesting/nesting_jobs/services.py:458-466, src/cluster_erp/modules/nesting/nesting_jobs/services.py:544-552 |
| yayar | NestingCostCalculated |
maliyet hesaplama | src/cluster_erp/modules/nesting/nesting_jobs/services.py:661-669 |
| yayar | NestingRemnantCreated, NestingRemnantConsumed, NestingRemnantScrapped |
artık servisi | src/cluster_erp/modules/nesting/nesting_remnants/services.py:166-174, src/cluster_erp/modules/nesting/nesting_remnants/services.py:236-242, src/cluster_erp/modules/nesting/nesting_remnants/services.py:273 |
| sorgular | ReserveStock, ConsumeReservation, PostGoodsIssue, PostGoodsReceipt |
malzeme ve artık akışları | src/cluster_erp/modules/nesting/nesting_jobs/services.py:432-443, src/cluster_erp/modules/nesting/nesting_jobs/services.py:496-528, src/cluster_erp/modules/nesting/nesting_remnants/services.py:324-341 |
| sorgular | GetProductById, GetProductionOrderById, GetSalesOrderById |
parça çekme, maliyetler | src/cluster_erp/modules/nesting/nesting_jobs/services.py:572-576, src/cluster_erp/modules/nesting/nesting_jobs/services.py:709-714 |
| sorguyu yanıtlar | GetNestingJobById |
_handle_get_nesting_job |
src/cluster_erp/modules/nesting/module.py:61-64, src/cluster_erp/modules/nesting/module.py:70-109 |
| sorguyu yanıtlar | GetAvailableRemnants |
_handle_get_available_remnants |
src/cluster_erp/modules/nesting/module.py:65-68, src/cluster_erp/modules/nesting/module.py:111-140 |
GetNestingJobById, costing modülünün okuduğu net_material_cost dahil olmak üzere para ve alan değerlerini dizge olarak döndürür (src/cluster_erp/modules/nesting/module.py:82-108). Tam liste sözleşmeler başvurusu sayfasındadır.
Yetkiler¶
| İzin anahtarı | Kullanan | Kaynak |
|---|---|---|
nesting_job.read, .create, .update, .delete, .bulk_delete |
iş uçları, çizimler, dışa aktarım, özet, KPI | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:128-367, src/cluster_erp/modules/nesting/kpi/routes.py:22 |
nesting_job.approve |
onay | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:216 |
nesting_job.run |
sonuç içe aktarma | src/cluster_erp/modules/nesting/nesting_jobs/routes.py:271 |
nesting_part.read, .create, .update, .delete, .bulk_delete |
parça uçları | src/cluster_erp/modules/nesting/nesting_parts/routes.py:33-107 |
nesting_remnant.read, .update |
artık uçları ve hurdaya ayırma | src/cluster_erp/modules/nesting/nesting_remnants/routes.py:37-117 |
Gizlilik, saklama ve geçmiş¶
Modül kişisel veri saklamaz ve privacy_handlers.py dosyası yoktur. İşler geçici olarak silinir; bir işi silmek parçalarını ve artıklarını da geçici olarak siler (src/cluster_erp/modules/nesting/nesting_jobs/services.py:219-249, src/cluster_erp/modules/nesting/nesting_jobs/services.py:289-309). Değişiklikler değişiklik geçmişi tarafından kaydedilir.
Analitik olguları¶
Bu modülün analytics_facts.py dosyası yoktur. Kendi KPI servisi entegrasyon ve KPI sayfasında anlatılır.
Ayarlar ve başvuru verileri¶
Modül tek bir ayar okur: nesting_low_utilization_threshold (src/cluster_erp/config/settings.py:420). Ayarlar bölümü yoktur ve hiçbir şey tohumlamaz (src/cluster_erp/modules/nesting/module.py:28-30). Bkz. ayarlar başvurusu.
Testler¶
tests/ içinde modules.nesting için grep ile ve web-client/ içinde dosya adıyla bulundu.
| Tür | Dosya | Kapsam |
|---|---|---|
| pytest | tests/test_nesting_units.py |
geometri, ölçüm, DXF ve SVG çıktısı, KPI ve maliyet yardımcıları (12 test) |
| e2e | web-client/_e2e_nesting_app.mjs |
yerleşim uygulaması: KPI, iş listesi, özet, çizim, indirmeler, işler ve artıklar |
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| nesting job | NestingJob |
Bir parça kümesini tek bir malzeme ve kalınlıktaki levhalardan kesme planı. | Yerleşim işi | src/cluster_erp/modules/nesting/nesting_jobs/models.py:22 |
| remnant | NestingRemnant |
Yerleştirilmiş bir levhanın yeniden kullanılabilir artan dikdörtgeni. | Artık | src/cluster_erp/modules/nesting/nesting_remnants/models.py:14 |
| utilisation | utilization_pct |
Yerleştirilen parçaların kapladığı levha alanının yüzdesi. | Kullanım oranı | src/cluster_erp/modules/nesting/nesting_jobs/models.py:99 |
İlgili sayfalar¶
- Modüller dizini
- Yerleşim motoru
- İşler, parçalar ve artıklar
- Entegrasyon ve KPI
- Costing modülü
- Inventory modülü
- Bu modülün API başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.