الانتقال إلى المحتوى الرئيسي
الآن النواة الأساسية: دالة المنطقية التي تحمّل قالب وسجل، تملأ العناصر النائبة، وتحفظ وثيقة جديدة. سنقوم بكتابة منطق العمل مرة واحدة ك**معالج **، ثم نكشف عنه من خلال عدة مشغلات. هذا الفصل يربط اثنين منهم - أداة AI و عمل سير العمل.

مساعد التقديم

حافظ على المنطق الخالص في ملفه الخاص بحيث أنه من السهل إجراء اختبار الوحدة. هذا يربط سجل في {{dot.path}} رموز ويبدلها.
لأن هذا الملف ليس له تأثيرات جانبية، يمكنك تغطيته عن طريق اختبارات الوحدة السريعة (‘اختبار yarn:unit`). انظر Testing.

المعالج

يستخدم المعالج CoreApiClient لقراءة وكتابة بيانات CRM. يحمّل القالب، ويحمّل السجل المستهدف، ويملأ الجسم، وينشئ وثيقة.
‘loadRecordValues’ يدير استفسارا مختلفا لشخص ضد شركة ومسطحات النتيجة - انظر `load-record-values.ts’.

الكشف عنه كأداة وإجراءات سير العمل

يمكن لـ defineLogicFunction' أن يحمل عدة مشغلات. هنا، "إعدادات الأدوات" تجعلها قابلة للاستدعاء من قبل عملاء AI ، و workflowtionTriggertings` تحولها إلى خطوة في منشئ سير العمل البصري. ويصف كلاهما إسهاماتهما بمخطط “JSON”.
مخطط المدخلات هو مخطط JSON بسيط يصف templateId وrecordId - أنظر generate-document-input.schema.ts.

امنح حق الوصول

الوظائف المنطقية تعمل كدور للتطبيق. تحتاج إلى قراءة القوالب والسجلات وإنشاء المستندات، لذلك اسمح بذلك في src/roles/default-role.ts:
يتيح “UPLOAD_FILE” للوظيفة تحميل PDF التي تم إنشاؤها في القسم التالي. انظر [Roles](/l/ar/developers/extend/apps/config/rolesللحصول على أذونات مأخوذة من الحبوب الأكثر.

إرفاق ملف PDF حقيقي

حقل نص محرر مفيد، لكن المستخدمين يريدون وثيقة حقيقية. دعونا ننشئ PDF ونخزنه في السجل كملف قابل للتنزيل. أولا، اعطي الكائن ‘document’ حقل ‘FILES’ للاحتفاظ بـ PDF. تقوم التطبيقات برفع في حقول الملفات الخاصة بها الخاصة، لذلك هذا الحقل هو مسارات الرفع:
الآن اجعل قوات الدفاع الشعبي تلك. التطبيق هو مشروع عقدة حقيقي، بحيث يمكنك إضافة أي npm حزمة تحتاج إليها واستيرادها مثل أي مكان آخر. نحن نستخدم pdf-lib لرسم PDF و marked لتحليل جسم Markdown- يقوم CLI بتثبيته في وقت تشغيل الوظيفة لك:
المساعد الكامل هو [generate-document-pdf.ts'](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/logic-functions/utils/generate-document-pdf.ts). إنه يحلل علامة الرموز المميزة مع علامة علامة’. ممارسة ’، ثم تضعها باستخدام pdf-lib: العناوين الحقيقية، الجريئة/italic، تدير الرصاصات والقوائم المرقمة، الكتل والقواعد-عبارة عن مقتطفات متعددة الصفحات A4 لتقديم القالب نفسه، وليس جدار نص.
تم توليد PDF مصقول قابل للتسويق

PDF المولدة: الطباعة الحقيقية وتنسيق Markdown، وتقديم نموذج الجسم.

خطوط pdf-lib المدمجة تستخدم تشفير WinAnsi ، لذا لهجات غرب أوروبا تقدم خارج الصندوق؛ خرائط المساعد مقتبسات ذكية والشرطات وتسقط الشخصيات لا يمكن ترميزها. إن عرض النصوص غير اللاتينية (الصينية، العربية، السيريلية) سيعني تضمين خط Unicode.
ثم قم بتحميله وتخزين المرجع في السجل. مسارات ‘uploadFile’ بايت إلى حقل الملفات الذي تملكه التطبيق؛ و`id’ المعاد هو ما قمت بحفظه:
الوثيقة التي تم إنشاؤها تحمل الآن PDF قابل للتنزيل:
سجل مستند مع ملف PDF الذي تم إنشاؤه

PDF التي تم إنشاؤها، مخزنة في حقل ملف المستند.

‘uploadFile’ يستهدف فقط حقول الملفات التي تملكها التطبيقات (لذلك يتطلب التحميل دائمًا تطبيق يمتلك الحقل، بالإضافة إلى علم الدور ‘UPLOAD_FILE`). لهذا السبب يهبط PDF في الحقل ‘file’ الخاص بالسجل - نفس النمط الذي يستخدمه call-record للتسجيلات.
بعد هذه الخطوة: كل مستند تم إنشاؤه لديه PDF حقيقي، قابل للتنزيل. ولكن لا يوجد ما يمكنه استدعاء المولّد من واجهة المستخدم بعد — ولأجل ذلك نحتاج إلى مسار HTTP.

التالي: طرق HTTP →

خدمة الوظيفة عبر HTTP وتقديم الوثائق كصفحات على الويب.