Ç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/boardtek 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.pytarafından yeniden dışa aktarılan ortakcore.working_timemotorundan 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:
- Uç
date_from,date_tove isteğe bağlı iş merkezi, üretim emri, proje vescopesüzgeçlerini alır;work_order.readister (src/cluster_erp/modules/production/scheduling/routes.py:41-86). - Servis iş merkezlerini yükler ve her birinin etkin takvimini sahip zincirleri üzerinden tek bir
GetEffectiveWorkingCalendarssorgusuyla çözer (src/cluster_erp/modules/production/scheduling/services.py:891-946). - Tarih başına tatiller ve istisnalar
GetCalendarWindowsile gelir; etkin saat dilimi takvimden, kuruluştan veyaGetCompanyDefaultTimezoneüzerinden gelir (src/cluster_erp/modules/production/scheduling/services.py:780-874,src/cluster_erp/modules/production/scheduling/services.py:982-1016). - Penceredeki iş emirleri çubuk olur; çizelgesi olmayan bekleyenler çizelgelenmemiş havuzu oluşturur (
src/cluster_erp/modules/production/scheduling/services.py:1038-1204). - Çakışmalar iş merkezi başına,
capacity_unitskadar 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.updateister (src/cluster_erp/modules/production/scheduling/routes.py:91-178). - Çalışan bağlantısı olmadan
scope=mineboş 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ı.