Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / İş modülleri

Açıklama

Üretim çizelgeleme

Üretim çizelgeleme panosunun iş emirlerini okuması, iş merkezi takvimlerini çözmesi, çakışma ve kapasiteyi bulması ve iş emirlerini taşıması.

Çizelgeleme panosu src/cluster_erp/modules/production/scheduling/ içinde yer alır. İş emirlerini, her iş merkezinin etkin çalışma takvimine göre hesaplanmış olarak, zaman boyunca iş merkezi satırlarında çubuklar halinde gösterir; onları taşır, boyutlandırır veya otomatik çizelgeler. Web uygulaması (scheduling_board) ve masaüstü (scheduling_board.py) aynı veriyi çizer. İş emri alanları iş emirleri, takvim matematiği çalışma süresi sayfasındadır.

Kısaca

  • GET /api/v1/production/scheduling/board tek bir okuma modeli döndürür: vardiyaları ve tatilleriyle iş merkezleri, çizelgelenmiş çubuklar, çizelgelenmemiş havuz, çakışmalar, kapasite hücreleri ve bağımlılıklar (src/cluster_erp/modules/production/scheduling/routes.py:41-86, src/cluster_erp/modules/production/scheduling/services.py:170-313).
  • Her iş merkezinin takvimi şu sahip zinciriyle çözülür: iş merkezi, sonra kuruluşunun veya genel merkezin tarafı, sonra şirket grup takvimi (src/cluster_erp/modules/production/scheduling/services.py:72-94).
  • Bir iş emrinin bitişi her zaman süresinin çalışma saatlerine yayılmasından türetilir; çağıran bunu ayarlayamaz (src/cluster_erp/modules/production/scheduling/services.py:314-388).
  • Zaman matematiği, scheduling/calendar.py tarafından yeniden dışa aktarılan ortak core.working_time motorundan gelir (src/cluster_erp/modules/production/scheduling/calendar.py:1-30).

Nasıl çalışır

Diyagram bir pano okumasının veri yolunu gösterir.

flowchart TD
 R["tarih aralığı ve süzgeçlerle GET /scheduling/board"] --> WC["_load_work_centers"]
 WC --> SH["_load_shifts: iş merkezi başına calendar_candidates"]
 SH --> EC["tek sorguda GetEffectiveWorkingCalendars"]
 EC --> HO["_load_holidays: takvim başına GetCalendarWindows"]
 HO --> CA["_load_capabilities"]
 CA --> WO["_load_work_orders: çubuklar ve çizelgelenmemiş havuz"]
 WO --> OV["capacity_units ile _flag_overlaps"]
 OV --> CP["_compute_capacity: hücreler ve kullanım"]
 CP --> DP["_compute_dependencies: bitişten başlangıca"]
 DP --> RS["BoardResponse"]

Düz anlatımla:

  1. Uç date_from, date_to ve isteğe bağlı iş merkezi, üretim emri, proje ve scope süzgeçlerini alır; work_order.read ister (src/cluster_erp/modules/production/scheduling/routes.py:41-86).
  2. Servis iş merkezlerini yükler ve her birinin etkin takvimini sahip zincirleri üzerinden tek bir GetEffectiveWorkingCalendars sorgusuyla çözer (src/cluster_erp/modules/production/scheduling/services.py:891-946).
  3. Tarih başına tatiller ve istisnalar GetCalendarWindows ile gelir; etkin saat dilimi takvimden, kuruluştan veya GetCompanyDefaultTimezone üzerinden gelir (src/cluster_erp/modules/production/scheduling/services.py:780-874, src/cluster_erp/modules/production/scheduling/services.py:982-1016).
  4. Penceredeki iş emirleri çubuk olur; çizelgesi olmayan bekleyenler çizelgelenmemiş havuzu oluşturur (src/cluster_erp/modules/production/scheduling/services.py:1038-1204).
  5. Çakışmalar iş merkezi başına, capacity_units kadar paralel çubuğa izin verilerek işaretlenir; kapasite hücreleri ve aşırı kapasite günleri hesaplanır; bitişten başlangıca bağımlılıklar ve öncül ihlalleri eklenir (src/cluster_erp/modules/production/scheduling/services.py:1205-1384).

Yazmalar:

  • PUT /scheduling/work-orders/{work_order_id}/schedule, bekleyen bir iş emrini taşır, boyutlandırır, yeniden atar veya çizelgeden çıkarır. Kayıt sürümünü denetler, açık bir başlangıcı bir sonraki çalışma anına ileri kaydırır ve bitişi türetir (src/cluster_erp/modules/production/scheduling/routes.py:87-109, src/cluster_erp/modules/production/scheduling/services.py:314-388).
  • POST /scheduling/work-orders/{work_order_id}/auto-schedule, bir iş emrini öncüllerinden sonraki en yakın geçerli boş aralığa yerleştirir; aralık yoksa 422 verir (src/cluster_erp/modules/production/scheduling/routes.py:110-135, src/cluster_erp/modules/production/scheduling/services.py:389-426).
  • POST /scheduling/production-orders/{order_id}/auto-schedule, bir emrin bekleyen ve kilitsiz tüm iş emirlerini operasyon sırasıyla ileriye doğru çizelgeler (src/cluster_erp/modules/production/scheduling/routes.py:136-174, src/cluster_erp/modules/production/scheduling/services.py:427-496).
  • POST /scheduling/recompute, bayat çizelgelenmiş iş emirlerinin bitişlerini güncel takvim üzerinden yeniden türetir, başlangıçları korur ve bayatlık işaretlerini temizler (src/cluster_erp/modules/production/scheduling/routes.py:175-190, src/cluster_erp/modules/production/scheduling/services.py:605-657).

Neden böyle kurulmuştur

Kod yorumları üç gerekçe belirtir. Yalnızca bekleyen iş emirleri çizelgelenebilir, çünkü başlamış veya tamamlanmış olanlar gerçekleşen değerleriyle sabitlenmiştir (src/cluster_erp/modules/production/scheduling/services.py:321-323). Bitiş türetilir, çünkü bir işin süresi miktarının ve rotasının bir işlevidir (src/cluster_erp/modules/production/scheduling/services.py:363-368). Kuruluşun takvimi tarafına aittir, bu yüzden zincir tarafı sorar (src/cluster_erp/modules/production/scheduling/services.py:77-84). Başka gerekçe ne kodda ne de projenin yazılı mühendislik kurallarında belirtilmiştir.

Kurallar ve sınırlar

  • Yazmalar work_order.update ister (src/cluster_erp/modules/production/scheduling/routes.py:91-178).
  • Çalışan bağlantısı olmadan scope=mine boş bir pano verir (src/cluster_erp/modules/production/scheduling/services.py:182-187).
  • Bir çalışma takvimi değişikliği etkilenen çizelgelenmiş iş emirlerini WorkingCalendarChanged üzerinden bayat olarak işaretler (src/cluster_erp/modules/production/module.py:1119-1138).

Diğer parçalarla etkileşim

Sözleşme Yanıtlayan Amaç Kaynak
GetEffectiveWorkingCalendars, GetEffectiveWorkingCalendar calendars sahip zinciri başına etkin takvim src/cluster_erp/modules/production/scheduling/services.py:927, src/cluster_erp/modules/production/scheduling/services.py:836
GetCalendarWindows calendars tarih başına tatiller ve istisnalar src/cluster_erp/modules/production/scheduling/services.py:792, src/cluster_erp/modules/production/scheduling/services.py:1000
GetCompanyDefaultTimezone owned_organisations varsayılan saat dilimi src/cluster_erp/modules/production/scheduling/services.py:865, src/cluster_erp/modules/production/scheduling/services.py:976
GetOrganisationById owned_organisations kuruluşun tarafı src/cluster_erp/modules/production/scheduling/services.py:960
WorkingCalendarChanged calendars yayar bayatlık işaretleri src/cluster_erp/modules/production/module.py:183

Sözleşmeler başvurusu yanıtlayan modülleri listeler. Proje panosu çizelgelenmiş iş emirlerini GetProjectProductionSchedule ile okur; bkz. proje panosu.

Sınırlar ve açık noktalar

Koddan belirlenemedi: panonun çağrı başına döndürdüğü iş emri sayısına bir sınır; kod pencereyle çakışan tüm iş emirlerini okur (src/cluster_erp/modules/production/scheduling/services.py:1038-1204).

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
scheduling board SchedulingBoardService İş emirlerini zaman boyunca iş merkezi satırlarına yerleştiren okuma modeli ve yazma servisi. Çizelgeleme panosu src/cluster_erp/modules/production/scheduling/services.py:163
calendar owner chain calendar_candidates Takvimi bir iş merkezine uygulanan sıralı sahipler. Takvim sahip zinciri src/cluster_erp/modules/production/scheduling/services.py:72
unscheduled pool BoardUnscheduled Henüz çizelgelenmiş zamanı olmayan bekleyen iş emirleri. Çizelgelenmemiş havuz src/cluster_erp/modules/production/scheduling/schemas.py:90

İlgili sayfalar


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

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