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_typeileentity_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:
- Sürüm taslak olarak başlar. Yalnızca taslak düzenlenebilir veya silinebilir (
src/cluster_erp/modules/documents/documents/services.py:223-253). - Onaya Gönder,
document_versionkaynağı veactivateaksiyonu içinGetApprovalChainForActionsorar. Zincir yoksa sürümü hemen aktif yapar. Zincir varsaSubmitForApprovalçağırır ve sürüm taslak kalır (src/cluster_erp/modules/documents/documents/routes.py:302-351). - Auth modülü bir
document_versioniçinfinal_statusdeğeriapprovedolanApprovalCompletedyayımladığında işleyici karar vereniGetApprovalRequestByIdile 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). - Aktif Yap, eki olan bir taslak ister. Mevcut aktif sürümü
supersededyapar, yenisini onaylayan ve zamanlaactiveyapar veDocumentVersionSupersededileDocumentVersionActivatedyayar (src/cluster_erp/modules/documents/documents/services.py:255-295,src/cluster_erp/modules/documents/documents/services.py:316-337). - Geri Çek, aktif bir sürümü
withdrawnyapar (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). extraiç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_atalanı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¶
- Modüller dizini
- Kayıtlar, belgeler, görüntüleyici ve paylaşım
- Ekler, notlar ve depolama
- İntranet belgelerim
- Bu modülün API başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.