src/cluster_erp/modules/crm/ içindeki crm modülü tekliften önceki müşteri tarafını yönetir. Bir tarafın müşteri rolünü tutar, müşteri parça numaralarını şirketin ürünlerine revizyonlarıyla eşler, müşteri teklif taleplerini (RFQ) kalemleri ve malzemeleriyle kaydeder ve teklif talebi e-postalarının bir gelen kutusunu tutar. Teklif taleplerini yanıtlayan teklifler quotations modülü içindedir. Bu sayfa genel bakıştır; alt konuların kendi sayfaları vardır.
Bir bakışta¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Paket | src/cluster_erp/modules/crm/ |
klasör |
| Modül sınıfı | Module |
src/cluster_erp/modules/crm/module.py:18 |
name / version |
crm / 0.1.0 |
src/cluster_erp/modules/crm/module.py:20-25 |
| API öneki | /api/v1/crm (ModuleBase.api_prefix) |
src/cluster_erp/core/module_base.py:37-38 |
| Alt modüller | 7: customers, customer_parts, customer_part_revisions, rfqs, rfq_line_items, rfq_line_materials, inbox |
klasör listesi |
| Tablolar | 8: crm_customers, crm_customer_parts, crm_customer_part_revisions, crm_rfqs, crm_rfq_packages, crm_rfq_line_items, crm_rfq_line_materials, crm_rfq_inbox_messages |
yedi models.py dosyasındaki __tablename__ |
| Metadata'daki varlıklar | entities içinde 8 anahtar |
src/cluster_erp/modules/crm/module.py:393-402 |
| Uçlar | Pakette 57 uç dekoratörü | @...router.get/post/put/patch/delete için grep |
| Aksiyonlar | 12 ActionMeta girdisi |
pakette grep "ActionMeta(" |
| Göçler | 16 dosya | metni sekiz tablo adından birini içeren migrations/versions/ dosyaları |
| Web uygulamasında yeri | crm klasöründe liste ekranı olan customer-parts ve rfqs katalog uygulamaları |
src/cluster_erp/modules/app_store/catalog.json:1002-1018, src/cluster_erp/modules/app_store/catalog.json:1052-1068 |
| Masaüstünde yeri | yalnızca genel bileşenler | src/cluster_erp/desktop/modules/ içinde crm klasörü yok |
Modül ne yapar¶
- Taraf başına, kimlik alanları taraftan türetilen bir müşteri rolü tutar (
src/cluster_erp/modules/crm/customers/services.py:75-146). - Bir müşterinin parça numarasını şirketin ürünlerinden birine eşler ve o parçanın revizyonlarını tutar (
src/cluster_erp/modules/crm/customer_parts/models.py:13-52,src/cluster_erp/modules/crm/customer_part_revisions/models.py:13-43). - Müşteri teklif taleplerini bir durum makinesi, kalemler, malzemeler ve bir belge paketiyle kaydeder (
src/cluster_erp/modules/crm/rfqs/services.py:64-80). - Gelen teklif talebi e-postalarını tutar ve teklif taleplerine eşler (
src/cluster_erp/modules/crm/inbox/services.py:67-131).
Alt modüller¶
| Alt modül | Amaç | Ana varlıklar | Yönlendirici | Kaynak |
|---|---|---|---|---|
customers |
Bir tarafın müşteri rolü | Customer |
/customers |
src/cluster_erp/modules/crm/customers/routes.py:28-37 |
customer_parts |
Müşteri parça numaraları | CustomerPart |
/customer-parts |
src/cluster_erp/modules/crm/customer_parts/routes.py:27-47 |
customer_part_revisions |
Bir müşteri parçasının revizyonları | CustomerPartRevision |
/customer-parts/{id}/revisions, /customer-part-revisions |
src/cluster_erp/modules/crm/customer_part_revisions/routes.py:21-24 |
rfqs |
Müşteri teklif talepleri ve belge paketleri | Rfq, RfqPackage |
/rfqs, /rfq-packages |
src/cluster_erp/modules/crm/rfqs/routes.py:36-51 |
rfq_line_items |
Teklif talebi kalemleri | RfqLineItem |
/rfqs/{rfq_id}/line-items, /line-items |
src/cluster_erp/modules/crm/rfq_line_items/routes.py:20-23 |
rfq_line_materials |
Teklif talebi kalemi başına malzemeler | RfqLineMaterial |
/line-items/{id}/materials, /line-materials |
src/cluster_erp/modules/crm/rfq_line_materials/routes.py:26-29 |
inbox |
Teklif talebi e-postaları | RfqInboxMessage |
/inbox |
src/cluster_erp/modules/crm/inbox/routes.py:22-25 |
Tüm yönlendiriciler modül önekinin altına require_app("crm") ile bağlanır (src/cluster_erp/modules/crm/module.py:66-74).
Veri modeli¶
Alanlar müşteriler ve müşteri parçaları, teklif talepleri ve gelen kutusu sayfalarında listelenir. CustomerPart.part_id yalnızca bir ürünü adlandırır; model veya versiyon taşımaz (src/cluster_erp/modules/crm/customer_parts/models.py:35). Modül para sütunu saklamaz.
Ekranlar ve metadata¶
get_metadata iki gruplu Müşteri İlişkileri (İngilizce Customer Relations) kenar çubuğunu bildirir: Müşteri Parça Numaraları ile Müşteri Parçaları ve Teklif Talepleri ile Gelen Kutusu içeren Teklif Talebi Yönetimi (src/cluster_erp/modules/crm/module.py:331-390). Müşteri rolünün kendisi taraf kartında gösterilir; bkz. taraf birleştirme.
Durumlar ve aksiyonlar¶
Teklif talebi durumları ve aksiyonları teklif talepleri, revizyon ve gelen kutusu aksiyonları müşteriler ve müşteri parçaları ile gelen kutusu sayfalarındadır.
İş kuralları¶
Her alt konu sayfası kendi kurallarını listeler. İş anahtarları customer, request_for_quotation ve rfq_package yıllık dizilerinden gelir (src/cluster_erp/modules/crm/customers/services.py:108, src/cluster_erp/modules/crm/rfqs/services.py:173, src/cluster_erp/modules/crm/rfqs/services.py:583).
Olaylar ve sorgular¶
Modül 9 sözleşme tüketir ve 14 sözleşme üretir; sayım parties modülü sayfasındaki gibi yapıldı. Tam liste sözleşmeler başvurusu sayfasındadır.
| Yön | Sözleşme sınıfı | İşleyici veya yayan | Kaynak |
|---|---|---|---|
| yayar | CustomerCreated, CustomerUpdated, PartyRoleSet |
müşteri servisi | src/cluster_erp/modules/crm/customers/services.py:118-207 |
| yayar | RfqReceived, RfqUpdated, RfqAssigned, RfqDeclined, RfqExpired, RfqWon, RfqLost, RfqPackageCompleted |
teklif talebi servisi | src/cluster_erp/modules/crm/rfqs/services.py:147-627 |
| sorgular | GetPartyById, CountPartyChannels, GetBomMaterials |
servisler | src/cluster_erp/modules/crm/rfqs/services.py:393-417, src/cluster_erp/modules/crm/rfq_line_materials/services.py:116 |
| sorguyu yanıtlar | GetCustomerById, GetRfqById, GetRfqIdsByCustomer, GetCustomerPartById, GetCustomerPartsByCustomer |
module.py içindeki işleyiciler |
src/cluster_erp/modules/crm/module.py:88-95 |
| abone olur | PartyDeleted, PartyUpdated |
müşteri rolü eşitlemesi | src/cluster_erp/modules/crm/module.py:96-99, src/cluster_erp/modules/crm/module.py:115-138, src/cluster_erp/modules/crm/module.py:271-297 |
| abone olur | CollectSubjectData, AnonymiseSubject |
privacy_handlers.py |
src/cluster_erp/modules/crm/module.py:110-113 |
Yetkiler¶
Modül customer.*, customer_part.*, customer_part_revision.*, rfq.*, rfq_package.*, rfq_line_item.*, rfq_line_material.* ve inbox_message.* ailelerini denetler. Her alt konu sayfası uç başına anahtarları listeler.
Gizlilik, saklama ve geçmiş¶
privacy_handlers.py, bireysel tarafların müşteri rolleri için ilgili kişi taleplerini yanıtlar: CollectSubjectData satırları döndürür, AnonymiseSubject tanımlayıcı değerlerin üzerine yazar ve satırları devre dışı bırakır (src/cluster_erp/modules/crm/privacy_handlers.py:1-12). Gelen kutusu mesajları e-posta adresleri ve gövdeler tutar; bkz. gelen kutusu. Silmeler deleted_at alanını doldurur (src/cluster_erp/modules/crm/customers/services.py:201). Bkz. gizlilik ve ilgili kişi talepleri.
Analitik olguları¶
Bu modülün analytics_facts.py dosyası yoktur.
Ayarlar ve başvuru verileri¶
Modülün ayarlar bölümü yoktur. Teklif talebi öncelik eşiği PRIORITY_THRESHOLD_HOURS modül sabitidir, değeri 48'dir (src/cluster_erp/modules/crm/rfqs/services.py:82).
Testler¶
tests/ içinde modules.crm için ve web-client/_e2e_*.mjs içinde /crm/ yolu için grep ile bulundu.
| Tür | Dosya | Kapsam |
|---|---|---|
| pytest | tests/test_party_form_contract.py |
bileşik taraf formundaki müşteri rolü |
| pytest | tests/test_tenant_field_catalog.py |
CRM varlıklarındaki kiracı alanları |
| e2e | web-client/_e2e_status_actions.mjs |
aksiyonlar üzerinden durum değişiklikleri |
| e2e | web-client/_e2e_order_shipment_chain.mjs, web-client/_e2e_quote_line_bom.mjs |
teklif talebinden teklife ve siparişe |
| e2e | web-client/_e2e_party_form_fixes.mjs, web-client/_e2e_fk_labels.mjs |
müşteri rolü ve etiketler |
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| customer facet | Customer |
Bir tarafın ticari varsayılanlarıyla müşteri rol kaydı. | Müşteri rolü | src/cluster_erp/modules/crm/customers/models.py:13 |
| customer RFQ | Rfq |
Henüz teklif yokken bir müşterinin teklif talebi. | Teklif talebi | src/cluster_erp/modules/crm/rfqs/models.py:14 |
İlgili sayfalar¶
- Modüller dizini
- Müşteriler ve müşteri parçaları
- Teklif talepleri
- Gelen kutusu
- Quotations modülü
- Taraf birleştirme
- Bu modülün API başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.