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

Modül

Calendars modülü (calendars)

Vardiyalar, çalışma süresi şablonları, sahipli çalışma takvimleri, istisnalar, tatil içe aktarma ve takvim sorgularıyla calendars modülü sayfası.

src/cluster_erp/modules/calendars/ içindeki calendars modülü çalışma süresini tutar. Vardiyaları, haftalık çalışma süresi şablonlarını ve bir taraf, bir iş merkezi veya şirket grubu gibi bir sahibin sahip olabileceği çalışma takvimlerini saklar. Bir takvimin bir saat dilimi, bir şablonu, devraldığı isteğe bağlı bir temel takvimi ve tatiller gibi tarih istisnaları vardır. Diğer modüller etkin çalışma günlerini ve pencerelerini EventBus üzerinden ondan okur; zaman matematiği çalışma süresi sayfasındadır.

Bir bakışta

Öğe Değer Kaynak
Paket src/cluster_erp/modules/calendars/ (düz modül: models.py, schemas.py, services.py, routes.py) klasör
Modül sınıfı Module src/cluster_erp/modules/calendars/module.py:16
name / version calendars / 0.1.0 src/cluster_erp/modules/calendars/module.py:18-23
API öneki /api/v1/calendars (ModuleBase.api_prefix) src/cluster_erp/core/module_base.py:37-38
Alt modüller yok; tek paket klasör listesi
Tablolar 6: calendars_shifts, calendars_templates, calendars_template_lines, calendars_working_calendars, calendars_exceptions, calendars_exception_shifts models.py içindeki __tablename__
Metadata'daki varlıklar 0; entities boştur src/cluster_erp/modules/calendars/module.py:223
Uçlar 23 uç dekoratörü routes.py içinde @router. için grep
Aksiyonlar 0 ActionMeta girdisi pakette grep "ActionMeta("
Göçler 7 dosya metni altı tablo adından birini içeren migrations/versions/ dosyaları
Web uygulamasında yeri Katalog uygulaması calendars; kapılı bir paketten global_calendar ve working_calendar özel bileşenleri; working_calendar bileşeni taraf ve iş merkezi kartlarında bir sekmedir src/cluster_erp/modules/app_store/catalog.json (calendars girdisi), gated_apps/calendars/app.js:1018, src/cluster_erp/modules/production/module.py:1366
Masaüstünde yeri src/cluster_erp/desktop/modules/calendars/ (global_calendar_view.py) klasör

Modül ne yapar

  • Adlandırılmış vardiyaları ve gün başına aralıklardan oluşan haftalık şablonları tutar; gün başına birden çok satır bölünmüş vardiyadır, başlangıçta veya öncesinde biten bir aralık gece yarısını geçer (src/cluster_erp/modules/calendars/models.py:1-14).
  • Saat dilimi, şablon, isteğe bağlı temel takvim ve isteğe bağlı sahibiyle çalışma takvimlerini tutar (src/cluster_erp/modules/calendars/models.py:119-180).
  • Tek seferlik, yıllık veya haftalık tekrarlı; açık, kapalı veya devral denetimli ve isteğe bağlı özel saatli tarih istisnalarını tutar (src/cluster_erp/modules/calendars/models.py:183-233).
  • Bir ülkenin resmi tatillerini holidays kütüphanesiyle bir takvime aktarır (src/cluster_erp/modules/calendars/services.py:455-516).
  • Sahip çalışma günleri, etkin takvimler ve gün pencereleri sorgularını yanıtlar (src/cluster_erp/modules/calendars/module.py:51-63).

Alt modüller

Alt modül Amaç Ana varlıklar Yönlendirici Kaynak
(paket kökü) Vardiyalar, şablonlar, takvimler, istisnalar Shift, WorkingTimeTemplate, WorkingTimeTemplateLine, WorkingCalendar, WorkingCalendarException, WorkingCalendarExceptionShift /shifts, /templates, /calendars, /exceptions, /group, /holiday-countries src/cluster_erp/modules/calendars/routes.py:44

Yönlendirici modül önekinin altına require_app("calendars") ile bağlanır (src/cluster_erp/modules/calendars/module.py:33-41).

Veri modeli

Varlık Tablo Anahtar alanlar Notlar Kaynak
Shift calendars_shifts code, name, description code canlı satırlar arasında benzersiz src/cluster_erp/modules/calendars/models.py:40-61
WorkingTimeTemplate calendars_templates code, name, description code canlı satırlar arasında benzersiz src/cluster_erp/modules/calendars/models.py:63-88
WorkingTimeTemplateLine calendars_template_lines template_id, day_of_week, shift_id, start_time, end_time src/cluster_erp/modules/calendars/models.py:91-116
WorkingCalendar calendars_working_calendars code, name, timezone, template_id, base_calendar_id, owner_type, owner_id code canlı satırlar arasında benzersiz src/cluster_erp/modules/calendars/models.py:119-180
WorkingCalendarException calendars_exceptions calendar_id, recurrence, control, date, day_of_week, note src/cluster_erp/modules/calendars/models.py:183-213
WorkingCalendarExceptionShift calendars_exception_shifts exception_id, start_time, end_time src/cluster_erp/modules/calendars/models.py:216-233

Sahip, hiçbir modül takvimlere bağımlı olmasın diye sahibin tablosunda değil takvimde saklanır (src/cluster_erp/modules/calendars/models.py:163-168). Şablon ve istisna saatleri takvimin saat dilimindeki duvar saatidir (src/cluster_erp/modules/calendars/models.py:141-148).

Ekranlar ve metadata

get_metadata, tek özel bölümü Global Takvim (global_calendar) olan bir Takvimler (İngilizce Calendars) kenar çubuğu grubu bildirir (src/cluster_erp/modules/calendars/module.py:204-219). Web bileşeni önizleme ucundan her çalışma takvimini tek bir ay ızgarasına bindirir (gated_apps/calendars/app.js:1-6). Bkz. kapılı uygulama paketleri ve masaüstü modül ekranları.

Durumlar ve aksiyonlar

Takvimlerin durumu ve ActionMeta girdisi yoktur. Kayıtlar Yetkiler bölümünde listelenen uçlarla değiştirilir.

İş kuralları

  • Şirket grup takvimi ("group", nil id) sahipli tekil bir takvimdir; GET /group yoksa onu oluşturur. Kuruluşlar grup tatillerini devralmak için onu temel olarak kullanır (src/cluster_erp/modules/calendars/routes.py:74-94, src/cluster_erp/modules/calendars/services.py:224-312).
  • POST /calendars/for-owner bir sahibin takvimini getirir veya oluşturur. inherit_from ile yeni takvim üst takvimin şablonunu ve saat dilimini kopyalar ve onu temel yapar; aksi halde kendi Pazartesi-Cuma 08:00-17:00 şablonunu alır (src/cluster_erp/modules/calendars/services.py:224-312).
  • Bir temel takvim zinciri döngü oluşturamaz (src/cluster_erp/modules/calendars/services.py:363-386).
  • Bir istisnanın tekrarı ve denetimi motor numaralandırmalarına göre doğrulanır (src/cluster_erp/modules/calendars/schemas.py:192-205, src/cluster_erp/modules/calendars/services.py:631-646).
  • GET /calendars/{calendar_id}/preview, vardiyalar, istisnalar ve tatiller uygulanmış çözülmüş günleri döndürür (src/cluster_erp/modules/calendars/routes.py:296-335, src/cluster_erp/modules/calendars/services.py:439-454).
  • Etkin saatleri etkileyen değişiklikler, etkilenen her takvim için sahibiyle birlikte WorkingCalendarChanged yayar (src/cluster_erp/modules/calendars/routes.py:47-66).

Olaylar ve sorgular

Modül 4 sözleşme tüketir ve 1 sözleşme üretir; sayım parties modülü sayfasındaki gibi yapıldı. Tam liste sözleşmeler başvurusu sayfasındadır.

Yön Sözleşme sınıfı İşleyici veya yayan Kaynak
yayar WorkingCalendarChanged uçlardaki _announce src/cluster_erp/modules/calendars/routes.py:47-66
sorguyu yanıtlar GetOwnerWorkingDays _handle_owner_working_days: aday zincirinde takvimi olan ilk sahibin açık günleri src/cluster_erp/modules/calendars/module.py:60-98
sorguyu yanıtlar GetEffectiveWorkingCalendar, GetEffectiveWorkingCalendars _resolve_chain ile _handle_effective_calendar(s): takvimi olan ilk sahibin saat dilimi, haftalık vardiyaları ve takvim kimliği src/cluster_erp/modules/calendars/module.py:52-59, src/cluster_erp/modules/calendars/module.py:99-158
sorguyu yanıtlar GetCalendarWindows _handle_get_windows: bir takvimin bir tarih aralığındaki çözülmüş gün pencereleri src/cluster_erp/modules/calendars/module.py:51, src/cluster_erp/modules/calendars/module.py:159-184

Tüketiciler arasında MRP teslim süreleri, çizelgeleme panosu, proje panosu ve satış siparişi teslim tarihi denetimi vardır; bkz. malzeme ihtiyaç planlaması, üretim çizelgeleme ve proje panosu.

Yetkiler

İzin anahtarı Kullanan Kaynak
work_calendar.read önizleme ve tatil ülkeleri dahil tüm okumalar src/cluster_erp/modules/calendars/routes.py:79-373
work_calendar.create vardiya, şablon, takvim, istisna oluşturma; tatil içe aktarma; for-owner src/cluster_erp/modules/calendars/routes.py:103-354
work_calendar.update, work_calendar.delete değiştirme ve silme src/cluster_erp/modules/calendars/routes.py:143-398

Gizlilik, saklama ve geçmiş

Modülün privacy_handlers.py dosyası yoktur. Silmeler deleted_at alanını doldurur (src/cluster_erp/modules/calendars/services.py:77-88). Değişiklikler değişiklik geçmişi tarafından kaydedilir.

Analitik olguları

Bu modülün analytics_facts.py dosyası yoktur.

Ayarlar ve başvuru verileri

Desteklenen tatil ülkeleri holidays kütüphanesinden gelir ve GET /holiday-countries ile listelenir (src/cluster_erp/modules/calendars/services.py:510-516, src/cluster_erp/modules/calendars/routes.py:95).

Testler

tests/ içinde modules.calendars için ve web-client/ içinde dosya adına ve /calendars/ yoluna göre grep ile bulundu.

Tür Dosya Kapsam
pytest tests/test_calendar_owner_inherits_group_live.py bir sahip takviminin grup takvimini devralması
e2e web-client/_e2e_calendars_app.mjs takvimler uygulaması
e2e web-client/_e2e_capacity_units.mjs, web-client/_e2e_production_app.mjs üretimin kullandığı takvimler
e2e web-client/_e2e_intranet.mjs, web-client/_e2e_intranet_selfservice.mjs intranetin kullandığı takvimler

Tutarsızlıklar

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
working calendar WorkingCalendar Saat dilimi, haftalık şablon, temel ve sahibi olan adlandırılmış takvim. Çalışma takvimi src/cluster_erp/modules/calendars/models.py:119
working-time template WorkingTimeTemplate Yeniden kullanılabilir haftalık çalışma aralıkları deseni. Çalışma süresi şablonu src/cluster_erp/modules/calendars/models.py:63
calendar exception WorkingCalendarException Bir takvimin haftalık çalışma düzenini geçersiz kılan ve kapsadığı günleri açan veya kapatan tarih kuralı. takvim istisnası src/cluster_erp/modules/calendars/models.py:183
base calendar base_calendar_id inherit bir günün istisnalarını devrettiği takvim. Temel takvim src/cluster_erp/modules/calendars/models.py:155-160
group calendar ("group", nil id) sahibi Kuruluşların devraldığı şirket çapında tekil takvim. Grup takvimi src/cluster_erp/modules/calendars/routes.py:74-76

İlgili sayfalar


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

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