Ana içeriğe atla
Şimdi esas kısma geçelim: bir şablon ve bir kaydı yükleyen, yer tutucuları dolduran ve yeni bir belge kaydeden bir mantık işlevi. İş mantığını handler olarak bir kez yazacağız, sonra bunu birkaç tetikleyici üzerinden kullanıma sunacağız. Bu bölüm bunlardan ikisini birleştiriyor — bir yapay zekâ aracı ve bir iş akışı eylemi.

Oluşturma yardımcısı

Saf mantığı kendi dosyasında tutun ki birim testi yapmak kolay olsun. Bu, bir kaydı {{dot.path}} belirteçlerine düzleştirir ve bunların yerine değerlerini koyar.
Bu dosyanın yan etkisi olmadığından, onu hızlı birim testleriyle kapsayabilirsiniz (yarn test:unit). Bkz. Testing.

İşleyici

Handler, CRM verilerini okumak ve yazmak için oluşturulmuş CoreApiClient kullanır. Şablonu yükler, hedef kaydı yükler, gövdeyi doldurur ve bir document oluşturur.
loadRecordValues, Kişi ile Şirket için farklı bir sorgu çalıştırır ve sonucu düzleştirir — bkz. load-record-values.ts.

Bunu bir araç ve iş akışı eylemi olarak kullanıma açın

Tek bir defineLogicFunction birden çok tetikleyici barındırabilir. Burada, toolTriggerSettings onu AI aracılarının çağırabileceği hâle getirir ve workflowActionTriggerSettings onu görsel iş akışı oluşturucusundaki bir adıma dönüştürür. Her ikisi de girdilerini bir JSON şemasıyla tanımlar.
Girdi şeması, templateId ve recordId değerlerini tanımlayan basit bir JSON şemasıdır — bkz. generate-document-input.schema.ts.

Erişim verin

Mantık işlevleri uygulamanın rolü olarak çalışır. Şablonları ve kayıtları okuması ve belgeler oluşturması gerektiğinden, src/roles/default-role.ts içinde buna izin verin:
UPLOAD_FILE, bir sonraki bölümde oluşturulan PDF’yi işlevin yüklemesine izin verir. Daha ayrıntılı izinler için bkz. Roles.

Gerçek bir PDF dosyası ekleyin

Oluşturulmuş bir metin alanı kullanışlıdır, ancak kullanıcılar gerçek bir belge ister. Bir PDF oluşturalım ve onu kayıt üzerinde indirilebilir bir dosya olarak saklayalım. Önce, PDF’yi tutmak için document nesnesine bir FILES alanı verin. Uygulamalar kendi dosya alanlarına yükleme yapar, dolayısıyla yüklemenin yönlendirildiği yer bu alandır:
Şimdi o PDF’yi oluşturun. Bir uygulama gerçek bir Node projesidir, bu yüzden ihtiyacınız olan herhangi bir npm paketini ekleyebilir ve onu başka yerlerde olduğu gibi içe aktarabilirsiniz. Biz, PDF’yi çizmek için pdf-lib ve Markdown gövdesini ayrıştırmak için marked kullanıyoruz — CLI bunları işlevin çalışma zamanına sizin için kurar:
Tam yardımcı işlev şuradadır: generate-document-pdf.ts. Bu, Markdown’ı marked.lexer ile belirteçlere ayrıştırır, ardından bunları pdf-lib ile yerleştirir: gerçek başlıklar, kalın/italik metinler, madde ve numaralı listeler, alıntılar ve çizgiler — şablonun kendisinin duvar gibi bir metin yerine cilalı, çok sayfalı A4 işlenmesi.
Cilalı, pazarlanabilir oluşturulmuş bir PDF

Oluşturulan PDF: gerçek tipografi ve Markdown biçimlendirmesiyle şablon gövdesinin işlenmiş hâli.

pdf-lib’in yerleşik yazı tipleri WinAnsi kodlaması kullanır, bu nedenle Batı Avrupa aksanları kutudan çıktığı gibi oluşturulur; yardımcı, akıllı tırnak işaretlerini ve tireleri eşler ve kodlayamadığı karakterleri atar. Latin olmayan yazı sistemlerini (Çince, Arapça, Kiril) işlemek, bir Unicode yazı tipi gömmeyi gerektirir.
Sonra onu yükleyin ve referansını kayıt üzerinde saklayın. uploadFile, baytları uygulamanıza ait dosya alanına yönlendirir; döndürülen id, kaydettiğiniz değerdir:
Oluşturulan belge artık indirilebilir bir PDF taşıyor:
Oluşturulmuş PDF dosyasına sahip bir belge kaydı

Oluşturulan PDF, belgenin Dosya alanında saklanır.

uploadFile yalnızca uygulamaya ait dosya alanlarını hedefler (bu nedenle yüklemeler her zaman alanın sahibi olan bir uygulama ve ayrıca UPLOAD_FILE rol bayrağı gerektirir). Bu nedenle PDF, kaydın kendi file alanına düşer — call-recorder app uygulamasının kayıtlar için kullandığı desenle aynıdır.
Bu adımdan sonra: her oluşturulan belgenin gerçek, indirilebilir bir PDF’si vardır. Ancak henüz hiçbir şey oluşturucuyu arayüzden çağıramıyor — bunun için bir HTTP rotasına ihtiyacımız var.

Sırada: HTTP rotaları →

Fonksiyonu HTTP üzerinden sunun ve belgeleri web sayfaları olarak oluşturun.