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

Modül

Records modülü (records)

Devre dışı bırakma nedeni kataloğu, genel yeniden etkinleştirme ve pasif listeler, saklama süresi ve temizlikle kayıt yaşam döngüsünü yöneten records modülü sayfası.

src/cluster_erp/modules/records/ içindeki records modülü, hiçbir şeyin doğrudan silinmediği kuralı altında kayıtların yaşam döngüsünü yönetir. Devre dışı bırakma nedenleri kataloğunu tutar, herhangi bir varlığın devre dışı kayıtlarını listelemek ve onları yeniden etkinleştirmek için genel uçlar sunar ve günlük temizliğin devre dışı satırları kalıcı olarak kaldırmasından önceki saklama süresini tutar (src/cluster_erp/modules/records/module.py:15-22). Devre dışı bırakma mekanizmasının kendisi yumuşak silme ve devre dışı bırakma sayfasında anlatılır.

Bir bakışta

Öğe Değer Kaynak
Paket src/cluster_erp/modules/records/ klasör
Modül sınıfı Module src/cluster_erp/modules/records/module.py:15
name / version records / 0.1.0 src/cluster_erp/modules/records/module.py:24-30
API öneki /api/v1/records (ModuleBase.api_prefix) src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/records/module.py:39-52
Alt modüller 2: deactivation_reasons, retention; ayrıca lifecycle_routes.py ve resolver.py klasör listesi
Tablolar 3: core_deactivation_reasons, core_retention_config, core_retention_runs iki models.py dosyasındaki __tablename__
Metadata'daki varlıklar entities içinde 1 anahtar src/cluster_erp/modules/records/module.py:73-75
Uçlar Pakette 10 uç dekoratörü @...router.get/post/put/patch/delete için grep
Aksiyonlar 0 ActionMeta girdisi pakette grep "ActionMeta("
Göçler 7 dosya metni üç tablo adından birini içeren migrations/versions/ dosyaları
Sözleşmeler 0 tüketir, 1 üretir "Olaylar ve sorgular" bölümüne bakın
Web uygulamasında varlık Kenar çubuğu bölümü yok; web Ayarlar ekranından sunulur src/cluster_erp/modules/records/module.py:21-22, src/cluster_erp/modules/records/module.py:72
Masaüstünde varlık yalnızca genel bileşenler src/cluster_erp/desktop/modules/ içinde records klasörü yok

Modül ne yapar

  • Bir kayıt kullanımdan kaldırılırken yöneticinin seçebileceği devre dışı bırakma nedenlerini tutar (src/cluster_erp/modules/records/deactivation_reasons/models.py:9-32).
  • Devre dışı bırakılabilir herhangi bir varlığın devre dışı kayıtlarını listeler, pasif olabilecek kayıtların etiketlerini çözer ve bir kaydı yeniden etkinleştirir (src/cluster_erp/modules/records/lifecycle_routes.py:1-10).
  • Yıl olarak saklama süresini ve her saklama geçişinin kanıt satırlarını tutar (src/cluster_erp/modules/records/retention/models.py:14-49).
  • Süreden eski devre dışı satırları ve değişiklik geçmişini fiziksel olarak silen purge_expired işlevini sağlar (src/cluster_erp/modules/records/retention/purge.py:1-7).

Alt modüller

Alt modül Amaç Ana varlıklar Yönlendirici Kaynak
deactivation_reasons Neden kataloğu DeactivationReason /deactivation-reasons src/cluster_erp/modules/records/deactivation_reasons/routes.py:21
retention Saklama süresi, kanıt satırları, temizlik RetentionConfig, RetentionRun /retention src/cluster_erp/modules/records/retention/routes.py:14
lifecycle_routes.py Pasif listeler, etiketler, yeniden etkinleştirme devre dışı bırakılabilir her varlık /{module}/{entity}/... src/cluster_erp/modules/records/lifecycle_routes.py:32

Veri modeli

Varlık Tablo Ana alanlar Notlar Kaynak
DeactivationReason core_deactivation_reasons code, label_en, label_tr, requires_note, sort_order, is_active code canlı satırlar arasında benzersiz; devre dışı kayıtlar deactivation_reason sütunlarıyla buna işaret eder src/cluster_erp/modules/records/deactivation_reasons/models.py:9-32
RetentionConfig core_retention_config retention_years tek satır, varsayılan 10 src/cluster_erp/modules/records/retention/models.py:19-30
RetentionRun core_retention_runs id (tamsayı), ran_at, kind, summary veri kaldıran her geçişin kanıtı; denetim veya yumuşak silme sütunları olmayan düz Base src/cluster_erp/modules/records/retention/models.py:33-49

Kayıt yaşam döngüsü

flowchart TD
 L["canlı kayıt"] -->|nedenli DELETE| D["deleted_at, deleted_by, deactivation_reason doldurulur"]
 R["DeactivationReason kataloğu"] --> D
 D --> H["core_change_history satırı"]
 D --> P["GET /records/module/entity/inactive"]
 P -->|POST .../record_id/activate| L
 D -->|retention_years süresinden eski| X["purge_expired: fiziksel silme"]
 X --> E["RetentionRun kanıt satırı"]

Düz anlatımla:

  1. Herhangi bir modülün silme ucu deleted_at alanını doldurur. Merkezi değişiklik geçmişi kancası deleted_by alanını ve istek bağlamındaki nedeni yazar; böylece hiçbir modül nedeni kendisi taşımaz (src/cluster_erp/core/change_history.py:245-259). Değişiklik, değişiklik geçmişine yazılır; bkz. değişiklik geçmişi.
  2. GET /records/{module}/{entity}/inactive, {entity}.read iznini ve modülün uygulama yetkisini denetledikten sonra bir varlığın devre dışı satırlarını en yeniden başlayarak listeler (src/cluster_erp/modules/records/lifecycle_routes.py:114-172).
  3. POST /records/{module}/{entity}/{record_id}/activate, {entity}.delete iznini denetler, deleted_at ve deactivation_reason alanlarını temizler ve RecordActivated yayar (src/cluster_erp/modules/records/lifecycle_routes.py:224-269).
  4. Sunucu günde bir kez saklama geçişini çalıştırır. Düğümün hizmet verdiği her veritabanı için yapılandırılan süreyle purge_expired çağırır ve modüller kendi zaman pencereli satırlarını bıraksın diye RetentionSweep yayar (src/cluster_erp/server/app.py:227-260, src/cluster_erp/server/app.py:404-460).
  5. purge_expired önce süresi dolmuş eklerin dosyalarını, ardından deleted_at sütunu olan her tabloyu her biri kendi kayıt noktasında, sonra süreden eski değişiklik geçmişini ve eski audit_log tablosunu siler. Bir tablodaki yabancı anahtar çakışması günlüğe yazılır ve atlanır (src/cluster_erp/modules/records/retention/purge.py:33-176).
  6. Veri kaldıran her geçiş bir RetentionRun satırı yazar; yazılamaması temizliği engellemez (src/cluster_erp/modules/records/retention/services.py:20-32).

Ekranlar ve metadata

Modülün kenar çubuğu grubu yoktur; kod web Ayarlar ekranından sunulduğunu belirtir (src/cluster_erp/modules/records/module.py:15-22, src/cluster_erp/modules/records/module.py:72). Tek varlığı deactivation_reason olur (src/cluster_erp/modules/records/module.py:73-75). Web istemcisi bir kayıt devre dışı bırakılırken neden listesini sunar (webapp/js/a11y-ui.js:156). Web uygulamasındaki pasif listeler ve yeniden etkinleştirme kayıtlar, belgeler, görüntüleyici ve paylaşım sayfasında anlatılır.

Durum ve aksiyonlar

Modül hiçbir ActionMeta tanımlamaz. Durumu, diğer modüllerin kayıtlarındaki deleted_at sütunudur.

İş kuralları

  • Yalnızca metadata'sı bir delete ucu tanımlayan varlıklar devre dışı bırakılabilir. resolver.py modül ve varlıktan modele eşlemeyi başlangıçta bir kez kurar; düzensiz tablo adları için elle doğrulanmış geçersiz kılmalar kullanır ve çözemediği her varlığı hata olarak günlüğe yazar (src/cluster_erp/modules/records/resolver.py:1-19, src/cluster_erp/modules/records/resolver.py:35-40).
  • Saklama süresi 6 ile 250 yıl arasına sıkıştırılır (src/cluster_erp/modules/records/retention/models.py:14-16, src/cluster_erp/modules/records/retention/services.py:49-54).
  • Temizlik, genel taramada core_change_history, deleted_records, alembic_version ve core_retention_config tablolarını atlar (src/cluster_erp/modules/records/retention/purge.py:23-30).
  • requires_note işaretli bir neden web istemcisinde serbest metin not ister; neden kodunun katalogla sunucu tarafında denetlenmesi web istemcisi dışında bulunamadı (webapp/js/a11y-ui.js:156).
  • Bir nedeni silmek deleted_at alanını doldurur (src/cluster_erp/modules/records/deactivation_reasons/services.py:73-79).

Olaylar ve sorgular

Modül hiçbir sözleşme tüketmez ve 1 sözleşme üretir; sayım fleet modülü sayfasındaki gibi yapılmıştır.

Yön Sözleşme sınıfı İşleyici veya yayıcı Kaynak
yayar RecordActivated activate ucu src/cluster_erp/modules/records/lifecycle_routes.py:257-268

RetentionSweep, paketin kendisi tarafından değil, source_module="records" ile sunucu tarafından yayılır (src/cluster_erp/server/app.py:240). Tam liste sözleşmeler başvurusunda yer alır.

İzinler

İzin anahtarı Kullanan Kaynak
deactivation_reason.read, .create, .update, .delete neden kataloğu src/cluster_erp/modules/records/deactivation_reasons/routes.py:24-82
retention_config.read, .update saklama süresi src/cluster_erp/modules/records/retention/routes.py:17-35
{entity}.read pasif listeler ve etiketler src/cluster_erp/modules/records/lifecycle_routes.py:126, src/cluster_erp/modules/records/lifecycle_routes.py:191
{entity}.delete yeniden etkinleştirme src/cluster_erp/modules/records/lifecycle_routes.py:234

Gizlilik, saklama ve geçmiş

Modülde privacy_handlers.py yoktur. Yukarıda anlatılan saklama süresine ve temizliğe sahiptir. Günlük geçişin zamanlaması zamanlanmış işler ve saklama sayfasındadır.

Analitik olgular

Bu modülde analytics_facts.py yoktur.

Ayarlar ve referans verileri

  • GET ve PUT /records/retention/ süreyi okur ve ayarlar; eksik satır varsayılan 10 yılla oluşturulur (src/cluster_erp/modules/records/retention/routes.py:17-35, src/cluster_erp/modules/records/retention/services.py:39-47).
  • Devre dışı bırakma nedenleri modülün referans verisidir. Pakette bir neden tohumu bulunamadı.

Testler

web-client/_e2e_*.mjs içinde /records/ ve tests/*.py içinde modules.records, /records/ veya retention için grep ile bulundu.

Tür Dosya Kapsar
e2e web-client/_e2e_deactivate_reason.mjs, web-client/_e2e_deactivate_ui.mjs nedenle devre dışı bırakma
e2e web-client/_e2e_lifecycle.mjs pasif listeler ve yeniden etkinleştirme
e2e web-client/_e2e_records_entitlement.mjs yaşam döngüsü uçlarında uygulama yetkisi
e2e web-client/_e2e_retention.mjs saklama süresi
pytest tests/test_control_retention.py, tests/test_data_map_package1.py, tests/test_tenancy.py kayıtlar veya saklamadan söz eden dosyalar

Tutarsızlıklar

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
deactivation reason DeactivationReason Bir kaydın neden kullanımdan kaldırıldığını söyleyen katalog girdisi. devre dışı bırakma nedeni src/cluster_erp/modules/records/deactivation_reasons/models.py:9
retention window retention_years Devre dışı bir kaydın temizlik onu kaldırmadan önce tutulduğu yıllar. Saklama süresi src/cluster_erp/modules/records/retention/models.py:19-30
passive record list_inactive İnceleme ve yeniden etkinleştirme için listelenen, deleted_at dolu kayıt. Pasif kayıt src/cluster_erp/modules/records/lifecycle_routes.py:114-115

İlgili sayfalar


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

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