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
holidayskü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 /groupyoksa 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-ownerbir sahibin takvimini getirir veya oluşturur.inherit_fromile 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
WorkingCalendarChangedyayar (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¶
- Modüller dizini
- Çalışma süresi
- Üretim çizelgeleme
- Malzeme ihtiyaç planlaması
- Bu modülün API başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.