Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Karar kayıtları

Açıklama

Ürün, model ve versiyon kırılımı

Cluster ERP'deki her ürün başvurusunun ürün, model ve versiyon taşıdığı ve yalnız ürüne sessizce geri düşmediği kuralın karar kaydı.

Durum: Kabul edildi; projenin yazılı mühendislik kurallarında belirtilir. Bu kayıt; bir belge satırının, stok satırının, ürün ağacının, rezervasyonun veya hareketin asla yalın bir ürünü adlandırmadığı, ürünü, modellerinden birini ve o modelin versiyonlarından birini adlandırdığı kuralı kapsar. Ortak yardımcılar src/cluster_erp/core/product_breakdown.py içindedir; stok tarafı ürün kırılımı ve stok dönüşümü sayfasında açıklanır.

Bağlam

Stok ürün versiyonu başına tutulur; bu yüzden yalnız ürüne yapılan başvuru belirsizdir. Projenin yazılı mühendislik kuralları üç düzeyli kırılımı tüm ERP'de zorunlu kılar ve "model veya versiyon yoksa ürünü kullan" biçiminde sessiz bir geri düşmeyi yasaklar. Yardımcı modül amacı belirtir: ERP "deterministic about what a product reference means" (src/cluster_erp/core/product_breakdown.py:1-9). Başka bir gerekçe koddan belirlenemez.

Karar

  • Bir satırda ürün varsa model ve versiyon da olmalıdır; ürün yoksa ikisi de olmaz (src/cluster_erp/core/product_breakdown.py:94-118).
  • Model ürüne, versiyon modele ait olmalıdır. Bu denetim products modülüne ihtiyaç duyduğundan EventBus üzerinden bir ValidateProductBreakdown sorgusudur (src/cluster_erp/core/product_breakdown.py:120-147, src/cluster_erp/core/contracts.py:218-226).
  • Formlar bağımlı bir seçici sunar: model listesi seçilen ürüne, versiyon listesi seçilen modele göre süzülür (src/cluster_erp/core/product_breakdown.py:31-83).

Sıra şeması bir belge satırındaki denetimi gösterir.

sequenceDiagram
 participant Svc as Modül servisi
 participant Core as ensure_product_breakdown
 participant Bus as EventBus
 participant PS as products_and_services
 Svc->>Core: product_id, product_model_id, product_version_id
 Core->>Core: hepsi boş mu, ya da üçü de var mı?
 Core->>Bus: ValidateProductBreakdown sorgusu
 Bus->>PS: _handle_validate_breakdown
 PS-->>Core: ok veya bir hata kodu
 Core-->>Svc: dön veya AppError 422 fırlat

Düzyazıyla: servis ensure_product_breakdown çağırır. Ürünsüz bir model veya versiyon ya da ikisi birden olmayan bir ürün hemen HTTP 422 ile AppError fırlatır. Aksi halde yardımcı sorguyu gönderir; products modülü ok ya da PRODUCT_MODEL_PRODUCT_MISMATCH veya PRODUCT_VERSION_MODEL_MISMATCH ile yanıt verir ve bir uyuşmazlık 422 fırlatır (src/cluster_erp/core/product_breakdown.py:103-147, src/cluster_erp/modules/products_and_services/module.py:131).

Sonuçlar

  • Stok düzeyleri, mal hareketleri, kullanım kararları, rezervasyonlar ve proje stok ödünçleri product_model_id ve product_version_id alanlarını boş olamaz sütunlar olarak bildirir (src/cluster_erp/modules/inventory/stock/models.py:54-63, src/cluster_erp/modules/inventory/stock/models.py:144-153, src/cluster_erp/modules/inventory/stock/models.py:289-297, src/cluster_erp/modules/inventory/stock/models.py:355-364, src/cluster_erp/modules/inventory/stock/models.py:445-453).
  • Stok düzeylerinin canlı satır benzersiz indeksi modeli ve versiyonu içerir (src/cluster_erp/modules/inventory/stock/models.py:28-46).
  • src/cluster_erp/modules altında 23 dosyadaki 49 servis çağrısı denetimi ürün ağacı, envanter, satın alma, üretim, projeler, teklifler, satış siparişleri, yerleşim ve filo genelinde çalıştırır (grep -rn "ensure_product_breakdown(" ile sayıldı).
  • MRP gibi bir kişinin seçim yapmadığı belge oluşturan akışlar, ürünün varsayılan modelini ve versiyonunu GetProductDefaultBreakdown ile ister ve açıkça kaydeder (src/cluster_erp/core/contracts.py:229-235). Varsayılan belgeye yazılır; okuma anında sessiz bir geri düşme değildir.

Kodun uyguladığı yerler

Mekanizma Neyi denetler Kaynak
ensure_product_breakdown Her yazmada üç kimliğin varlığı ve tutarlılığı src/cluster_erp/core/product_breakdown.py:86-147
Boş olamaz kırılım sütunları Stok satırları model ve versiyon olmadan saklanamaz src/cluster_erp/modules/inventory/stock/models.py:54-63
_e2e_product_model_versions.mjs Ürün formu, model kartı ve versiyon listesi tarayıcıda zinciri izler web-client/_e2e_product_model_versions.mjs:1-4

Koddan belirlenemedi: ensure_product_breakdown işlevini doğrudan çağıran bir pytest testi. tests/ içinde bulunmadı (product_breakdown arandı).

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13