Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Karar kayıtları

Açıklama

Fiziksel silme yok

Cluster ERP'nin hiçbir kaydı fiziksel olarak silmediği, silmenin değişiklik geçmişine kaydedilen nedenli bir kullanımdan kaldırma olduğu kuralın karar kaydı.

Durum: Kabul edildi; projenin yazılı mühendislik kurallarında belirtilir. Bu kayıt, Cluster ERP'nin hiçbir kaydının bir kullanıcı eylemiyle kaldırılmadığı kuralı kapsar. Silme nedenli bir kullanımdan kaldırmaya dönüşür, her kullanımdan kaldırma core_change_history içinde tutulur ve satırları kalıcı olarak yalnız saklama temizliği kaldırır. Sütunlar ve rotalar yumuşak silme ve kullanımdan kaldırma sayfasında açıklanır.

Bağlam

Projenin yazılı mühendislik kuralları fiziksel silmeyi yasaklar ve üç bilinçli istisna sayar: sahibiyle toptan yenilenen bağımlı alt satırlar, yeniden kurulan türetilmiş özet hücreleri ve saklama temizliğiyle kaldırılan olay satırları. Daha önceki bir mekanizma olan veritabanı tetikleyici kasası Temmuz 2026'da kaldırıldı. Onu kaldıran göç nedenini belirtir: kullanımdan kaldırmalar kalıcı değişiklik geçmişine kaydedilir ve tek fiziksel silme saklama temizliğidir (migrations/versions/dropvault_0001_remove_deletion_vault.py:1-11).

Karar

  • Bir kayıt deleted_at boşken etkin, bir zaman taşıdığında kullanımdan kaldırılmıştır. deleted_by, deactivation_reason ve deactivation_note kimin ve neden yaptığını kaydeder (src/cluster_erp/core/models.py:49-72).
  • Bir kullanıcının silmesi kullanımdan kaldırır; kayıt pasif kayıtlar arasında listelenebilir ve yeniden etkinleştirilebilir (src/cluster_erp/modules/records/lifecycle_routes.py:115-133, src/cluster_erp/modules/records/lifecycle_routes.py:225-249).
  • Her kullanımdan kaldırma ve her değişiklik değişiklik geçmişi dinleyicisi tarafından otomatik kaydedilir.
  • Saklama temizliği tek genel fiziksel silmedir (src/cluster_erp/modules/records/retention/purge.py:1-6).

Akış şeması bir kaydın yaşamını gösterir.

flowchart TD
 del["kullanıcı bir kaydı siler"] --> deact["deleted_at ayarlanır, neden ve not damgalanır"]
 deact --> hist["before_flush core_change_history'ye deactivate satırı yazar"]
 deact --> passive["kayıt pasif kayıtlar arasında listelenir"]
 passive -->|etkinleştir| live["deleted_at temizlenir, activate satırı yazılır"]
 passive -->|saklama süresi geçti| purge["purge_expired satırı kaldırır"]

Düzyazıyla: deleted_at boştan bir değere geçtiğinde dinleyici aktörü, nedeni ve notu satıra damgalar ve bir deactivate geçmiş satırı yazar (src/cluster_erp/core/change_history.py:331-342). Etkinleştirme deleted_at alanını temizler ve bir activate satırı yazar. Yapılandırılan yıl sayısından sonra purge_expired pasif satırları ve eski geçmişi siler (src/cluster_erp/modules/records/retention/purge.py:33-45).

Sonuçlar

  • Toplu kullanımdan kaldırma her nesneyi yükler ve deleted_at alanını ORM üzerinden ayarlar; böylece geçmiş ve neden damgası her satıra uygulanır (src/cluster_erp/core/bulk_operations.py:20-55).
  • Benzersizlik WHERE deleted_at IS NULL içeren kısmi indekslerle yalnız canlı satırlara uygulanır; böylece pasif bir değer yeniden kullanılabilir. Örnek: uq_core_deactivation_reasons_code_live (src/cluster_erp/modules/records/deactivation_reasons/models.py:18-25).
  • İş verisi üzerindeki sorgular pasif satırları dışarıda bırakır; analitik testleri bunu kuralın bir sonucu olarak belirtir (tests/test_analytics_gates.py:423).
  • Bilinçli istisnalar ORM üzerinden gider; böylece geçmiş her kaldırmayı yine kaydeder:
İstisna Satırlar Kaynak
Sahibiyle yenilenen alt satırlar Takvim şablon satırları ve istisna vardiyaları src/cluster_erp/modules/calendars/services.py:186-190, src/cluster_erp/modules/calendars/services.py:596-600
Sahibiyle yenilenen alt satırlar Tedarikçi teklifi koşul ve ölçek satırları src/cluster_erp/modules/purchasing_quotations/quotations/services.py:931-937
Sahibiyle yenilenen alt satırlar Maliyet kırılım kalemleri ve oran anlık görüntüleri src/cluster_erp/modules/costing/costing_analyses/services.py:315-329
Sahibiyle yenilenen alt satırlar İş merkezi operasyon tipleri src/cluster_erp/modules/production/work_centers/services.py:152-163
Türetilmiş özet hücreleri Yeniden kurulan analitik özet hücreleri src/cluster_erp/modules/analytics/summaries.py:245
Saklama temizliği Pasif satırlar ve eski geçmiş src/cluster_erp/modules/records/retention/purge.py:33-45

orm_delete_where, alt satır durumları için ortak yardımcıdır (src/cluster_erp/core/bulk_operations.py:58-75).

Kodun uyguladığı yerler

Mekanizma Neyi denetler Kaynak
BaseModel yumuşak silme sütunları Her iş tablosu kullanımdan kaldırma durumunu taşır src/cluster_erp/core/models.py:49-72
_capture_changes dinleyicisi Her kullanımdan kaldırma ve her ORM silmesi geçmişe yazılır src/cluster_erp/core/change_history.py:318-351
tests/test_live_row_uniqueness.py Model ve veritabanı kısmi benzersiz indeksleri uyuşur; kullanıcı değerlerinde düz benzersizlik yok tests/test_live_row_uniqueness.py:1-15
test_the_screen_never_offers_a_delete_action Analitik istatistik ekranı silme veya güncelleme ifadesi içermez tests/test_analytics_statistics.py:206-217

Koddan belirlenemedi: temizlik ve listelenen istisnalar dışındaki DELETE ifadelerini reddeden depo çapında bir test. tests/ içinde bulunmadı.

İlgili sayfalar


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

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