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

Modül

Documents modülü (documents)

Herhangi bir kayda bağlanabilen türlü belgeler, numaralı sürümler, onay zinciriyle etkinleştirme ve belge türleriyle documents modülü sayfası.

src/cluster_erp/modules/documents/ içindeki documents modülü denetimli belgeleri tutar. Belgenin bir türü vardır, varlık türü ve kimliğiyle herhangi bir kayda bağlanabilir ve numaralı sürümler taşır. Aynı anda bir sürüm aktiftir; yeni bir sürüm ya hemen ya da bir onay zinciri üzerinden aktif olur. Modül ayrıca web uygulamasının metadata ile bulduğu "bu kayda bağlı belgeler" yeteneğini sağlar.

Bir bakışta

Öğe Değer Kaynak
Paket src/cluster_erp/modules/documents/ klasör
Modül sınıfı Module src/cluster_erp/modules/documents/module.py:18
name / version documents / 0.1.0 src/cluster_erp/modules/documents/module.py:19-25
API öneki /api/v1/documents (ModuleBase.api_prefix), require_app("documents") uygulama kapısıyla src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/documents/module.py:48-63
Alt modüller 2: documents, settings; ayrıca privacy_handlers.py klasör listesi
Tablolar 3: documents_documents, documents_versions, documents_types iki models.py dosyasındaki __tablename__
Metadata'daki varlıklar entities içinde 3 anahtar src/cluster_erp/modules/documents/module.py:267-271
Uçlar Pakette 23 uç dekoratörü @...router.get/post/put/patch/delete için grep
Aksiyonlar 5 ActionMeta girdisi pakette grep "ActionMeta("
Göçler 7 dosya metni üç tablo adından birini içeren migrations/versions/ dosyaları
Sözleşmeler 5 tüketir, 6 üretir "Olaylar ve sorgular" bölümüne bakın
Web uygulamasında varlık Katalog uygulaması documents; kayıt belgeleri panelinin kullandığı record_documents yeteneği src/cluster_erp/modules/app_store/catalog.json (documents girdisi), src/cluster_erp/modules/documents/module.py:228-230
Masaüstünde varlık yalnızca genel bileşenler src/cluster_erp/desktop/modules/ içinde documents klasörü yok

Modül ne yapar

  • İş kodu, türü, başlığı, çevirileri, açıklaması ve entity_type ile entity_id üzerinden herhangi bir kayda isteğe bağlı bağlantısı olan belgeleri tutar (src/cluster_erp/modules/documents/documents/models.py:26-49).
  • Belge başına numaralı sürümler tutar; her sürüm çekirdek ek deposundaki bir dosyayı gösterir (src/cluster_erp/modules/documents/documents/models.py:52-87). Depolama ekler, notlar ve depolama sayfasında anlatılır.
  • Bir sürümü doğrudan veya bir onay zinciri karar verdikten sonra aktif yapar ve önceki aktif sürümü geçersiz kılınmış olarak işaretler (src/cluster_erp/modules/documents/documents/services.py:255-337).
  • İzin verilen dosya uzantılarıyla belge türleri tutar ve varsayılan bir küme tohumlar (src/cluster_erp/modules/documents/settings/models.py:11-28, src/cluster_erp/modules/documents/module.py:37-46).
  • Diğer modüllere yanıt verir: bir kaydın belgeleri ve bir sürümün arkasındaki dosya (src/cluster_erp/modules/documents/module.py:98-149).

Alt modüller

Alt modül Amaç Ana varlıklar Yönlendirici Kaynak
documents Belgeler ve sürümleri Document, DocumentVersion /documents, /versions src/cluster_erp/modules/documents/documents/routes.py:38-383
settings Belge türleri DocumentType /settings/document-types src/cluster_erp/modules/documents/settings/routes.py:20-107

Veri modeli

Varlık Tablo Ana alanlar Notlar Kaynak
Document documents_documents code, document_type_id, entity_type, entity_id, title, translations, description, is_active, extra code benzersiz; extra kiracı alanı değerlerini tutar src/cluster_erp/modules/documents/documents/models.py:26-49
DocumentVersion documents_versions code, document_id, version_no, status, valid_from, valid_to, attachment_id, change_notes, approved_by, approved_at version_no canlı satırlar arasında belge başına benzersiz src/cluster_erp/modules/documents/documents/models.py:52-87
DocumentType documents_types code, name, translations, description, allowed_extensions, is_active code canlı satırlar arasında benzersiz src/cluster_erp/modules/documents/settings/models.py:11-28

Belge kodları document, sürüm kodları document_version dizisinden gelir (src/cluster_erp/modules/documents/documents/services.py:110-111, src/cluster_erp/modules/documents/documents/services.py:208). Yeni sürüm, en yüksek canlı sürümden sonraki numarayı alır (src/cluster_erp/modules/documents/documents/services.py:200-221).

Ekranlar ve metadata

get_metadata, Belgeler liste bölümü ve document_type sekmeli bir ayar bölümüyle Belgeler (İngilizce Documents) kenar çubuğu grubunu tanımlar (src/cluster_erp/modules/documents/module.py:232-265). Modül provides={"record_documents": {...}} yayımlar; böylece web istemcisi kayıt belgeleri özelliğini modül adıyla değil yetenekle bulur (src/cluster_erp/modules/documents/module.py:228-230). Kayıt belgeleri paneli ve görüntüleyici kayıtlar, belgeler, görüntüleyici ve paylaşım sayfasında anlatılır.

Durum ve aksiyonlar

Sürüm draft, active, superseded veya withdrawn durumundadır (src/cluster_erp/modules/documents/documents/services.py:200-337). Diyagram sürüm ve onay zincirini gösterir.

flowchart TD
 V["DocumentVersion taslak"] --> S["POST /versions/id/submit-approval"]
 S --> Q{"GetApprovalChainForAction: document_version, activate"}
 Q -->|zincir yok| ACT["DocumentVersionService.activate"]
 Q -->|zincir var| SUB["SubmitForApproval"]
 SUB --> AC["ApprovalCompleted olayı"]
 AC -->|final_status approved| ACT
 AC -->|diğer durum| STAY["sürüm taslak kalır"]
 V --> D["POST /versions/id/activate"]
 D --> ACT
 ACT --> SUP["önceki aktif sürüm: superseded"]
 ACT --> NEW["bu sürüm: active, approved_by, approved_at"]
 NEW --> W["POST /versions/id/withdraw: withdrawn"]

Düz anlatımla:

  1. Sürüm taslak olarak başlar. Yalnızca taslak düzenlenebilir veya silinebilir (src/cluster_erp/modules/documents/documents/services.py:223-253).
  2. Onaya Gönder, document_version kaynağı ve activate aksiyonu için GetApprovalChainForAction sorar. Zincir yoksa sürümü hemen aktif yapar. Zincir varsa SubmitForApproval çağırır ve sürüm taslak kalır (src/cluster_erp/modules/documents/documents/routes.py:302-351).
  3. Auth modülü bir document_version için final_status değeri approved olan ApprovalCompleted yayımladığında işleyici karar vereni GetApprovalRequestById ile okur ve sürümü aktif yapar. Diğer son durumlar onu taslak bırakır (src/cluster_erp/modules/documents/module.py:151-204).
  4. Aktif Yap, eki olan bir taslak ister. Mevcut aktif sürümü superseded yapar, yenisini onaylayan ve zamanla active yapar ve DocumentVersionSuperseded ile DocumentVersionActivated yayar (src/cluster_erp/modules/documents/documents/services.py:255-295, src/cluster_erp/modules/documents/documents/services.py:316-337).
  5. Geri Çek, aktif bir sürümü withdrawn yapar (src/cluster_erp/modules/documents/documents/services.py:297-314).
Aksiyon Etiket Koşul Uç İzin Kaynak
view_version Görüntüle yok GET /versions/{id}/file document_version.read src/cluster_erp/modules/documents/documents/metadata.py:266-272, src/cluster_erp/modules/documents/documents/routes.py:240-268
submit_approval Onaya Gönder status = draft POST /versions/{id}/submit-approval document_version.submit_approval src/cluster_erp/modules/documents/documents/metadata.py:273-280
activate Aktif Yap status = draft POST /versions/{id}/activate document_version.activate src/cluster_erp/modules/documents/documents/metadata.py:281-288, src/cluster_erp/modules/documents/documents/routes.py:354-369
withdraw Geri Çek status = active POST /versions/{id}/withdraw document_version.withdraw src/cluster_erp/modules/documents/documents/metadata.py:289-296, src/cluster_erp/modules/documents/documents/routes.py:371-383
seed_defaults Varsayılanları Yükle yok POST /settings/document-types/seed-defaults document_type.seed src/cluster_erp/modules/documents/settings/metadata.py:30-36, src/cluster_erp/modules/documents/settings/routes.py:52-58

Onay zincirleri onaylar ve onay zincirleri sayfasında anlatılır.

İş kuralları

  • Eki olmayan sürüm aktif yapılamaz (src/cluster_erp/modules/documents/documents/services.py:269-274).
  • Belge başına en fazla bir sürüm aktiftir; etkinleştirme öncekini geçersiz kılar (src/cluster_erp/modules/documents/documents/services.py:316-337).
  • extra içindeki kiracı alanı değerleri oluşturmada doğrulanır (src/cluster_erp/modules/documents/documents/services.py:110-115). Bkz. kiracı alanları.
  • GET /versions/{id}/file, sürümün dosyasını depodan akıtır; dosya yoksa bulunamadı yanıtı verir (src/cluster_erp/modules/documents/documents/routes.py:240-268).
  • Belgeyi veya taslak sürümü silmek deleted_at alanını doldurur; toplu silme çekirdek yumuşak silme yardımcısını kullanır (src/cluster_erp/modules/documents/documents/services.py:150-162, src/cluster_erp/modules/documents/documents/services.py:241-253).

Olaylar ve sorgular

Modül 5 sözleşme tüketir ve 6 sözleşme üretir; sayım fleet modülü sayfasındaki gibi yapılmıştır. Tam liste sözleşmeler başvurusunda yer alır.

Yön Sözleşme sınıfı İşleyici veya yayıcı Kaynak
abone olur ApprovalCompleted _handle_approval_completed src/cluster_erp/modules/documents/module.py:74-77, src/cluster_erp/modules/documents/module.py:151-204
sorgu yanıtlar ResolveDocumentVersionFile _handle_resolve_version_file src/cluster_erp/modules/documents/module.py:78, src/cluster_erp/modules/documents/module.py:127-149
sorgu yanıtlar GetDocumentsForEntity _handle_get_documents_for_entity src/cluster_erp/modules/documents/module.py:79, src/cluster_erp/modules/documents/module.py:98-125
abone olur CollectSubjectData, AnonymiseSubject privacy_handlers.py src/cluster_erp/modules/documents/module.py:81-96
yayar DocumentCreated DocumentService.create src/cluster_erp/modules/documents/documents/services.py:119-126
yayar DocumentVersionActivated, DocumentVersionSuperseded activate, _supersede_active src/cluster_erp/modules/documents/documents/services.py:284-293, src/cluster_erp/modules/documents/documents/services.py:328-337
sorgular GetApprovalChainForAction, SubmitForApproval, GetApprovalRequestById onaya gönderme ucu, onay işleyicisi src/cluster_erp/modules/documents/documents/routes.py:325-350, src/cluster_erp/modules/documents/module.py:178-183

ResolveDocumentVersionFile intranet tebligat indirmesine, GetDocumentsForEntity intranet "belgelerim" listesine hizmet eder (src/cluster_erp/modules/intranet/delivery/routes.py:143-150, src/cluster_erp/modules/intranet/my_documents/services.py:17-28).

İzinler

İzin anahtarı Kullanan Kaynak
document.read, .create, .update, .delete, .bulk_delete belgeler src/cluster_erp/modules/documents/documents/routes.py:59-180
document_version.read, .create, .update, .delete, .submit_approval, .activate, .withdraw sürümler src/cluster_erp/modules/documents/documents/routes.py:194-377
document_type.read, .create, .update, .delete, .bulk_delete, .seed belge türleri src/cluster_erp/modules/documents/settings/routes.py:23-102

Gizlilik, saklama ve geçmiş

privacy_handlers.py, bir kişiye karşı dosyalanan belgeleri (varlık türü party) listeler. Anonimleştirme bir operatör kararıdır (include_documents); dahil edildiğinde belgeler emekliye ayrılır, başlık ve açıklamaları değiştirilir ve sürüm dosyaları silinmek üzere bildirilir (src/cluster_erp/modules/documents/privacy_handlers.py:1-9). Bkz. gizlilik ve ilgili kişi talepleri. Modülde retention_handlers.py yoktur. Değişiklikleri değişiklik geçmişi yakalar.

Analitik olgular

Bu modülde analytics_facts.py yoktur.

Ayarlar ve referans verileri

Belge türleri referans verisidir. Modül başlarken varsayılan kümeyi DocumentTypeService.seed_defaults ile tohumlar; Varsayılanları Yükle bunu istek üzerine çalıştırır (src/cluster_erp/modules/documents/module.py:37-46, src/cluster_erp/modules/documents/settings/routes.py:52-58). seed_data.py, her biri İngilizce bir ad ve Türkçe bir çeviri taşıyan 15 varsayılan tür tutar, örneğin form, instruction, procedure ve technical_drawing (src/cluster_erp/modules/documents/settings/seed_data.py:1-113).

Testler

Ada göre (web-client/_e2e_doc*.mjs, web-client/_e2e_record_docs.mjs) ve tests/*.py içinde documents için grep ile bulundu.

Tür Dosya Kapsar
e2e web-client/_e2e_doc_version.mjs sürümler ve etkinleştirme
e2e web-client/_e2e_doc_viewer.mjs belge görüntüleyici
e2e web-client/_e2e_record_docs.mjs kayıtlara bağlı belgeler
e2e web-client/_e2e_intranet_mydocs.mjs belgeler üzerindeki intranet görünümü
pytest tests/test_erasure_ledger.py, tests/test_metadata_driven_rules.py, tests/test_secure_defaults.py, tests/test_order_shipment_chain.py documents geçen dosyalar

Tutarsızlıklar

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
document Document Türü olan ve isteğe bağlı olarak bir kayda bağlanan denetimli belge. Belge src/cluster_erp/modules/documents/documents/models.py:26
document version DocumentVersion Bir belgenin dosyası ve durumuyla numaralı tek revizyonu. Belge sürümü src/cluster_erp/modules/documents/documents/models.py:52
document type DocumentType Belgeleri sınıflandıran ve izin verilen dosya uzantılarını listeleyen referans satırı. Belge türü src/cluster_erp/modules/documents/settings/models.py:11

İlgili sayfalar


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

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