Platform modüllere iki çıktı servisi sunar: HTML'den PDF oluşturma ve işlemsel posta gönderen bir sistem posta kutusu. Bu sayfa core/pdf_render.py, core/system_mail.py, server/routes/email.py içindeki rotaları ve server/services/record_formatter.py içindeki dışa aktarma yardımcısını listeler. Kişisel posta hesapları mail modülüne aittir; bkz. mail.
Kapsam ve kaynak¶
- Tanımlandığı yer:
src/cluster_erp/core/pdf_render.py(PdfRenderer,get_renderer,close_renderer,font_face_css),src/cluster_erp/core/system_mail.py,src/cluster_erp/server/routes/email.py,src/cluster_erp/server/services/record_formatter.py - Sayı: 3 e-posta rotası (
@router.dekoratörlerinden sayıldı); 5 dışa aktarma biçimi (text,pdf,xml,json,csv;src/cluster_erp/server/routes/email.py:73içindeki istek deseninden)
PDF oluşturucu¶
PdfRenderer, HTML'yi Playwright'ın Chromium'u ile PDF'e çevirir. Süreç başına bir tarayıcı ilk kullanımda bir kilit korumasında başlatılır; her oluşturma kendi tarayıcı bağlamını ve sayfasını açar (src/cluster_erp/core/pdf_render.py:58-120).
| Üye | Davranış | Kaynak |
|---|---|---|
render(html, footer_html=None, page_format="A4") |
Sayfa içeriğini kurar, yazı tiplerini bekler ve arka planlar, CSS sayfa boyutu ve isteğe bağlı alt bilgi şablonuyla PDF baytları döndürür | src/cluster_erp/core/pdf_render.py:92-120 |
close() |
Tarayıcıyı ve Playwright'ı kapatır | src/cluster_erp/core/pdf_render.py:122-131 |
get_renderer() |
Süreç geneli oluşturucuyu döndürür | src/cluster_erp/core/pdf_render.py:137-141 |
close_renderer() |
Onu kapatır; lifespan kapanışta çağırır | src/cluster_erp/core/pdf_render.py:144-148, src/cluster_erp/server/app.py:198-204 |
font_face_css() |
Her yazı tipi dosyası veri URI'si olarak gömülmüş web uygulaması manrope.css dosyası |
src/cluster_erp/core/pdf_render.py:32-51 |
RENDER_TIMEOUT_MS 30.000'dir (src/cluster_erp/core/pdf_render.py:28). Playwright veya Chromium yoksa oluşturucu HTTP 503 ile PDF_RENDERER_UNAVAILABLE koduyla AppError yükseltir (src/cluster_erp/core/pdf_render.py:70-89). Oluşturucuyu sales_orders modülünün ticari belgeleri kullanır (src/cluster_erp/modules/sales_orders/trade_documents/render.py, src/cluster_erp/modules/sales_orders/trade_documents/services.py). Bkz. ticari belgeler.
Sistem posta kutusu¶
core/system_mail.py, uygulamanın kendisinin gönderdiği posta için tek SMTP göndericisidir (src/cluster_erp/core/system_mail.py:1-12).
| Üye | Davranış | Kaynak |
|---|---|---|
is_configured(settings) |
smtp_host ayarlıysa doğru |
src/cluster_erp/core/system_mail.py:41-42 |
from_header(settings) |
smtp_from_name <smtp_from_email> ya da yalnızca adres |
src/cluster_erp/core/system_mail.py:45-48 |
build_message(...) |
Metin, isteğe bağlı HTML alternatifi ve ekler içeren bir multipart/mixed ileti |
src/cluster_erp/core/system_mail.py:51-80 |
send_blocking(settings, msg, recipients) |
25 saniyelik zaman aşımıyla bağlanır, smtp_use_tls açıksa STARTTLS kullanır, smtp_user ayarlıysa oturum açar ve gönderir |
src/cluster_erp/core/system_mail.py:83-98 |
send_system_email(...) |
İletiyi kurar ve bir işçi iş parçacığında gönderir | src/cluster_erp/core/system_mail.py:101-123 |
SystemMailNotConfiguredError, SystemMailError |
Sunucu ayarlı değilse ve SMTP konuşması başarısız olursa yükselir | src/cluster_erp/core/system_mail.py:33-38 |
Modüller işlemsel postayı SendTransactionalEmail yayınlayarak gönderir. mail modülü onu işler ve send_system_email çağırır; posta kutusu yapılandırılmamışsa {"sent": False, "reason": "not_configured"} döndürür (src/cluster_erp/modules/mail/module.py:53, src/cluster_erp/modules/mail/module.py:72-100).
E-posta rotaları¶
Yönlendirici öneki /api/v1/email'dir ve her rota email.send iznini ister (src/cluster_erp/server/routes/email.py:22, src/cluster_erp/server/routes/email.py:100, src/cluster_erp/server/routes/email.py:126, src/cluster_erp/server/routes/email.py:191).
| Yöntem ve yol | Amaç | Davranış | Kaynak |
|---|---|---|---|
POST /resolve |
Kayıtların e-posta adreslerini bul | ResolveEntityEmails yayınlar ve tüm işleyicilerden alıcı listelerini toplar |
src/cluster_erp/server/routes/email.py:95-119 |
POST /send-records |
Kayıtları dışa aktarma olarak gönder | Dışa aktarmayı generate_export ile kurar, biçim text değilse ekler ve sistem posta kutusundan gönderir |
src/cluster_erp/server/routes/email.py:122-184 |
POST /send |
Düz bir ileti gönder | Metin ve HTML iletisini sistem posta kutusundan gönderir | src/cluster_erp/server/routes/email.py:187-222 |
İki gönderme rotası sunucu ayarlı değilse HTTP 503 ile SMTP_NOT_CONFIGURED, gönderme başarısız olursa HTTP 502 ile SMTP_ERROR yanıtı verir (src/cluster_erp/server/routes/email.py:131-136, src/cluster_erp/server/routes/email.py:184, src/cluster_erp/server/routes/email.py:195-200, src/cluster_erp/server/routes/email.py:222).
Kayıt dışa aktarma biçimleri¶
generate_export(fmt, entity_label, columns, records), (content, content_type, extension) döndürür (src/cluster_erp/server/services/record_formatter.py:308-318). Modül belge dizgisi biçimleri listeler: düz metin, ReportLab ile PDF, JSON (RFC 8259), CSV (RFC 4180, BOM'lu UTF-8) ve XML 1.0 (src/cluster_erp/server/services/record_formatter.py:1-11). Bu PDF yolu yukarıdaki Chromium oluşturucuyu değil ReportLab'ı kullanır (src/cluster_erp/server/services/record_formatter.py:23-30).
Kısıtlar ve doğrulama¶
send_blockingvesend_system_email,smtp_hostboşsaSystemMailNotConfiguredErroryükseltir (src/cluster_erp/core/system_mail.py:85-86,src/cluster_erp/core/system_mail.py:112-113).- Ayar doğrulayıcısı
smtp_hostayarlıysasmtp_from_emailister (src/cluster_erp/config/settings.py:832-835). - Sistem postasındaki ek dosya adları
safe_content_dispositionkullanır (src/cluster_erp/core/system_mail.py:76-79).
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| system mailbox | core/system_mail.py |
Uygulamanın kendi postası için kullandığı ve diğer modüllerin SendTransactionalEmail ile ulaştığı tek SMTP kimliği. |
sistem posta kutusu | src/cluster_erp/core/system_mail.py:1-12 |
| PDF renderer | PdfRenderer |
HTML'yi PDF'e çeviren süreç geneli Chromium. | PDF oluşturucu | src/cluster_erp/core/pdf_render.py:58 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.