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_expirediş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:
- Herhangi bir modülün silme ucu
deleted_atalanını doldurur. Merkezi değişiklik geçmişi kancasıdeleted_byalanı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. GET /records/{module}/{entity}/inactive,{entity}.readiznini 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).POST /records/{module}/{entity}/{record_id}/activate,{entity}.deleteiznini denetler,deleted_atvedeactivation_reasonalanlarını temizler veRecordActivatedyayar (src/cluster_erp/modules/records/lifecycle_routes.py:224-269).- 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 diyeRetentionSweepyayar (src/cluster_erp/server/app.py:227-260,src/cluster_erp/server/app.py:404-460). purge_expiredönce süresi dolmuş eklerin dosyalarını, ardındandeleted_atsütunu olan her tabloyu her biri kendi kayıt noktasında, sonra süreden eski değişiklik geçmişini ve eskiaudit_logtablosunu 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).- Veri kaldıran her geçiş bir
RetentionRunsatı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
deleteucu tanımlayan varlıklar devre dışı bırakılabilir.resolver.pymodü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_versionvecore_retention_configtablolarını atlar (src/cluster_erp/modules/records/retention/purge.py:23-30). requires_noteiş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_atalanı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¶
GETvePUT /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¶
- Modüller dizini
- Yumuşak silme ve devre dışı bırakma
- Değişiklik geçmişi
- Logs modülü
- Bu modülün API başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.