Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Platform

Referans

PDF ve sistem postası

core/pdf_render.py içindeki Chromium PDF oluşturucu, core/system_mail.py içindeki sistem posta kutusu, /api/v1/email rotaları ve kayıt dışa aktarma biçimleri.

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:73 iç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_blocking ve send_system_email, smtp_host boşsa SystemMailNotConfiguredError yü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_host ayarlıysa smtp_from_email ister (src/cluster_erp/config/settings.py:832-835).
  • Sistem postasındaki ek dosya adları safe_content_disposition kullanı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ı.

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