i18n - docs translations (#21865)
Created by Github action Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
committed by
GitHub
parent
9695d77252
commit
4e64a38e1e
@@ -348,6 +348,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
للتصريح بمعاملاتك **مرة واحدة** وخدمة كلتا الواجهتين، عرّف مخطط JSON واحد (`InputJsonSchema`) وحوِّله لاستخدامه في إجراء سير العمل باستخدام `jsonSchemaToInputSchema` من `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` يستخدم مخطط JSON مباشرة، بينما `workflowActionTriggerSettings.inputSchema` يتوقّع `InputSchema` الخاص بـ Twenty:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**اكتب `description` جيدًا.** يعتمد وكلاء الذكاء الاصطناعي على حقل `description` الخاص بالدالة لتحديد وقت استخدام الأداة. كن محددًا بشأن ما تفعله الأداة ومتى ينبغي استدعاؤها.
|
||||
</Note>
|
||||
@@ -355,6 +381,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**مساعدات وقت التشغيل.** يقوم `twenty-sdk/utils` بإعادة تصدير مساعدات صغيرة لوقت التشغيل حتى لا تستورد المعالجات مباشرةً من `twenty-shared`. على سبيل المثال، تُرجِع `isDefined(value)` القيمة `false` لكلٍّ من `null` و`undefined` — استخدمها لتضييق نطاق مُدخلات المعالِجات الاختيارية بأمان، والتي يمكن أن تصل كقيمة `null` أثناء وقت التشغيل حتى عندما تكون مكتوبة كـ `T | undefined`:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**خطافات التثبيت** — معالجات ما قبل التثبيت وما بعد التثبيت — تشترك في وقت التشغيل نفسه، ولكن يُصرَّح عنها بدوال تعريف خاصة بها ولا تأخذ إعدادات المشغّلات. راجع [خطافات التثبيت (Install Hooks)](/l/ar/developers/extend/apps/config/install-hooks) لمعرفة `definePreInstallLogicFunction` و `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -89,9 +89,9 @@ Upsert هي عملية تجمع بين "update" و"insert" — فهي تحدّث
|
||||
|
||||
## خطافات الويب
|
||||
|
||||
الويب هوكس هي رسائل آلية ترسل من Twenty إلى تطبيقات أخرى عند حدوث أحداث معينة، مما يتيح مزامنة البيانات في الوقت الفعلي.
|
||||
خطافات الويب هي رسائل آلية ترسل من Twenty إلى تطبيقات أخرى عند حدوث أحداث معينة، مما يتيح مزامنة البيانات في الوقت الفعلي.
|
||||
|
||||
## سير العمل
|
||||
## مسارات العمل
|
||||
|
||||
مسارات العمل هي عمليات مؤتمتة تطلق إجراءات بناءً على شروط محددة، مما يساعدك على أتمتة المهام المتكررة والعمليات التجارية.
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
* **الإعدادات** — الوصول إليها من الأعلى يسارًا
|
||||
* **المفضّلات** — عروض مثبّتة، فريدة لكل مستخدم
|
||||
* **اختصارات الكائنات** — وصول سريع إلى الأشخاص والشركات والفرص، إلخ.
|
||||
* **Workflows** — إنشاء أتمتة
|
||||
* **سير العمل** — إنشاء أتمتة
|
||||
|
||||
اسحب العناصر لإعادة ترتيبها، وأنشئ مجلدات لتجميع الكائنات ذات الصلة، وأخفِ ما لا تستخدمه.
|
||||
|
||||
|
||||
@@ -5,27 +5,27 @@ icon: heart
|
||||
|
||||
import { CardTitle } from "/snippets/card-title.mdx"
|
||||
|
||||
كنتَ دائمًا تختار بين برمجيات يسهل البدء بها لكن يستحيل تغييرها، وبين برمجيات مرنة لكنها تتطلب أشهرًا لإعدادها. Twenty هو الخيار الثالث: **نظام إدارة علاقات عملاء جاهز للإنتاج يمكنك إعادة تشكيله أثناء الاستخدام.**
|
||||
كنتَ دائمًا تختار بين برمجيات يسهل البدء بها لكن يستحيل تغييرها، وبين برمجيات مرنة لكنها تتطلب أشهرًا لإعدادها. Twenty هو الخيار الثالث: **نظام إدارة علاقات العملاء جاهز للإنتاج يمكنك إعادة تشكيله أثناء الاستخدام.**
|
||||
|
||||
## ما الذي يجعل Twenty مختلفًا
|
||||
|
||||
Twenty هو منصة يمكنك البناء عليها، وليس منتجًا تقوم فقط بتهيئته.
|
||||
|
||||
<CardGroup cols={٢}>
|
||||
<CardGroup cols={2}>
|
||||
<Card img="/images/user-guide/halftone/ai.png">
|
||||
<CardTitle>مصمَّم للوكلاء</CardTitle>
|
||||
يعمل الوكلاء داخل نموذج بياناتك مع صلاحيات حقيقية. مهارات، أدوات، MCP.
|
||||
</Card>
|
||||
<Card img="/images/user-guide/halftone/permissions.png">
|
||||
<CardTitle>قابلية توسعة مؤمّنة</CardTitle>
|
||||
مرونة أدوات مشفَّرة بالجوهر على أسس مؤمّنة.
|
||||
مرونة أدوات مبرمجة على أسس مؤمّنة.
|
||||
</Card>
|
||||
<Card img="/images/user-guide/halftone/dev-api.png">
|
||||
<CardTitle>حزمة تقنية حديثة</CardTitle>
|
||||
React، TypeScript. فريقك يعرف بالفعل كيفية توسيع Twenty. لا لغات احتكارية، ولا حجب للوصول.
|
||||
</Card>
|
||||
<Card img="/images/user-guide/halftone/dev-self-host.png">
|
||||
<CardTitle>بدون احتجاز</CardTitle>
|
||||
<CardTitle>بدون قيود</CardTitle>
|
||||
نواة مفتوحة المصدر، وقابلية للاستضافة الذاتية، وإمكانية تصدير بياناتك في أي وقت.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
@@ -33,9 +33,9 @@ Twenty هو منصة يمكنك البناء عليها، وليس منتجًا
|
||||
## لمن صُمِّم Twenty
|
||||
|
||||
* **المؤسسات الكبرى التي تستبدل Salesforce** — فريقك يقضي وقتًا أطول في مقاومة الأداة بدلًا من استخدامها.
|
||||
تشعر بأنك محتجز داخلها والتكاليف تستمر في الارتفاع.
|
||||
تشعر بأنك مقيّد بها والتكاليف تستمر في الارتفاع.
|
||||
* **الشركات الناشئة ذات المؤسسين التقنيين** — لقد تجاوزتم مرحلة جداول البيانات وNotion. لديكم طموحات كبيرة وتريدون
|
||||
نظام إدارة علاقات عملاء يتوسع معكم.
|
||||
نظام إدارة علاقات العملاء يتوسع معكم.
|
||||
* **فرق الدخول إلى السوق الباحثة عن ميزة تنافسية** — تريدون بناء نظام التصنيف الخاص بكم للعملاء المحتملين، ومنظومة الإثراء الخاصة بكم، وتدفّقات العمل الخارجية الخاصة بكم.
|
||||
* **المنظمات الحريصة على الخصوصية** — تحتاجون إلى
|
||||
الاستضافة الذاتية وامتلاك بياناتكم من البداية إلى النهاية. بدافع المتطلبات التنظيمية،
|
||||
|
||||
@@ -6,9 +6,9 @@ icon: نجمة
|
||||
|
||||
import { CardTitle } from "/snippets/card-title.mdx"
|
||||
|
||||
Twenty هو منصة إدارة علاقات عملاء (CRM) متكاملة المواصفات. إليك ما يمكنك بناؤه باستخدامه.
|
||||
Twenty هي منصة إدارة علاقات العملاء (CRM) متكاملة المزايا. إليك ما يمكنك بناؤه باستخدامه.
|
||||
|
||||
<CardGroup cols={٢}>
|
||||
<CardGroup cols={2}>
|
||||
<Card href="/l/ar/user-guide/data-model/overview" img="/images/user-guide/halftone/data-model.png">
|
||||
<CardTitle>نموذج بيانات مخصص</CardTitle>
|
||||
عرّف هيكل البيانات الدقيق الذي يحتاجه عملك.
|
||||
@@ -16,15 +16,15 @@ Twenty هو منصة إدارة علاقات عملاء (CRM) متكاملة ا
|
||||
</Card>
|
||||
|
||||
<Card href="/l/ar/user-guide/views-pipelines/overview" img="/images/user-guide/halftone/layout.png">
|
||||
<CardTitle>طرق العرض وخطوط العمل</CardTitle>
|
||||
<CardTitle>طرق العرض والمسارات</CardTitle>
|
||||
بدّل بين طرق عرض الجدول، ولوحات كانبان، وطرق عرض التقويم.
|
||||
<br />قم بالتصفية باستخدام منطق AND/OR، ورتّب حسب عدة حقول، واجمع السجلات، واحفظ طرق عرض مخصصة.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/ar/user-guide/workflows/overview" img="/images/user-guide/halftone/workflows.png">
|
||||
<CardTitle>سير العمل والأتمتة</CardTitle>
|
||||
أتمت أي عملية أعمال دون كتابة كود.
|
||||
<br />قم بتشغيل سير العمل عند تغيّر السجلات، أو وفق الجداول الزمنية، أو الإجراءات اليدوية، أو Webhooks الواردة.
|
||||
أتمت أي عملية عمل دون كتابة شفرة برمجية.
|
||||
<br />قم بتشغيل سير العمل عند تغيّر السجلات، أو وفق الجداول الزمنية، أو الإجراءات اليدوية، أو خطافات الويب الواردة.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/ar/user-guide/calendar-emails/overview" img="/images/user-guide/halftone/calendar-emails.png">
|
||||
@@ -41,13 +41,13 @@ Twenty هو منصة إدارة علاقات عملاء (CRM) متكاملة ا
|
||||
<Card href="/l/ar/user-guide/dashboards/overview" img="/images/user-guide/halftone/dashboards.png">
|
||||
<CardTitle>لوحات المعلومات والتقارير</CardTitle>
|
||||
أنشئ لوحات معلومات مخصصة باستخدام عناصر واجهة في الوقت الفعلي.
|
||||
<br />تتبّع مقاييس خط العمل، وأداء الفريق، ومؤشرات الأداء الرئيسية للأعمال باستخدام مخططات وعوامل تصفية قابلة للتهيئة.
|
||||
<br />تتبّع مقاييس المسار، وأداء الفريق، ومؤشرات الأداء الرئيسية للأعمال باستخدام مخططات وعوامل تصفية قابلة للتهيئة.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/ar/user-guide/permissions-access/overview" img="/images/user-guide/halftone/permissions.png">
|
||||
<CardTitle>الصلاحيات والتحكم في الوصول</CardTitle>
|
||||
تحكم في الوصول قائم على الأدوار على كل المستويات — الكائنات والحقول والسجلات الفردية.
|
||||
<br />قم بتهيئة تسجيل الدخول الأحادي (SSO) باستخدام SAML أو OIDC. تسجلات التدقيق تتعقّب من فعل ماذا.
|
||||
<br />قم بتهيئة تسجيل الدخول الأحادي (SSO) باستخدام SAML أو OIDC. سجلات التدقيق تتعقّب من فعل ماذا.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/ar/developers/extend/api" img="/images/user-guide/halftone/dev-api.png">
|
||||
|
||||
@@ -349,6 +349,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Abyste deklarovali své parametry **jen jednou** a obsloužili obě rozhraní, definujte jedno JSON Schema (`InputJsonSchema`) a převeďte jej pro workflow akci pomocí `jsonSchemaToInputSchema` z `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` přebírá JSON Schema přímo, zatímco `workflowActionTriggerSettings.inputSchema` očekává Twenty `InputSchema`:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**Napište kvalitní `description`.** Agenti AI se spoléhají na pole funkce `description` při rozhodování, kdy nástroj použít. Buďte konkrétní ohledně toho, co nástroj dělá a kdy se má volat.
|
||||
</Note>
|
||||
@@ -356,6 +382,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Pomocné nástroje za běhu.** `twenty-sdk/utils` znovu exportuje malé pomocné nástroje pro běh, takže handlery nikdy neimportují přímo z `twenty-shared`. Například `isDefined(value)` vrací `false` jak pro `null`, tak pro `undefined` — použijte jej k bezpečnému zúžení volitelných vstupů handleru, které mohou za běhu dorazit jako `null`, i když jsou typované jako `T | undefined`:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Instalační hooky** — předinstalační a poinstalační handlery — sdílejí toto běhové prostředí, ale deklarují se vlastními funkcemi `define` a nepřebírají nastavení spouštěče (triggeru). Viz [Instalační hooky](/l/cs/developers/extend/apps/config/install-hooks) pro `definePreInstallLogicFunction` a `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -81,7 +81,7 @@ Spouštěče jsou výchozím bodem pracovního postupu — událost nebo podmín
|
||||
|
||||
## Zobrazení
|
||||
|
||||
Zobrazení záznamů si můžete přizpůsobit pomocí pohledů a pro každý pohled nastavit různé filtry, rozvržení a možnosti řazení.
|
||||
Zobrazení záznamů si můžete přizpůsobit pomocí zobrazení a pro každé zobrazení nastavit různé filtry, rozvržení a možnosti řazení.
|
||||
|
||||
## Upsert
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ Levý postranní panel vám poskytuje:
|
||||
* **Vyhledávání** — stiskněte `/` pro okamžité zaměření, vyhledává napříč všemi objekty
|
||||
* **Nastavení** — přístup vlevo nahoře
|
||||
* **Oblíbené** — připnutá zobrazení, jedinečná pro každého uživatele
|
||||
* **Zkratky objektů** — rychlý přístup k People, Companies, Opportunities atd.
|
||||
* **Workflows** — vytvářejte automatizace
|
||||
* **Zkratky objektů** — rychlý přístup k osobám, společnostem, příležitostem atd.
|
||||
* **Pracovní postupy** — vytvářejte automatizace
|
||||
|
||||
Přetažením položek změňte jejich pořadí, vytvářejte složky pro seskupení souvisejících objektů, skryjte to, co nepoužíváte.
|
||||
|
||||
@@ -41,13 +41,13 @@ Stiskněte `Cmd+K` (Mac) nebo `Ctrl+K` (Windows) — nebo klikněte na tři teč
|
||||
|
||||
## Hledat
|
||||
|
||||
Dostupné přes Command Menu, v horní části navigačního panelu nebo stisknutím `/`. Vyhledávání funguje napříč všemi objekty.
|
||||
Dostupné přes nabídku příkazů, v horní části navigačního panelu nebo stisknutím `/`. Vyhledávání funguje napříč všemi objekty.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## Postranní panel
|
||||
|
||||
Kliknutím na záznam otevřete postranní panel vpravo — rychlý přehled klíčových informací o záznamu bez opuštění aktuální stránky. Kliknutím na **Open** přejdete na stránku plného záznamu.
|
||||
Kliknutím na záznam otevřete postranní panel vpravo — rychlý přehled klíčových informací o záznamu bez opuštění aktuální stránky. Kliknutím na **Otevřít** přejdete na stránku plného záznamu.
|
||||
|
||||
<img src="/images/user-guide/home/side-panel.png" style={{width:'100%'}} />
|
||||
|
||||
@@ -56,8 +56,8 @@ Kliknutím na záznam otevřete postranní panel vpravo — rychlý přehled kl
|
||||
Každý objekt podporuje více zobrazení — neomezeně na objekt. Pomocí rozbalovací nabídky vlevo nahoře mezi nimi přepínejte.
|
||||
|
||||
* **Tabulka** — řádky a sloupce ve stylu tabulkového procesoru se seskupováním, inline úpravami a přizpůsobením sloupců
|
||||
* **Kanban** — karty přetažením, uspořádané podle vybraného pole, ideální pro pipeline
|
||||
* **Kalendář** — záznamy zakreslené podle datového pole pro časové plánování
|
||||
* **Kanban** — karty přetažením, uspořádané podle vybraného pole, ideální pro prodejní procesy
|
||||
* **Kalendář** — záznamy zakreslené podle pole s datem pro časové plánování
|
||||
|
||||
Každé zobrazení si ukládá vlastní filtry, řazení a viditelnost polí. Sdílejte zobrazení se svým pracovním prostorem nebo je ponechte soukromá. Přidejte si zobrazení do oblíbených pro rychlý přístup z postranního panelu.
|
||||
|
||||
|
||||
@@ -17,12 +17,12 @@ Twenty je platforma, na které můžete stavět, ne produkt, který jen nakonfig
|
||||
Agenti pracují přímo ve vašem datovém modelu se skutečnými oprávněními. Dovednosti, nástroje, MCP.
|
||||
</Card>
|
||||
<Card img="/images/user-guide/halftone/permissions.png">
|
||||
<CardTitle>Zabezpeřitelná rozšiřitelnost</CardTitle>
|
||||
Flexibilita nástrojů typu "vibe-coded" na bezpečných základech.
|
||||
<CardTitle>Zabezpečená rozšiřitelnost</CardTitle>
|
||||
Flexibilita "vibe-coded" nástrojů na bezpečných základech.
|
||||
</Card>
|
||||
<Card img="/images/user-guide/halftone/dev-api.png">
|
||||
<CardTitle>Moderní stack</CardTitle>
|
||||
React, TypeScript. Váš tým už ví, jak Twenty rozšiřovat. Žádné proprietární jazyky, žádné gatekeepingové bariéry.
|
||||
React, TypeScript. Váš tým už ví, jak Twenty rozšiřovat. Žádné proprietární jazyky, žádný gatekeeping.
|
||||
</Card>
|
||||
<Card img="/images/user-guide/halftone/dev-self-host.png">
|
||||
<CardTitle>Bez uzamčení</CardTitle>
|
||||
@@ -35,9 +35,11 @@ Twenty je platforma, na které můžete stavět, ne produkt, který jen nakonfig
|
||||
* **Velké podniky nahrazující Salesforce** — váš tým tráví víc času bojem s nástrojem než jeho používáním.
|
||||
Cítíte se uzamčeni a náklady neustále rostou.
|
||||
* **Startupy s technickými zakladateli** — přerostli jste tabulky a Notion. Máte velké ambice a chcete CRM, které s vámi poroste.
|
||||
* **GTM týmy hledající výhodu** — chcete si vybudovat vlastní lead scoring, vlastní enrichment, vlastní outbound workflows.
|
||||
* **Organizace dbající na soukromí** — potřebujete self-hosting a plné vlastnictví svých dat od začátku do konce. Regulatorně,
|
||||
smluvně nebo prostě z principu.
|
||||
* **GTM týmy hledající výhodu** — chcete si vybudovat
|
||||
vlastní lead scoring, vlastní enrichment, vlastní
|
||||
odchozí pracovní postupy.
|
||||
* **Organizace dbající na soukromí** — potřebujete self-hosting a plné vlastnictví svých dat od začátku do konce. Regulatorní,
|
||||
smluvní, nebo prostě z principu.
|
||||
* **Salesforce partneři** —
|
||||
vaši vývojáři jsou unavení z toho, že musí vašim klientům představovat další a další zvýšení licenčních poplatků.
|
||||
Chcete lepší DX a dodávat projekty rychleji s nižšími licenčními náklady pro své klienty.
|
||||
|
||||
@@ -6,7 +6,7 @@ icon: hvězda
|
||||
|
||||
import { CardTitle } from "/snippets/card-title.mdx"
|
||||
|
||||
Twenty je plnohodnotná platforma CRM. Zde je přehled toho, co s ní můžete vytvořit.
|
||||
Twenty je plnohodnotná platforma CRM. Zde je, co s ní můžete vytvořit.
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card href="/l/cs/user-guide/data-model/overview" img="/images/user-guide/halftone/data-model.png">
|
||||
@@ -22,9 +22,9 @@ Twenty je plnohodnotná platforma CRM. Zde je přehled toho, co s ní můžete v
|
||||
</Card>
|
||||
|
||||
<Card href="/l/cs/user-guide/workflows/overview" img="/images/user-guide/halftone/workflows.png">
|
||||
<CardTitle>Workflows & automatizace</CardTitle>
|
||||
<CardTitle>Pracovní postupy & automatizace</CardTitle>
|
||||
Automatizujte jakýkoli obchodní proces bez psaní kódu.
|
||||
<br />Spouštějte workflows při změnách záznamů, podle harmonogramu, ručních akcí nebo příchozích webhooks.
|
||||
<br />Spouštějte pracovní postupy při změnách záznamů, podle harmonogramu, ručních akcí nebo příchozích webhooků.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/cs/user-guide/calendar-emails/overview" img="/images/user-guide/halftone/calendar-emails.png">
|
||||
|
||||
@@ -348,6 +348,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Um deine Parameter **einmal** zu deklarieren und beide Oberflächen zu bedienen, definiere ein einziges JSON Schema (`InputJsonSchema`) und konvertiere es für die Workflow-Aktion mit `jsonSchemaToInputSchema` aus `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` nimmt das JSON Schema direkt, während `workflowActionTriggerSettings.inputSchema` Twenty's `InputSchema` erwartet:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**Schreiben Sie eine gute `description`.** KI-Agenten verlassen sich auf das `description`-Feld der Funktion, um zu entscheiden, wann das Tool verwendet werden soll. Seien Sie konkret darin, was das Tool tut und wann es aufgerufen werden soll.
|
||||
</Note>
|
||||
@@ -355,6 +381,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Runtime-Hilfsfunktionen.** `twenty-sdk/utils` exportiert kleine Runtime-Hilfsfunktionen erneut, sodass Handler niemals direkt aus `twenty-shared` importieren. Zum Beispiel gibt `isDefined(value)` für sowohl `null` als auch `undefined` den Wert `false` zurück – verwenden Sie es, um optionale Handler-Eingaben sicher einzugrenzen, die zur Laufzeit als `null` ankommen können, selbst wenn sie als `T | undefined` typisiert sind:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Installations-Hooks** – Vorinstallations- und Nachinstallations-Handler – teilen sich diese Laufzeit, werden aber mit ihren eigenen define-Funktionen deklariert und verwenden keine Trigger-Einstellungen. Siehe [Installations-Hooks](/l/de/developers/extend/apps/config/install-hooks) für `definePreInstallLogicFunction` und `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Glossar
|
||||
icon: Buch
|
||||
icon: book
|
||||
description: Schlüsselbegriffe, die in Twenty verwendet werden.
|
||||
---
|
||||
|
||||
@@ -10,7 +10,7 @@ API (Application Programming Interface) ermöglicht es Ihnen, Twenty mit anderen
|
||||
|
||||
## Apps
|
||||
|
||||
Apps sind benutzerdefinierte Erweiterungen, die als Code erstellt werden und Datenmodelle sowie Logikfunktionen definieren können. Damit können Entwickler wiederverwendbare Anpassungen erstellen, die in mehreren Workspaces bereitgestellt werden können.
|
||||
Apps sind benutzerdefinierte Erweiterungen, die als Code erstellt werden und Datenmodelle sowie Logikfunktionen definieren können. Damit können Entwickler wiederverwendbare Anpassungen erstellen, die in mehreren Arbeitsbereichen bereitgestellt werden können.
|
||||
|
||||
## Code-Aktionen
|
||||
|
||||
@@ -73,11 +73,11 @@ Standardfelder sind vorgefertigte Datenfelder, die standardmäßig mit Objekten
|
||||
|
||||
## Aufgaben
|
||||
|
||||
Tasks in Twenty CRM sind zugewiesene Aktivitäten in Bezug auf Kontakte, Accounts oder Opportunities.
|
||||
Aufgaben in Twenty CRM sind zugewiesene Aktivitäten in Bezug auf Kontakte, Accounts oder Opportunities.
|
||||
|
||||
## Auslöser
|
||||
|
||||
Trigger sind der Ausgangspunkt eines Workflows — das Ereignis oder die Bedingung, die die Automatisierung auslöst. Beispiele sind das Erstellen von Datensätzen, Aktualisierungen von Datensätzen, Webhooks oder geplante Zeitpunkte.
|
||||
Auslöser sind der Ausgangspunkt eines Workflows — das Ereignis oder die Bedingung, die die Automatisierung auslöst. Beispiele sind das Erstellen von Datensätzen, Aktualisierungen von Datensätzen, Webhooks oder geplante Zeitpunkte.
|
||||
|
||||
## Ansichten
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Layout
|
||||
description: Wie Sie in Twenty navigieren, darin stöbern und Datensätze anzeigen.
|
||||
description: Wie Sie in Twenty navigieren, durchsuchen und Datensätze anzeigen.
|
||||
icon: table-columns
|
||||
---
|
||||
|
||||
@@ -16,10 +16,10 @@ In der Mitte des Bildschirms befinden sich Ihre Datensätze – Personen, Untern
|
||||
|
||||
Die linke Seitenleiste bietet Ihnen:
|
||||
|
||||
* **Arbeitsbereichs-Umschalter** — wechseln Sie zwischen Arbeitsbereichen oder erstellen Sie einen neuen (Dropdown oben)
|
||||
* **Suche** — drücken Sie `/`, um sie sofort zu fokussieren; durchsucht alle Objekte
|
||||
* **Einstellungen** — Zugriff über die obere linke Ecke
|
||||
* **Favoriten** — angeheftete Ansichten, eindeutig pro Benutzer
|
||||
* **Arbeitsbereichsumschalter** — zwischen Arbeitsbereichen wechseln oder einen neuen erstellen (Dropdown oben)
|
||||
* **Suche** — Drücken Sie `/`, um den Fokus sofort in das Suchfeld zu setzen; sie durchsucht alle Objekte
|
||||
* **Einstellungen** — oben links aufrufen
|
||||
* **Favoriten** — angeheftete Ansichten, je Benutzer individuell
|
||||
* **Objekt-Schnellzugriffe** — schneller Zugriff auf Personen, Unternehmen, Verkaufschancen usw.
|
||||
* **Workflows** — Automatisierungen erstellen
|
||||
|
||||
@@ -41,13 +41,13 @@ Drücken Sie `Cmd+K` (Mac) oder `Ctrl+K` (Windows) – oder klicken Sie auf die
|
||||
|
||||
## Suche
|
||||
|
||||
Aufrufbar über das Befehl-Menü, oben in der Navigationsleiste oder durch Drücken von `/`. Die Suche funktioniert über alle Objekte hinweg.
|
||||
Aufrufbar über das Befehlsmenü, oben in der Navigationsleiste oder durch Drücken von `/`. Die Suche funktioniert über alle Objekte hinweg.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## Seitenbereich
|
||||
|
||||
Klicken Sie auf einen Datensatz, um den Seitenbereich auf der rechten Seite zu öffnen – eine schnelle Übersicht über die wichtigsten Informationen des Datensatzes, ohne die aktuelle Seite zu verlassen. Klicken Sie auf **Open**, um zur vollständigen Datensatzseite zu wechseln.
|
||||
Klicken Sie auf einen Datensatz, um den Seitenbereich auf der rechten Seite zu öffnen – eine schnelle Übersicht über die wichtigsten Informationen des Datensatzes, ohne die aktuelle Seite zu verlassen. Klicken Sie auf **Öffnen**, um zur vollständigen Datensatzseite zu wechseln.
|
||||
|
||||
<img src="/images/user-guide/home/side-panel.png" style={{width:'100%'}} />
|
||||
|
||||
@@ -56,7 +56,7 @@ Klicken Sie auf einen Datensatz, um den Seitenbereich auf der rechten Seite zu
|
||||
Jedes Objekt unterstützt mehrere Ansichten – unbegrenzt pro Objekt. Verwenden Sie das Dropdown oben links, um zwischen ihnen zu wechseln.
|
||||
|
||||
* **Tabelle** — zeilen- und spaltenbasiert wie eine Tabellenkalkulation, mit Gruppierung, Inline-Bearbeitung und Spaltenanpassung
|
||||
* **Kanban** — Drag-and-drop-Karten, die nach einem Auswahlsfeld organisiert sind, ideal für Pipelines
|
||||
* **Kanban** — Drag-and-Drop-Karten, die nach einem Auswahlfeld organisiert sind, ideal für Pipelines
|
||||
* **Kalender** — Datensätze, die nach einem Datumsfeld für zeitbasierte Planung dargestellt werden
|
||||
|
||||
Jede Ansicht speichert ihre eigenen Filter, Sortierung und Feldsichtbarkeit. Teilen Sie Ansichten mit Ihrem Arbeitsbereich oder behalten Sie sie privat. Markieren Sie Ansichten als Favoriten, um schnell über die Seitenleiste darauf zuzugreifen.
|
||||
@@ -65,7 +65,7 @@ Jede Ansicht speichert ihre eigenen Filter, Sortierung und Feldsichtbarkeit. Tei
|
||||
|
||||
## Datensatzseiten
|
||||
|
||||
Wenn Sie einen Datensatz öffnen, wird die Detailseite aus konfigurierbaren **Tabs** und **Widgets** aufgebaut. Fügen Sie Widgets in einem Raster hinzu, entfernen, ordnen Sie sie neu an und ändern Sie ihre Größe – Felder, verwandte Datensätze, E-Mails, Zeitleiste, Aufgaben, Notizen, Dateien, Diagramme, iframes und mehr. Jeder Objekttyp hat sein eigenes Layout.
|
||||
Wenn Sie einen Datensatz öffnen, wird die Detailseite aus konfigurierbaren **Tabs** und **Widgets** aufgebaut. Fügen Sie Widgets in einem Raster hinzu, entfernen Sie sie, ordnen Sie sie neu an und ändern Sie ihre Größe – Felder, verwandte Datensätze, E-Mails, Zeitleiste, Aufgaben, Notizen, Dateien, Diagramme, Iframes und mehr. Jeder Objekttyp hat sein eigenes Layout.
|
||||
|
||||
<Card title="Ausführliche Layout-Anleitung" icon="arrow-right" href="/l/de/user-guide/layout/overview">
|
||||
Navigation, Ansichten, Datensatzseiten – detaillierte Referenz und Anleitungen.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
title: Wichtige Funktionen
|
||||
description: Eine Tour durch alles, was Twenty kann – von benutzerdefinierten Datenmodellen bis hin zu KI-gestützter Automatisierung.
|
||||
icon: Stern
|
||||
icon: star
|
||||
---
|
||||
|
||||
import { CardTitle } from "/snippets/card-title.mdx"
|
||||
|
||||
Twenty ist eine funktionsreiche CRM-Plattform. Hier ist, was Sie damit erstellen können.
|
||||
Twenty ist eine funktionsreiche CRM-Plattform. Das können Sie damit erstellen.
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card href="/l/de/user-guide/data-model/overview" img="/images/user-guide/halftone/data-model.png">
|
||||
@@ -29,7 +29,7 @@ Twenty ist eine funktionsreiche CRM-Plattform. Hier ist, was Sie damit erstellen
|
||||
|
||||
<Card href="/l/de/user-guide/calendar-emails/overview" img="/images/user-guide/halftone/calendar-emails.png">
|
||||
<CardTitle>Kalender- & E-Mail-Synchronisierung</CardTitle>
|
||||
Verbinden Sie Ihr Google-Workspace- oder Microsoft-365-Konto.
|
||||
Verbinden Sie Ihr Google Workspace- oder Microsoft 365-Konto.
|
||||
<br />E-Mails und Kalenderereignisse erscheinen automatisch in den relevanten CRM-Datensätzen.
|
||||
</Card>
|
||||
|
||||
@@ -47,7 +47,7 @@ Twenty ist eine funktionsreiche CRM-Plattform. Hier ist, was Sie damit erstellen
|
||||
<Card href="/l/de/user-guide/permissions-access/overview" img="/images/user-guide/halftone/permissions.png">
|
||||
<CardTitle>Berechtigungen & Zugriffskontrolle</CardTitle>
|
||||
Rollenbasierte Zugriffskontrolle auf jeder Ebene – Objekte, Felder und einzelne Datensätze.
|
||||
<br />Konfigurieren Sie SSO mit SAML oder OIDC. Prüfprotokolle verfolgen, wer was getan hat.
|
||||
<br />Konfigurieren Sie SSO mit SAML oder OIDC. Audit-Logs protokollieren, wer was getan hat.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/de/developers/extend/api" img="/images/user-guide/halftone/dev-api.png">
|
||||
|
||||
@@ -349,6 +349,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Para declarar tus parámetros **una sola vez** y atender ambas superficies, define un único JSON Schema (`InputJsonSchema`) y conviértelo para la acción de workflow con `jsonSchemaToInputSchema` de `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` usa directamente el JSON Schema, mientras que `workflowActionTriggerSettings.inputSchema` espera el `InputSchema` de Twenty:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**Escribe una buena `description`.** Los agentes de IA dependen del campo `description` de la función para decidir cuándo usar la herramienta. Sé específico acerca de lo que hace la herramienta y cuándo debe invocarse.
|
||||
</Note>
|
||||
@@ -356,6 +382,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Utilidades en tiempo de ejecución.** `twenty-sdk/utils` vuelve a exportar pequeñas utilidades en tiempo de ejecución para que los handlers nunca importen directamente desde `twenty-shared`. Por ejemplo, `isDefined(value)` devuelve `false` tanto para `null` como para `undefined` — utilízalo para acotar de forma segura las entradas opcionales de los handlers, que pueden llegar como `null` en tiempo de ejecución incluso cuando están tipadas como `T | undefined`:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Hooks de instalación** — los controladores de preinstalación y postinstalación — comparten este entorno de ejecución, pero se declaran con sus propias funciones 'define' y no aceptan configuraciones de disparador. Consulta [Hooks de instalación](/l/es/developers/extend/apps/config/install-hooks) para `definePreInstallLogicFunction` y `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -12,11 +12,11 @@ Todo en Twenty se basa en **objetos** y **campos**, los componentes básicos de
|
||||
|
||||
Los objetos son las tablas que contienen tus datos. Twenty incluye objetos estándar de forma predeterminada:
|
||||
|
||||
* **Companies** — Organizaciones con las que haces negocios
|
||||
* **People** — Contactos individuales
|
||||
* **Opportunities** — Acuerdos en tu flujo de ventas
|
||||
* **Tasks** — Elementos de acción para tu equipo
|
||||
* **Notes** — Texto de formato libre vinculado a registros
|
||||
* **Empresas** — Organizaciones con las que haces negocios
|
||||
* **Personas** — Contactos individuales
|
||||
* **Oportunidades** — Acuerdos en tu flujo de ventas
|
||||
* **Tareas** — Acciones para tu equipo
|
||||
* **Notas** — Texto de formato libre vinculado a registros
|
||||
|
||||
También puedes crear **objetos personalizados** para todo lo que tu negocio necesite: proyectos, tickets de soporte, productos, contratos o cualquier otra cosa.
|
||||
|
||||
@@ -28,13 +28,13 @@ Los campos son las propiedades de cada objeto. Twenty admite una amplia variedad
|
||||
| ------------- | ----------------------------------------------------------------------------------------------------------- |
|
||||
| **Básico** | Texto, Número, Booleano, Fecha, Moneda, Valoración, Selección |
|
||||
| **Compuesto** | Dirección (calle, ciudad, estado, código postal), Nombre completo, Enlaces, Teléfonos, Correos electrónicos |
|
||||
| **Especial** | Relación, Archivo adjunto, JSON, Actor (quién creó/modificó) |
|
||||
| **Especial** | Relación, Archivo adjunto, JSON, Autor (quién creó/modificó) |
|
||||
|
||||
Cada objeto también obtiene campos de sistema automáticos: `id`, `createdAt`, `updatedAt`, `createdBy` y `position`.
|
||||
|
||||
## Relaciones
|
||||
|
||||
Los objetos se conectan entre sí mediante relaciones. Una Company tiene muchas People, una Opportunity pertenece a una Company, y así sucesivamente. Puedes crear relaciones personalizadas entre cualquier objeto, incluidas relaciones de muchos a muchos.
|
||||
Los objetos se conectan entre sí mediante relaciones. Una empresa tiene muchas personas; una oportunidad pertenece a una empresa, y así sucesivamente. Puedes crear relaciones personalizadas entre cualquier objeto, incluidas relaciones de muchos a muchos.
|
||||
|
||||
## Por qué esto es tan potente
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ La barra lateral izquierda te ofrece:
|
||||
* **Búsqueda** — presiona `/` para enfocarla al instante; busca en todos los objetos
|
||||
* **Ajustes** — accede desde la parte superior izquierda
|
||||
* **Favoritos** — vistas fijadas, únicas por usuario
|
||||
* **Accesos directos a objetos** — acceso rápido a People, Companies, Opportunities, etc.
|
||||
* **Workflows** — crea automatizaciones
|
||||
* **Accesos directos a objetos** — acceso rápido a Personas, Empresas, Oportunidades, etc.
|
||||
* **Flujos de trabajo** — crea automatizaciones
|
||||
|
||||
Arrastra elementos para reordenarlos, crea carpetas para agrupar objetos relacionados y oculta lo que no uses.
|
||||
|
||||
@@ -41,13 +41,13 @@ Pulsa `Cmd+K` (Mac) o `Ctrl+K` (Windows), o haz clic en los tres puntos de la es
|
||||
|
||||
## Buscar
|
||||
|
||||
Accesible mediante el Command Menu, la parte superior de la barra de navegación o presionando `/`. La búsqueda funciona en todos los objetos.
|
||||
Accesible mediante el Menú de Comandos, en la parte superior de la barra de navegación o presionando `/`. La búsqueda funciona en todos los objetos.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## Panel lateral
|
||||
|
||||
Haz clic en un registro para abrir el panel lateral a la derecha: una vista rápida de la información clave del registro sin salir de la página actual. Haz clic en **Open** para ir a la página completa del registro.
|
||||
Haz clic en un registro para abrir el panel lateral a la derecha: una vista rápida de la información clave del registro sin salir de la página actual. Haz clic en **Abrir** para ir a la página completa del registro.
|
||||
|
||||
<img src="/images/user-guide/home/side-panel.png" style={{width:'100%'}} />
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Cada flujo de trabajo tiene tres partes:
|
||||
|
||||
| Disparador | Cuándo se activa |
|
||||
| ---------------------- | ------------------------------------------------------------------------------------------------- |
|
||||
| **Evento de registro** | Se crea, actualiza, elimina o upsertea un registro |
|
||||
| **Evento de registro** | Se crea, actualiza, elimina o se realiza un upsert en un registro |
|
||||
| **Manual** | Un usuario hace clic en un botón (en un único registro, en múltiples registros o de forma global) |
|
||||
| **Programación** | En un intervalo recurrente (sintaxis cron) |
|
||||
| **Webhook** | Un sistema externo envía un HTTP POST |
|
||||
@@ -31,7 +31,7 @@ Cada flujo de trabajo tiene tres partes:
|
||||
|
||||
Los flujos de trabajo pueden encadenar cualquier combinación de:
|
||||
|
||||
* **Operaciones de registro** — Crear, actualizar, buscar, eliminar o upsertear registros
|
||||
* **Operaciones de registro** — Crear, actualizar, buscar, eliminar o realizar un upsert en registros
|
||||
* **Enviar correo electrónico** — Enviar o redactar correos electrónicos desde cuentas conectadas
|
||||
* **Solicitud HTTP** — Llamar a cualquier API externa
|
||||
* **Código** — Ejecutar JavaScript personalizado para lógica compleja
|
||||
|
||||
@@ -349,6 +349,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Pour déclarer vos paramètres **une seule fois** et les utiliser sur les deux surfaces, définissez un seul schéma JSON (`InputJsonSchema`) et convertissez-le pour l’action de workflow avec `jsonSchemaToInputSchema` depuis `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` prend directement le schéma JSON, tandis que `workflowActionTriggerSettings.inputSchema` attend le `InputSchema` de Twenty :
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**Rédigez une bonne `description`.** Les agents IA s'appuient sur le champ `description` de la fonction pour décider quand utiliser l'outil. Soyez précis sur ce que fait l'outil et quand il doit être appelé.
|
||||
</Note>
|
||||
@@ -356,6 +382,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Aides à l’exécution.** `twenty-sdk/utils` réexporte de petites aides à l’exécution afin que les gestionnaires n’importent jamais directement depuis `twenty-shared`. Par exemple, `isDefined(value)` renvoie `false` à la fois pour `null` et `undefined` — utilisez-le pour restreindre en toute sécurité les entrées de gestionnaire optionnelles, qui peuvent arriver sous forme de `null` à l’exécution même lorsqu’elles sont typées `T | undefined` :
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Hooks d'installation** — les gestionnaires de pré-installation et de post-installation — partagent ce runtime mais sont déclarés avec leurs propres fonctions define et ne prennent pas de paramètres de déclenchement. Voir [hooks d'installation](/l/fr/developers/extend/apps/config/install-hooks) pour `definePreInstallLogicFunction` et `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -63,7 +63,7 @@ Les opportunités dans Twenty CRM sont des affaires ou ventes potentielles avec
|
||||
|
||||
Un enregistrement indique une instance d'objet, comme un compte ou un contact spécifique.
|
||||
|
||||
## Champs de relation
|
||||
## Champs de Relation
|
||||
|
||||
Les Champs de Relation créent des connexions entre différents objets, vous permettant de lier des enregistrements ensemble (comme relier une Personne à une Entreprise).
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ La barre latérale gauche vous donne :
|
||||
* **Recherche** — appuyez sur `/` pour y accéder instantanément, recherche dans tous les objets
|
||||
* **Paramètres** — accessible depuis le coin supérieur gauche
|
||||
* **Favoris** — vues épinglées, propres à chaque utilisateur
|
||||
* **Raccourcis d'objet** — accès rapide à People, Companies, Opportunities, etc.
|
||||
* **Raccourcis d'objet** — accès rapide aux Contacts, Entreprises, Opportunités, etc.
|
||||
* **Workflows** — créez des automatisations
|
||||
|
||||
Faites glisser les éléments pour les réorganiser, créez des dossiers pour regrouper les objets liés, masquez ce que vous n'utilisez pas.
|
||||
@@ -41,13 +41,13 @@ Appuyez sur `Cmd+K` (Mac) ou `Ctrl+K` (Windows) — ou cliquez sur les trois poi
|
||||
|
||||
## Recherche
|
||||
|
||||
Accessible via le menu Commande, en haut de la barre de navigation, ou en appuyant sur `/`. La recherche fonctionne sur tous les objets.
|
||||
Accessible via le menu de commandes, en haut de la barre de navigation, ou en appuyant sur `/`. La recherche fonctionne sur tous les objets.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## Panneau latéral
|
||||
|
||||
Cliquez sur un enregistrement pour ouvrir le panneau latéral sur la droite — un aperçu rapide des informations clés de l'enregistrement sans quitter la page actuelle. Cliquez sur **Open** pour accéder à la page complète de l'enregistrement.
|
||||
Cliquez sur un enregistrement pour ouvrir le panneau latéral sur la droite — un aperçu rapide des informations clés de l'enregistrement sans quitter la page actuelle. Cliquez sur **Ouvrir** pour accéder à la page complète de l'enregistrement.
|
||||
|
||||
<img src="/images/user-guide/home/side-panel.png" style={{width:'100%'}} />
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ icon: étoile
|
||||
|
||||
import { CardTitle } from "/snippets/card-title.mdx"
|
||||
|
||||
Twenty est une plateforme CRM complète. Voici ce que vous pouvez créer avec.
|
||||
Twenty est une plateforme CRM complète. Voici ce que vous pouvez créer avec Twenty.
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card href="/l/fr/user-guide/data-model/overview" img="/images/user-guide/halftone/data-model.png">
|
||||
@@ -22,9 +22,9 @@ Twenty est une plateforme CRM complète. Voici ce que vous pouvez créer avec.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/fr/user-guide/workflows/overview" img="/images/user-guide/halftone/workflows.png">
|
||||
<CardTitle>Workflows et automatisation</CardTitle>
|
||||
<CardTitle>Flux de travail et automatisation</CardTitle>
|
||||
Automatisez n’importe quel processus métier sans écrire de code.
|
||||
<br />Déclenchez des workflows lors de modifications d’enregistrements, selon des plannings, par actions manuelles ou par webhooks entrants.
|
||||
<br />Déclenchez des flux de travail lors de modifications d’enregistrements, selon des planifications, par des actions manuelles ou via des webhooks entrants.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/fr/user-guide/calendar-emails/overview" img="/images/user-guide/halftone/calendar-emails.png">
|
||||
@@ -47,7 +47,7 @@ Twenty est une plateforme CRM complète. Voici ce que vous pouvez créer avec.
|
||||
<Card href="/l/fr/user-guide/permissions-access/overview" img="/images/user-guide/halftone/permissions.png">
|
||||
<CardTitle>Permissions et contrôle d’accès</CardTitle>
|
||||
Contrôle d’accès basé sur les rôles à tous les niveaux — objets, champs et enregistrements individuels.
|
||||
<br />Configurez le SSO avec SAML ou OIDC. Les journaux d’audit suivent qui a fait quoi.
|
||||
<br />Configurez le SSO avec SAML ou OIDC. Les journaux d’audit consignent qui a fait quoi.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/fr/developers/extend/api" img="/images/user-guide/halftone/dev-api.png">
|
||||
@@ -65,6 +65,6 @@ Twenty est une plateforme CRM complète. Voici ce que vous pouvez créer avec.
|
||||
<Card href="/l/fr/developers/self-host/self-host" img="/images/user-guide/halftone/dev-self-host.png">
|
||||
<CardTitle>Auto-hébergement</CardTitle>
|
||||
Exécutez Twenty sur votre propre infrastructure avec une seule commande Docker Compose.
|
||||
<br />Contrôle total sur vos données, mises à jour selon votre planning.
|
||||
<br />Contrôle total sur vos données, mises à jour selon votre calendrier.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@@ -348,6 +348,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Per dichiarare i tuoi parametri **una sola volta** e servire entrambe le superfici, definisci un unico JSON Schema (`InputJsonSchema`) e convertilo per l'azione del workflow con `jsonSchemaToInputSchema` da `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` accetta direttamente il JSON Schema, mentre `workflowActionTriggerSettings.inputSchema` si aspetta l'`InputSchema` di Twenty:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**Scrivi una buona `description`.** Gli agenti IA fanno affidamento sul campo `description` della funzione per decidere quando usare lo strumento. Sii specifico su cosa fa lo strumento e quando dovrebbe essere invocato.
|
||||
</Note>
|
||||
@@ -355,6 +381,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Helper di runtime.** `twenty-sdk/utils` riesporta piccoli helper di runtime in modo che gli handler non importino mai direttamente da `twenty-shared`. Per esempio, `isDefined(value)` restituisce `false` sia per `null` che per `undefined` — usalo per restringere in modo sicuro gli input opzionali degli handler, che possono arrivare come `null` a runtime anche quando sono tipizzati come `T | undefined`:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Hook di installazione** — i gestori di pre-installazione e post-installazione — condividono questo runtime, ma sono dichiarati con le proprie funzioni di definizione e non accettano impostazioni dei trigger. Consulta [Hook di installazione](/l/it/developers/extend/apps/config/install-hooks) per `definePreInstallLogicFunction` e `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -15,7 +15,7 @@ Gli oggetti sono le tabelle che contengono i tuoi dati. Twenty include oggetti s
|
||||
* **Aziende** — Organizzazioni con cui fai affari
|
||||
* **Persone** — Contatti individuali
|
||||
* **Opportunità** — Trattative nella tua pipeline
|
||||
* **Attività** — Elementi di azione per il tuo team
|
||||
* **Attività** — Attività da svolgere per il tuo team
|
||||
* **Note** — Testo libero collegato ai record
|
||||
|
||||
Puoi anche creare **oggetti personalizzati** per qualsiasi esigenza della tua azienda: progetti, ticket di supporto, prodotti, contratti o qualsiasi altra cosa.
|
||||
@@ -27,8 +27,8 @@ I campi sono le proprietà su ciascun oggetto. Twenty supporta un’ampia gamma
|
||||
| Categoria | Tipi |
|
||||
| ------------- | ------------------------------------------------------------------------ |
|
||||
| **Di base** | Testo, Numero, Booleano, Data, Valuta, Valutazione, Selezione |
|
||||
| **Composito** | Indirizzo (via, città, stato, CAP), Nome completo, Link, Telefoni, Email |
|
||||
| **Speciale** | Relazione, Allegato file, JSON, Attore (chi ha creato/modificato) |
|
||||
| **Compositi** | Indirizzo (via, città, stato, CAP), Nome completo, Link, Telefoni, Email |
|
||||
| **Speciale** | Relazione, Allegato file, JSON, Utente (chi ha creato/modificato) |
|
||||
|
||||
Ogni oggetto ottiene anche campi di sistema automatici: `id`, `createdAt`, `updatedAt`, `createdBy` e `position`.
|
||||
|
||||
@@ -38,7 +38,7 @@ Gli oggetti si collegano tra loro tramite relazioni. Un’Azienda ha molte Perso
|
||||
|
||||
## Cosa rende tutto questo potente
|
||||
|
||||
A differenza dei CRM tradizionali, in cui sei limitato a campi predefiniti su oggetti predefiniti, Twenty ti permette di modellare i tuoi dati esattamente come funziona la tua azienda. Gli oggetti personalizzati ricevono lo stesso trattamento di prima classe di quelli integrati, inclusi endpoint API, viste, autorizzazioni e trigger di workflow.
|
||||
A differenza dei CRM tradizionali, in cui sei limitato a campi predefiniti su oggetti predefiniti, Twenty ti permette di modellare i tuoi dati esattamente come funziona la tua azienda. Gli oggetti personalizzati ricevono lo stesso trattamento di prima classe di quelli integrati, inclusi endpoint API, viste, autorizzazioni e trigger dei flussi di lavoro.
|
||||
|
||||
<Card title="Approfondisci il modello di dati" icon="arrow-right" href="/l/it/user-guide/data-model/overview">
|
||||
Riferimento completo su oggetti, campi, relazioni e su come configurarli.
|
||||
|
||||
@@ -8,7 +8,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
|
||||
## Il layout principale
|
||||
|
||||
Il centro dello schermo è dove vivono i tuoi record — persone, aziende, opportunità, attività, note, dashboard, workflow e qualsiasi oggetto personalizzato. Qui visualizzi, modifichi ed elimini i record e crei nuove viste.
|
||||
Il centro dello schermo è dove vivono i tuoi record — persone, aziende, opportunità, attività, note, dashboard, flussi di lavoro ed eventuali oggetti personalizzati. Qui visualizzi, modifichi ed elimini i record e crei nuove viste.
|
||||
|
||||
<img src="/images/user-guide/home/main-layout.png" style={{width:'100%'}} />
|
||||
|
||||
@@ -17,11 +17,11 @@ Il centro dello schermo è dove vivono i tuoi record — persone, aziende, oppor
|
||||
La barra laterale sinistra ti offre:
|
||||
|
||||
* **Selettore dello spazio di lavoro** — passa da uno spazio di lavoro all'altro o creane uno nuovo (menu a discesa in alto)
|
||||
* **Ricerca** — premi `/` per metterla subito a fuoco, esegue ricerche su tutti gli oggetti
|
||||
* **Impostazioni** — accesso dall'angolo in alto a sinistra
|
||||
* **Preferiti** — viste aggiunte ai preferiti, uniche per ogni utente
|
||||
* **Scorciatoie oggetti** — accesso rapido a Persone, Aziende, Opportunità, ecc.
|
||||
* **Workflow** — crea automazioni
|
||||
* **Ricerca** — premi `/` per attivarla immediatamente, esegue ricerche su tutti gli oggetti
|
||||
* **Impostazioni** — accessibili dall'angolo in alto a sinistra
|
||||
* **Preferiti** — viste fissate, specifiche per ogni utente
|
||||
* **Scorciatoie agli oggetti** — accesso rapido a Persone, Aziende, Opportunità, ecc.
|
||||
* **Flussi di lavoro** — crea automazioni
|
||||
|
||||
Trascina gli elementi per riordinarli, crea cartelle per raggruppare oggetti correlati, nascondi ciò che non usi.
|
||||
|
||||
@@ -41,7 +41,7 @@ Premi `Cmd+K` (Mac) o `Ctrl+K` (Windows), oppure fai clic sui tre puntini in alt
|
||||
|
||||
## Cerca
|
||||
|
||||
Accessibile tramite il Command Menu, la parte superiore della barra di navigazione o premendo `/`. La ricerca funziona su tutti gli oggetti.
|
||||
Accessibile tramite il Menu Comandi, la parte superiore della barra di navigazione o premendo `/`. La ricerca funziona su tutti gli oggetti.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
@@ -56,7 +56,7 @@ Fai clic su un record per aprire il pannello laterale a destra: una panoramica r
|
||||
Ogni oggetto supporta più viste — illimitate per oggetto. Usa il menu a discesa in alto a sinistra per passare da una vista all'altra.
|
||||
|
||||
* **Tabella** — righe e colonne in stile foglio di calcolo, con raggruppamenti, modifica in linea e personalizzazione delle colonne
|
||||
* **Kanban** — schede drag-and-drop organizzate in base a un campo di tipo select, ideale per le pipeline
|
||||
* **Kanban** — schede drag-and-drop organizzate in base a un campo di tipo selezione, ideale per le pipeline
|
||||
* **Calendario** — record posizionati su una linea temporale in base a un campo data, per pianificazioni basate sul tempo
|
||||
|
||||
Ogni vista salva i propri filtri, l'ordinamento e la visibilità dei campi. Condividi le viste con il tuo spazio di lavoro o mantienile private. Aggiungi le viste ai preferiti per un accesso rapido dalla barra laterale.
|
||||
|
||||
@@ -41,7 +41,7 @@ Twenty è una piattaforma CRM completa di tutte le funzionalità. Ecco cosa puoi
|
||||
<Card href="/l/it/user-guide/dashboards/overview" img="/images/user-guide/halftone/dashboards.png">
|
||||
<CardTitle>Dashboard e reportistica</CardTitle>
|
||||
Crea dashboard personalizzate con widget in tempo reale.
|
||||
<br />Monitora le metriche della pipeline, le performance del team e le KPI aziendali con grafici e filtri configurabili.
|
||||
<br />Monitora le metriche della pipeline, le performance del team e i KPI aziendali con grafici e filtri configurabili.
|
||||
</Card>
|
||||
|
||||
<Card href="/l/it/user-guide/permissions-access/overview" img="/images/user-guide/halftone/permissions.png">
|
||||
|
||||
@@ -348,6 +348,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
매개 변수를 **한 번만** 선언하고 두 환경 모두에서 사용하려면, 단일 JSON Schema(`InputJsonSchema`)를 정의한 후 `twenty-sdk/logic-function`의 `jsonSchemaToInputSchema`를 사용해 워크플로 작업용으로 변환하세요. `toolTriggerSettings.inputSchema`는 JSON Schema를 그대로 사용하지만, `workflowActionTriggerSettings.inputSchema`는 Twenty의 `InputSchema`를 기대합니다:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**좋은 `description`을 작성하세요.** AI 에이전트는 도구를 언제 사용할지 결정하기 위해 함수의 `description` 필드에 의존합니다. 도구가 무엇을 하는지와 언제 호출해야 하는지 구체적으로 작성하세요.
|
||||
</Note>
|
||||
@@ -355,6 +381,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**런타임 헬퍼.** `twenty-sdk/utils` 는 작은 런타임 헬퍼들을 재노출(re-export)하여, 핸들러가 `twenty-shared` 를 직접 import 하지 않도록 합니다. 예를 들어, `isDefined(value)` 는 `null` 과 `undefined` 모두에 대해 `false` 를 반환합니다. 이를 사용하면 선택적 핸들러 입력을 안전하게 좁힐 수 있습니다. 이러한 입력은 타입이 `T | undefined` 로 지정되어 있더라도, 런타임에는 `null` 로 전달될 수 있습니다.
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**설치 훅** — 사전 설치 및 사후 설치 핸들러 — 는 이 런타임을 공유하지만, 각각의 `define` 함수로 선언되며 트리거 설정을 받지 않습니다. `definePreInstallLogicFunction` 및 `definePostInstallLogicFunction` 에 대해서는 [설치 훅](/l/ko/developers/extend/apps/config/install-hooks)을 참고하세요.
|
||||
</Note>
|
||||
|
||||
@@ -25,12 +25,12 @@ Twenty는 기존 도구들과 연동되어, 수동으로 데이터를 입력하
|
||||
|
||||
이메일과 캘린더를 넘어, Twenty는 다음을 통해 외부 도구와 연동됩니다.
|
||||
|
||||
| 방법 | 사용 사례 |
|
||||
| ------------------------- | --------------------------------------- |
|
||||
| **API** | GraphQL 또는 REST API를 사용해 맞춤형 통합을 구축하세요. |
|
||||
| **웹훅** | 레코드가 변경될 때 외부 시스템으로 실시간 알림을 전송합니다. |
|
||||
| **Zapier** | 코드 작성 없이 5,000개 이상의 앱과 연동하세요. |
|
||||
| **Workflow HTTP actions** | 자동화된 워크플로우의 일부로 모든 외부 API를 호출할 수 있습니다. |
|
||||
| 방법 | 사용 사례 |
|
||||
| ----------------- | --------------------------------------- |
|
||||
| **API** | GraphQL 또는 REST API를 사용해 맞춤형 통합을 구축하세요. |
|
||||
| **웹훅** | 레코드가 변경될 때 외부 시스템으로 실시간 알림을 전송합니다. |
|
||||
| **Zapier** | 코드 작성 없이 5,000개 이상의 앱과 연동하세요. |
|
||||
| **워크플로우 HTTP 액션** | 자동화된 워크플로우의 일부로 모든 외부 API를 호출할 수 있습니다. |
|
||||
|
||||
## 사용자 지정 앱
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
---
|
||||
title: 데이터 모델
|
||||
description: Twenty가 객체, 필드, 관계를 사용해 데이터를 구조화하는 방식을 이해합니다.
|
||||
description: Twenty가 개체, 필드, 관계로 데이터를 구조화하는 방식을 이해하세요.
|
||||
icon: database
|
||||
---
|
||||
|
||||
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
|
||||
Twenty의 모든 것은 **객체**와 **필드**를 중심으로 구축되어 있으며, 이는 데이터 모델의 구성 요소입니다.
|
||||
Twenty의 모든 것은 **개체**와 **필드**를 중심으로 구축되어 있으며, 이는 데이터 모델의 구성 요소입니다.
|
||||
|
||||
## 개체
|
||||
|
||||
객체는 데이터를 보관하는 테이블입니다. Twenty에는 표준 객체가 기본으로 제공됩니다:
|
||||
개체는 데이터를 저장하는 테이블입니다. Twenty에는 표준 개체가 기본으로 제공됩니다:
|
||||
|
||||
* **Companies** — 비즈니스를 함께하는 조직
|
||||
* **People** — 개별 연락처
|
||||
@@ -18,11 +18,11 @@ Twenty의 모든 것은 **객체**와 **필드**를 중심으로 구축되어
|
||||
* **Tasks** — 팀을 위한 실행 항목
|
||||
* **Notes** — 레코드에 연결된 자유 형식 텍스트
|
||||
|
||||
또한 비즈니스에 필요한 모든 것에 대해 **사용자 지정 객체**를 생성할 수 있습니다. 예를 들어 프로젝트, 지원 티켓, 제품, 계약 등입니다.
|
||||
또한 비즈니스에 필요한 모든 것에 대해 **사용자 지정 개체**를 생성할 수 있습니다. 예를 들어 프로젝트, 지원 티켓, 제품, 계약 등입니다.
|
||||
|
||||
## 필드
|
||||
|
||||
필드는 각 객체의 속성입니다. Twenty는 다양한 필드 유형을 지원합니다:
|
||||
필드는 각 개체의 속성입니다. Twenty는 다양한 필드 유형을 지원합니다:
|
||||
|
||||
| Category | 유형 |
|
||||
| -------- | -------------------------------------------------------------------- |
|
||||
@@ -30,18 +30,18 @@ Twenty의 모든 것은 **객체**와 **필드**를 중심으로 구축되어
|
||||
| **복합** | Address (street, city, state, zip), Full Name, Links, Phones, Emails |
|
||||
| **특수** | Relation, File Attachment, JSON, Actor (who created/modified) |
|
||||
|
||||
각 객체에는 `id`, `createdAt`, `updatedAt`, `createdBy`, `position`과 같은 시스템 필드도 자동으로 포함됩니다.
|
||||
각 개체에는 `id`, `createdAt`, `updatedAt`, `createdBy`, `position`과 같은 시스템 필드도 자동으로 포함됩니다.
|
||||
|
||||
## 관계
|
||||
|
||||
객체들은 관계를 통해 서로 연결됩니다. 하나의 Company에는 여러 People이 있고, 하나의 Opportunity는 하나의 Company에 속하는 식입니다. 또한 다대다 관계를 포함해, 어떤 객체 간이든 사용자 지정 관계를 생성할 수 있습니다.
|
||||
개체는 관계를 통해 서로 연결됩니다. 하나의 Company에는 여러 People이 있고, 하나의 Opportunity는 하나의 Company에 속하는 식입니다. 또한 다대다 관계를 포함해 어떤 개체 간이든 사용자 지정 관계를 생성할 수 있습니다.
|
||||
|
||||
## 이것이 강력한 이유
|
||||
|
||||
미리 정의된 객체와 필드에만 제한되는 기존 CRM과는 달리, Twenty를 사용하면 비즈니스가 작동하는 방식에 맞춰 데이터를 정확하게 모델링할 수 있습니다. 사용자 지정 객체는 API 엔드포인트, 뷰, 권한, 워크플로 트리거 등을 포함해 기본 제공 객체와 동일한 최상위 수준으로 취급됩니다.
|
||||
미리 정의된 개체와 필드에만 제한되는 기존 CRM과는 달리, Twenty를 사용하면 비즈니스가 운영되는 방식에 맞춰 데이터를 정확하게 모델링할 수 있습니다. 사용자 지정 개체는 API 엔드포인트, 뷰, 권한, 워크플로 트리거 등을 포함해 기본 제공 개체와 동일한 최상위 수준으로 취급됩니다.
|
||||
|
||||
<Card title="데이터 모델 깊이 살펴보기" icon="arrow-right" href="/l/ko/user-guide/data-model/overview">
|
||||
객체, 필드, 관계 및 이를 구성하는 방법에 대한 전체 레퍼런스입니다.
|
||||
<Card title="데이터 모델 자세히 살펴보기" icon="arrow-right" href="/l/ko/user-guide/data-model/overview">
|
||||
개체, 필드, 관계 및 이를 구성하는 방법에 대한 전체 레퍼런스입니다.
|
||||
</Card>
|
||||
|
||||
<VimeoEmbed videoId="1185511827" title="데이터 모델" />
|
||||
|
||||
@@ -14,11 +14,11 @@ API(응용 프로그래밍 인터페이스)는 Twenty를 다른 소프트웨어
|
||||
|
||||
## 코드 액션
|
||||
|
||||
코드 액션은 데이터 변환, 계산 수행, 기본 제공 액션으로는 불가능한 복잡한 로직 실행을 위해 사용자 정의 JavaScript를 작성할 수 있게 해주는 워크플로 단계입니다.
|
||||
코드 액션은 데이터 변환, 계산 수행, 기본 제공 액션으로는 불가능한 복잡한 로직 실행을 위해 사용자 정의 JavaScript를 작성할 수 있게 해주는 워크플로우 단계입니다.
|
||||
|
||||
## 명령 메뉴
|
||||
|
||||
명령 메뉴는 신속한 작업 수행, 기록 생성 및 작업 공간 내비게이션을 효율적으로 도와주는 빠른 접근 인터페이스입니다. (Mac에서는 `Cmd + K`, Windows에서는 `Ctrl + K`로 열림)
|
||||
명령 메뉴는 신속한 작업 수행, 기록 생성 및 워크스페이스 내비게이션을 효율적으로 도와주는 빠른 접근 인터페이스입니다. (Mac에서는 `Cmd + K`, Windows에서는 `Ctrl + K`로 열림)
|
||||
|
||||
## 회사 및 사람들
|
||||
|
||||
@@ -43,9 +43,9 @@ CRM에는 두 가지 기본 유형의 기록이 있습니다:
|
||||
|
||||
필드는 특정 엔터티에 대한 특정 데이터가 저장되는 영역을 나타냅니다.
|
||||
|
||||
## 반복자
|
||||
## 이터레이터
|
||||
|
||||
이터레이터는 항목 배열을 순회하여 목록의 각 항목에 대해 후속 액션을 실행하는 워크플로 액션입니다.
|
||||
이터레이터는 항목 배열을 순회하여 목록의 각 항목에 대해 후속 액션을 실행하는 워크플로우 액션입니다.
|
||||
|
||||
## 칸반
|
||||
|
||||
@@ -53,7 +53,7 @@ CRM에는 두 가지 기본 유형의 기록이 있습니다:
|
||||
|
||||
## 객체
|
||||
|
||||
객체는 CRM에서 특정 유형의 엔터티(예: 사람, 회사, 기회)를 나타내는 데이터 구조입니다. 오브젝트는 기본 제공 표준 오브젝트일 수도 있고, 사용자 정의 오브젝트(사용자가 생성한 오브젝트)일 수도 있습니다.
|
||||
객체는 CRM에서 특정 유형의 엔터티(예: 사람, 회사, 기회)를 나타내는 데이터 구조입니다. 객체는 기본 제공 표준 객체일 수도 있고, 사용자 정의 객체(사용자가 생성한 객체)일 수도 있습니다.
|
||||
|
||||
## 기회
|
||||
|
||||
@@ -77,7 +77,7 @@ Twenty CRM의 작업은 연락처, 계정 또는 기회와 관련된 할당된
|
||||
|
||||
## 트리거
|
||||
|
||||
트리거는 워크플로의 시작점으로 — 자동화를 시작하는 이벤트나 조건입니다. 예로는 레코드 생성, 레코드 업데이트, 웹후크, 예약된 시간 등이 있습니다.
|
||||
트리거는 워크플로우의 시작점으로 — 자동화를 시작하는 이벤트나 조건입니다. 예로는 기록 생성, 기록 업데이트, 웹훅, 예약된 시간 등이 있습니다.
|
||||
|
||||
## 보기
|
||||
|
||||
@@ -89,7 +89,7 @@ Twenty CRM의 작업은 연락처, 계정 또는 기회와 관련된 할당된
|
||||
|
||||
## 웹훅
|
||||
|
||||
웹후크는 특정 이벤트가 발생할 때 Twenty에서 다른 애플리케이션으로 전송되는 자동화된 메시지로, 실시간 데이터 동기화를 가능하게 합니다.
|
||||
웹훅은 특정 이벤트가 발생할 때 Twenty에서 다른 애플리케이션으로 전송되는 자동화된 메시지로, 실시간 데이터 동기화를 가능하게 합니다.
|
||||
|
||||
## 워크플로우
|
||||
|
||||
|
||||
@@ -31,23 +31,23 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
|
||||
`Cmd+K`(Mac) 또는 `Ctrl+K`(Windows)를 누르거나 오른쪽 상단의 점 세 개를 클릭합니다. 여기에서 다음 작업을 수행할 수 있습니다:
|
||||
|
||||
* 새 기록물을 생성
|
||||
* 새 레코드를 생성
|
||||
* CSV를 통해 데이터를 가져오고 내보냅니다.
|
||||
* 새 보기를 생성
|
||||
* 삭제된 기록에 접근 (Twenty는 소프트 삭제와 하드 삭제를 지원합니다)
|
||||
* 삭제된 레코드에 접근 (Twenty는 소프트 삭제와 하드 삭제를 지원합니다)
|
||||
* 워크스페이스를 탐색하는 데 사용할 수 있는 키보드 단축키를 확인하세요.
|
||||
|
||||
<img src="/images/user-guide/home/command-menu.png" style={{width:'100%'}} />
|
||||
|
||||
## 검색
|
||||
|
||||
Command Menu, 내비게이션 바 상단 또는 `/`를 눌러 접근할 수 있습니다. 검색은 모든 객체 전반에서 작동합니다.
|
||||
명령 메뉴, 내비게이션 바 상단 또는 `/`를 눌러 접근할 수 있습니다. 검색은 모든 객체 전반에서 작동합니다.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## 사이드 패널
|
||||
|
||||
레코드를 클릭하면 오른쪽에 사이드 패널이 열립니다. 현재 페이지를 벗어나지 않고 해당 레코드의 핵심 정보를 빠르게 확인할 수 있습니다. 전체 레코드 페이지로 이동하려면 **Open**을 클릭하세요.
|
||||
레코드를 클릭하면 오른쪽에 사이드 패널이 열립니다. 현재 페이지를 벗어나지 않고 해당 레코드의 핵심 정보를 빠르게 확인할 수 있습니다. 전체 레코드 페이지로 이동하려면 **열기**를 클릭하세요.
|
||||
|
||||
<img src="/images/user-guide/home/side-panel.png" style={{width:'100%'}} />
|
||||
|
||||
|
||||
@@ -348,6 +348,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Para declarar seus parâmetros **uma vez** e atender a ambas as superfícies, defina um único JSON Schema (`InputJsonSchema`) e converta-o para a ação de workflow com `jsonSchemaToInputSchema` de `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` recebe o JSON Schema diretamente, enquanto `workflowActionTriggerSettings.inputSchema` espera o `InputSchema` da Twenty:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**Escreva uma boa `description`.** Os agentes de IA dependem do campo `description` da função para decidir quando usar a ferramenta. Seja específico sobre o que a ferramenta faz e quando ela deve ser chamada.
|
||||
</Note>
|
||||
@@ -355,6 +381,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Auxiliares de runtime.** `twenty-sdk/utils` reexporta pequenos auxiliares de runtime para que os handlers nunca importem diretamente de `twenty-shared`. Por exemplo, `isDefined(value)` retorna `false` tanto para `null` quanto para `undefined` — use-o para restringir com segurança entradas opcionais de handlers, que podem chegar como `null` em tempo de execução mesmo quando tipadas como `T | undefined`:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Hooks de instalação** — manipuladores de pré-instalação e pós-instalação — compartilham esse ambiente de execução, mas são declarados com suas próprias funções de definição e não usam configurações de gatilho. Veja [Hooks de instalação](/l/pt/developers/extend/apps/config/install-hooks) para `definePreInstallLogicFunction` e `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -10,10 +10,10 @@ O Twenty se conecta às suas ferramentas existentes para que o seu CRM permaneç
|
||||
|
||||
Conecte a sua caixa de correio do **Google Workspace** ou **Microsoft 365**. Depois de conectado:
|
||||
|
||||
* Os emails são vinculados automaticamente aos registros de Empresa e Pessoas correspondentes
|
||||
* Tópicos completos de email ficam visíveis na linha do tempo de cada registro
|
||||
* Os emails são vinculados automaticamente aos registros de Empresas e Pessoas correspondentes
|
||||
* Conversas completas de email ficam visíveis na linha do tempo de cada registro
|
||||
* Você pode enviar emails diretamente do Twenty
|
||||
* Várias caixas de correio por usuário são compatíveis
|
||||
* Há suporte para várias caixas de correio por usuário
|
||||
|
||||
Você controla o que é importado — filtre por intervalo de datas ou remetente para evitar trazer emails irrelevantes.
|
||||
|
||||
|
||||
@@ -10,37 +10,37 @@ Tudo no Twenty é construído em torno de **objetos** e **campos** — os blocos
|
||||
|
||||
## Objetos
|
||||
|
||||
Objetos são as tabelas que armazenam seus dados. O Twenty vem com objetos padrão prontos para uso:
|
||||
Os objetos são as tabelas que armazenam seus dados. O Twenty vem com objetos padrão prontos para uso:
|
||||
|
||||
* **Companies** — Organizações com as quais você faz negócios
|
||||
* **People** — Contatos individuais
|
||||
* **Opportunities** — Negócios no seu funil
|
||||
* **Tasks** — Itens de ação para sua equipe
|
||||
* **Notes** — Texto livre vinculado a registros
|
||||
* **Empresas** — Organizações com as quais você faz negócios
|
||||
* **Pessoas** — Contatos individuais
|
||||
* **Oportunidades** — Negócios no seu funil
|
||||
* **Tarefas** — Itens de ação para sua equipe
|
||||
* **Notas** — Texto livre vinculado a registros
|
||||
|
||||
Você também pode criar **objetos personalizados** para tudo o que a sua empresa precisar — projetos, tíquetes de suporte, produtos, contratos ou qualquer outra coisa.
|
||||
|
||||
## Campos
|
||||
|
||||
Campos são as propriedades de cada objeto. O Twenty é compatível com uma ampla variedade de tipos de campo:
|
||||
Os campos são as propriedades de cada objeto. O Twenty é compatível com uma ampla variedade de tipos de campo:
|
||||
|
||||
| Categoria | Tipos |
|
||||
| ------------ | ----------------------------------------------------------------------------- |
|
||||
| **Básico** | Texto, Número, Booleano, Data, Moeda, Avaliação, Seleção |
|
||||
| **Composto** | Endereço (rua, cidade, estado, CEP), Nome completo, Links, Telefones, E-mails |
|
||||
| **Especial** | Relação, Anexo de arquivo, JSON, Ator (quem criou/modificou) |
|
||||
| **Especial** | Relação, Anexo de arquivo, JSON, Autor (quem criou/modificou) |
|
||||
|
||||
Cada objeto também recebe campos de sistema automáticos: `id`, `createdAt`, `updatedAt`, `createdBy` e `position`.
|
||||
|
||||
## Relações
|
||||
|
||||
Os objetos se conectam entre si por meio de relações. Uma Company tem muitas People, uma Opportunity pertence a uma Company e assim por diante. Você pode criar relações personalizadas entre quaisquer objetos, incluindo relacionamentos muitos-para-muitos.
|
||||
Os objetos se conectam entre si por meio de relações. Uma Empresa tem muitas Pessoas, uma Oportunidade pertence a uma Empresa, e assim por diante. Você pode criar relações personalizadas entre quaisquer objetos, incluindo relacionamentos muitos-para-muitos.
|
||||
|
||||
## O que torna isso poderoso
|
||||
|
||||
Ao contrário dos CRMs tradicionais, em que você fica limitado a campos predefinidos em objetos predefinidos, o Twenty permite modelar seus dados exatamente da forma como o seu negócio funciona. Objetos personalizados recebem o mesmo tratamento de primeira classe que os nativos — incluindo endpoints de API, visualizações, permissões e gatilhos de fluxo de trabalho.
|
||||
|
||||
<Card title="Mergulho profundo no modelo de dados" icon="arrow-right" href="/l/pt/user-guide/data-model/overview">
|
||||
<Card title="Análise aprofundada do modelo de dados" icon="arrow-right" href="/l/pt/user-guide/data-model/overview">
|
||||
Referência completa sobre objetos, campos, relações e como configurá-los.
|
||||
</Card>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Glossário
|
||||
icon: book
|
||||
description: Termos-chave usados em Twenty.
|
||||
description: Termos-chave usados no Twenty.
|
||||
---
|
||||
|
||||
## API
|
||||
@@ -45,7 +45,7 @@ Um campo refere-se a uma área específica onde dados particulares são armazena
|
||||
|
||||
## Iterador
|
||||
|
||||
O Iterator é uma ação de fluxo de trabalho que percorre um array de itens, executando as ações subsequentes para cada item da lista.
|
||||
Um Iterador é uma ação de fluxo de trabalho que percorre um array de itens, executando as ações subsequentes para cada item da lista.
|
||||
|
||||
## Kanban
|
||||
|
||||
@@ -77,7 +77,7 @@ Tarefas no Twenty CRM são atividades atribuídas relacionadas a contatos, conta
|
||||
|
||||
## Disparadores
|
||||
|
||||
Os gatilhos são o ponto de partida de um fluxo de trabalho — o evento ou condição que inicia a automação. Exemplos incluem a criação de registros, atualizações de registros, webhooks ou horários agendados.
|
||||
Os disparadores são o ponto de partida de um fluxo de trabalho — o evento ou condição que inicia a automação. Exemplos incluem a criação de registros, atualizações de registros, webhooks ou horários agendados.
|
||||
|
||||
## Visualizações
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
|
||||
## O layout principal
|
||||
|
||||
O centro do ecrã é onde os seus registos vivem — pessoas, empresas, oportunidades, tarefas, notas, dashboards, workflows e quaisquer objetos personalizados. Aqui pode visualizar, editar e eliminar registos e criar novas vistas.
|
||||
O centro do ecrã é onde os seus registos vivem — pessoas, empresas, oportunidades, tarefas, notas, painéis, fluxos de trabalho e quaisquer objetos personalizados. Aqui pode visualizar, editar e eliminar registos e criar novas vistas.
|
||||
|
||||
<img src="/images/user-guide/home/main-layout.png" style={{width:'100%'}} />
|
||||
|
||||
@@ -16,12 +16,12 @@ O centro do ecrã é onde os seus registos vivem — pessoas, empresas, oportuni
|
||||
|
||||
A barra lateral esquerda dá-lhe:
|
||||
|
||||
* **Seletor de workspace** — alternar entre workspaces ou criar um novo (menu suspenso no topo)
|
||||
* **Seletor de espaço de trabalho** — alternar entre espaços de trabalho ou criar um novo (menu suspenso no topo)
|
||||
* **Pesquisa** — prima `/` para focar instantaneamente, pesquisa em todos os objetos
|
||||
* **Definições** — aceda a partir do canto superior esquerdo
|
||||
* **Favoritos** — vistas fixadas, únicas por utilizador
|
||||
* **Atalhos de objetos** — acesso rápido a People, Companies, Opportunities, etc.
|
||||
* **Workflows** — criar automatizações
|
||||
* **Atalhos de objetos** — acesso rápido a Pessoas, Empresas, Oportunidades, etc.
|
||||
* **Fluxos de trabalho** — criar automatizações
|
||||
|
||||
Arraste itens para reordenar, crie pastas para agrupar objetos relacionados, oculte o que não utiliza.
|
||||
|
||||
@@ -29,29 +29,29 @@ Arraste itens para reordenar, crie pastas para agrupar objetos relacionados, ocu
|
||||
|
||||
## Menu de Comandos
|
||||
|
||||
Prima `Cmd+K` (Mac) ou `Ctrl+K` (Windows) — ou clique nos três pontos no canto superior direito. A partir daqui você pode:
|
||||
Prima `Cmd+K` (Mac) ou `Ctrl+K` (Windows) — ou clique nos três pontos no canto superior direito. A partir daqui pode:
|
||||
|
||||
* Criar novos registros
|
||||
* Criar novos registos
|
||||
* Importar e exportar dados via CSV
|
||||
* Criar novas visualizações
|
||||
* Acessar registros excluídos (Twenty dá suporte a exclusões lógicas e permanentes)
|
||||
* Ver os atalhos de teclado para navegar no seu workspace
|
||||
* Criar novas vistas
|
||||
* Aceder a registos eliminados (a Twenty suporta eliminações lógicas e permanentes)
|
||||
* Ver os atalhos de teclado para navegar no seu espaço de trabalho
|
||||
|
||||
<img src="/images/user-guide/home/command-menu.png" style={{width:'100%'}} />
|
||||
|
||||
## Pesquisar
|
||||
|
||||
Acessível através do Command Menu, do topo da barra de navegação ou premindo `/`. A pesquisa funciona em todos os objetos.
|
||||
Acessível através do Menu de Comandos, no topo da barra de navegação, ou premindo `/`. A pesquisa funciona em todos os objetos.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## Painel lateral
|
||||
|
||||
Clique num registo para abrir o painel lateral à direita — uma visão geral rápida das informações principais do registo sem sair da página atual. Clique em **Open** para ir para a página completa do registo.
|
||||
Clique num registo para abrir o painel lateral à direita — uma visão geral rápida das informações principais do registo sem sair da página atual. Clique em **Abrir** para ir para a página completa do registo.
|
||||
|
||||
<img src="/images/user-guide/home/side-panel.png" style={{width:'100%'}} />
|
||||
|
||||
## Visualizações
|
||||
## Vistas
|
||||
|
||||
Cada objeto suporta múltiplas vistas — ilimitadas por objeto. Use o menu suspenso no canto superior esquerdo para alternar entre elas.
|
||||
|
||||
@@ -59,7 +59,7 @@ Cada objeto suporta múltiplas vistas — ilimitadas por objeto. Use o menu susp
|
||||
* **Kanban** — cartões de arrastar e largar organizados por um campo de seleção, ideal para pipelines
|
||||
* **Calendário** — registos distribuídos por um campo de data para planeamento baseado em tempo
|
||||
|
||||
Cada vista guarda os seus próprios filtros, ordenação e visibilidade de campos. Partilhe vistas com o seu workspace ou mantenha-as privadas. Marcar vistas como favoritas para acesso rápido a partir da barra lateral.
|
||||
Cada vista guarda os seus próprios filtros, ordenação e visibilidade de campos. Partilhe vistas com o seu espaço de trabalho ou mantenha-as privadas. Marcar vistas como favoritas para acesso rápido a partir da barra lateral.
|
||||
|
||||
<img src="/images/user-guide/home/view-menu.png" style={{width:'100%'}} />
|
||||
|
||||
|
||||
@@ -349,6 +349,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Pentru a declara parametrii **o singură dată** și a deservi ambele suprafețe, definește o singură schemă JSON (`InputJsonSchema`) și convertește-o pentru acțiunea workflow-ului cu `jsonSchemaToInputSchema` din `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` primește direct schema JSON, în timp ce `workflowActionTriggerSettings.inputSchema` se așteaptă la `InputSchema` de la Twenty:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**Scrieți o `description` bună.** Agenții AI se bazează pe câmpul `description` al funcției pentru a decide când să folosească instrumentul. Fiți specifici cu privire la ceea ce face instrumentul și când ar trebui apelat.
|
||||
</Note>
|
||||
@@ -356,6 +382,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Ajutoare la rulare (runtime helpers).** `twenty-sdk/utils` re-exportă mici ajutoare la rulare, astfel încât handler-ele să nu importe niciodată direct din `twenty-shared`. De exemplu, `isDefined(value)` returnează `false` atât pentru `null`, cât și pentru `undefined` — folosește-l pentru a restrânge în siguranță intrările opționale ale handler-elor, care pot ajunge ca `null` la rulare, chiar și atunci când sunt tipate `T | undefined`:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Hook-uri de instalare** — handleri pre-instalare și post-instalare — partajează acest runtime, dar sunt declarați cu propriile lor funcții `define` și nu folosesc setări de declanșare. Consultați [Hook-uri de instalare](/l/ro/developers/extend/apps/config/install-hooks) pentru `definePreInstallLogicFunction` și `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -10,7 +10,7 @@ Twenty se conectează la instrumentele dvs. existente, astfel încât CRM-ul dvs
|
||||
|
||||
Conectați-vă căsuța poștală **Google Workspace** sau **Microsoft 365**. După conectare:
|
||||
|
||||
* E-mailurile sunt asociate automat înregistrărilor Companie și Persoane corespunzătoare
|
||||
* E-mailurile sunt asociate automat înregistrărilor corespunzătoare din Companii și Persoane
|
||||
* Firele complete de e-mail sunt vizibile pe cronologia fiecărei înregistrări
|
||||
* Puteți trimite e-mailuri direct din Twenty
|
||||
* Sunt acceptate mai multe căsuțe poștale per utilizator
|
||||
@@ -25,12 +25,12 @@ Evenimentele din calendar se sincronizează automat din contul dvs. conectat. Ev
|
||||
|
||||
Dincolo de e-mail și calendar, Twenty se conectează la instrumente externe prin:
|
||||
|
||||
| Metodă | Caz de utilizare |
|
||||
| ------------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| **API** | Creați integrări personalizate cu API-urile GraphQL sau REST |
|
||||
| **Webhook-uri** | Trimiteți notificări în timp real către sisteme externe atunci când înregistrările se modifică |
|
||||
| **Zapier** | Conectați-vă la peste 5.000 de aplicații fără cod |
|
||||
| **Acțiuni HTTP Workflow** | Apelați orice API extern ca parte a unui workflow automatizat |
|
||||
| Metodă | Caz de utilizare |
|
||||
| ---------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| **API** | Creați integrări personalizate cu API-urile GraphQL sau REST |
|
||||
| **Webhook-uri** | Trimiteți notificări în timp real către sisteme externe atunci când înregistrările se modifică |
|
||||
| **Zapier** | Conectați-vă la peste 5.000 de aplicații fără cod |
|
||||
| **Acțiuni HTTP pentru fluxuri de lucru** | Apelați orice API extern ca parte a unui flux de lucru automatizat |
|
||||
|
||||
## Aplicații personalizate
|
||||
|
||||
|
||||
@@ -10,12 +10,12 @@ Totul în Twenty este construit în jurul **obiectelor** și **câmpurilor** —
|
||||
|
||||
## Obiecte
|
||||
|
||||
Obiectele sunt tabelele care îți conțin datele. Twenty include obiecte standard din start:
|
||||
Obiectele sunt tabelele care stochează datele tale. Twenty include obiecte standard din start:
|
||||
|
||||
* **Companies** — organizații cu care derulezi afaceri
|
||||
* **People** — contacte individuale
|
||||
* **Opportunities** — oferte în pipeline-ul tău
|
||||
* **Tasks** — elemente de acțiune pentru echipa ta
|
||||
* **Opportunities** — tranzacții în pipeline-ul tău
|
||||
* **Tasks** — sarcini pentru echipa ta
|
||||
* **Notes** — text liber asociat înregistrărilor
|
||||
|
||||
Poți de asemenea să creezi **obiecte personalizate** pentru orice are nevoie afacerea ta — proiecte, tichete de suport, produse, contracte sau orice altceva.
|
||||
@@ -34,11 +34,11 @@ Fiecare obiect primește, de asemenea, câmpuri de sistem automate: `id`, `creat
|
||||
|
||||
## Relații
|
||||
|
||||
Obiectele se conectează între ele prin relații. O Company are multe People, o Opportunity aparține unei Company și așa mai departe. Poți crea relații personalizate între orice obiecte, inclusiv relații de tip many-to-many.
|
||||
Obiectele se conectează între ele prin relații. O companie are multe persoane, o oportunitate aparține unei companii și așa mai departe. Poți crea relații personalizate între orice obiecte, inclusiv relații de tip many-to-many.
|
||||
|
||||
## De ce este asta puternic
|
||||
## Ce îl face puternic
|
||||
|
||||
Spre deosebire de CRM-urile tradiționale, unde ești limitat la câmpuri predefinite pe obiecte predefinite, Twenty îți permite să modelezi datele exact așa cum funcționează afacerea ta. Obiectele personalizate primesc același tratament de prim rang ca și cele încorporate — inclusiv endpoint-uri API, vizualizări, permisiuni și declanșatoare de fluxuri de lucru.
|
||||
Spre deosebire de CRM-urile tradiționale, unde ești limitat la câmpuri predefinite pe obiecte predefinite, Twenty îți permite să modelezi datele exact așa cum funcționează afacerea ta. Obiectele personalizate primesc același tratament de prim rang ca cele încorporate — inclusiv endpoint-uri API, vizualizări, permisiuni și declanșatoare de fluxuri de lucru.
|
||||
|
||||
<Card title="Analiză detaliată a modelului de date" icon="arrow-right" href="/l/ro/user-guide/data-model/overview">
|
||||
Referință completă despre obiecte, câmpuri, relații și cum să le configurezi.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Glosar
|
||||
icon: carte
|
||||
description: Termeni-cheie utilizați în întregul Twenty.
|
||||
description: Termeni-cheie utilizați în Twenty.
|
||||
---
|
||||
|
||||
## API
|
||||
@@ -14,7 +14,7 @@ Aplicațiile sunt extensii personalizate sub formă de cod, care pot defini mode
|
||||
|
||||
## Acțiuni de cod
|
||||
|
||||
Acțiunile de cod sunt pași dintr-un flux de lucru care îți permit să scrii JavaScript personalizat pentru a transforma date, a efectua calcule sau a realiza logică complexă care nu este posibilă cu acțiunile integrate.
|
||||
Acțiunile de cod sunt pași dintr-un flux de lucru care vă permit să scrieți JavaScript personalizat pentru a transforma date, a efectua calcule sau a realiza logică complexă care nu este posibilă cu acțiunile integrate.
|
||||
|
||||
## Meniu de comenzi
|
||||
|
||||
@@ -100,6 +100,6 @@ Fluxurile de lucru sunt procese automatizate care declanșează acțiuni pe baza
|
||||
Un `Spațiu de lucru` reprezintă de obicei o companie care folosește Twenty. Conține toate înregistrările și datele pe care dvs. și membrii echipei dvs. le adăugați la Twenty.
|
||||
Are un nume de domeniu unic, care este de obicei numele de domeniu folosit de compania dvs. pentru adresele de email ale angajaților.
|
||||
|
||||
## Membri ai spațiului de lucru
|
||||
## Membrii spațiului de lucru
|
||||
|
||||
Membrii spațiului de lucru sunt utilizatorii Twenty din echipa dvs. care au acces la spațiul dvs. de lucru. Ei pot fi desemnați ca proprietari sau asignați pentru înregistrări.
|
||||
Membrii spațiului de lucru sunt utilizatorii Twenty din echipa dvs. care au acces la spațiul dvs. de lucru. Aceștia pot fi desemnați ca proprietari sau responsabili pentru înregistrări.
|
||||
|
||||
@@ -21,7 +21,7 @@ Bara laterală din stânga vă oferă:
|
||||
* **Setări** — accesați din stânga sus
|
||||
* **Favorite** — vizualizări fixate, unice pentru fiecare utilizator
|
||||
* **Scurtături pentru obiecte** — acces rapid la Persoane, Companii, Oportunități etc.
|
||||
* **Workflows** — creați automatizări
|
||||
* **Fluxuri de lucru** — creați automatizări
|
||||
|
||||
Trageți elementele pentru a le reordona, creați dosare pentru a grupa obiecte înrudite, ascundeți ceea ce nu folosiți.
|
||||
|
||||
@@ -39,15 +39,15 @@ Apăsați `Cmd+K` (Mac) sau `Ctrl+K` (Windows) — sau faceți clic pe cele trei
|
||||
|
||||
<img src="/images/user-guide/home/command-menu.png" style={{width:'100%'}} />
|
||||
|
||||
## Caută
|
||||
## Căutare
|
||||
|
||||
Accesibil prin Command Menu, din partea de sus a barei de navigare sau prin apăsarea tastei `/`. Căutarea funcționează pentru toate obiectele.
|
||||
Accesibil prin Meniul de comenzi, din partea de sus a barei de navigare sau prin apăsarea tastei `/`. Căutarea funcționează pentru toate obiectele.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## Panou lateral
|
||||
|
||||
Faceți clic pe o înregistrare pentru a deschide panoul lateral din dreapta — o prezentare generală rapidă a informațiilor esențiale ale înregistrării, fără a părăsi pagina curentă. Faceți clic pe **Open** pentru a accesa pagina completă a înregistrării.
|
||||
Faceți clic pe o înregistrare pentru a deschide panoul lateral din dreapta — o prezentare generală rapidă a informațiilor esențiale ale înregistrării, fără a părăsi pagina curentă. Faceți clic pe **Deschide** pentru a accesa pagina completă a înregistrării.
|
||||
|
||||
<img src="/images/user-guide/home/side-panel.png" style={{width:'100%'}} />
|
||||
|
||||
@@ -56,7 +56,7 @@ Faceți clic pe o înregistrare pentru a deschide panoul lateral din dreapta —
|
||||
Fiecare obiect acceptă mai multe vizualizări — nelimitate pentru fiecare obiect. Folosiți meniul derulant din stânga sus pentru a comuta între ele.
|
||||
|
||||
* **Tabel** — rânduri și coloane în stil foaie de calcul, cu grupare, editare în linie și personalizare a coloanelor
|
||||
* **Kanban** — carduri drag-and-drop organizate după un câmp select, ideal pentru fluxuri de vânzări
|
||||
* **Kanban** — carduri drag-and-drop organizate după un câmp de selecție, ideal pentru fluxuri de vânzări
|
||||
* **Calendar** — înregistrări plasate în funcție de un câmp de tip dată pentru planificare în timp
|
||||
|
||||
Fiecare vizualizare își salvează propriile filtre, ordonarea și vizibilitatea câmpurilor. Partajați vizualizările cu spațiul de lucru sau păstrați-le private. Adăugați vizualizările la favorite pentru acces rapid din bara laterală.
|
||||
@@ -65,9 +65,9 @@ Fiecare vizualizare își salvează propriile filtre, ordonarea și vizibilitate
|
||||
|
||||
## Pagini de înregistrare
|
||||
|
||||
Când deschideți o înregistrare, pagina de detalii este construită din **file** și **widgeturi** configurabile. Adăugați, eliminați, reordonați și redimensionați widgeturile pe o grilă — câmpuri, înregistrări asociate, e-mailuri, cronologie, sarcini, note, fișiere, diagrame, iframe-uri și altele. Fiecare tip de obiect are propriul său layout.
|
||||
Când deschideți o înregistrare, pagina de detalii este construită din **file** și **widgeturi** configurabile. Adăugați, eliminați, reordonați și redimensionați widgeturile pe o grilă — câmpuri, înregistrări asociate, e-mailuri, cronologie, sarcini, note, fișiere, diagrame, iframe-uri și altele. Fiecare tip de obiect are propriul său aspect.
|
||||
|
||||
<Card title="Ghid complet pentru Layout" icon="arrow-right" href="/l/ro/user-guide/layout/overview">
|
||||
<Card title="Ghid complet pentru Aspect" icon="arrow-right" href="/l/ro/user-guide/layout/overview">
|
||||
Navigare, vizualizări, pagini de înregistrare — referințe detaliate și ghiduri practice.
|
||||
</Card>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Fluxuri de lucru
|
||||
description: Automatizați-vă procesele de business cu constructorul vizual de fluxuri de lucru al Twenty.
|
||||
description: Automatizați-vă procesele de afaceri cu constructorul vizual de fluxuri de lucru al Twenty.
|
||||
icon: bolt
|
||||
---
|
||||
|
||||
@@ -22,16 +22,16 @@ Fiecare flux de lucru are trei părți:
|
||||
|
||||
| Declanșator | Când este declanșat |
|
||||
| ----------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
||||
| **Eveniment de înregistrare** | O înregistrare este creată, actualizată, ștearsă sau upsertată |
|
||||
| **Eveniment de înregistrare** | O înregistrare este creată, actualizată, ștearsă sau inserată ori actualizată (upsert) |
|
||||
| **Manual** | Un utilizator face clic pe un buton (pe o singură înregistrare, pe mai multe înregistrări sau la nivel global) |
|
||||
| **Programare** | La un interval recurent (sintaxă cron) |
|
||||
| **Webhook** | Un sistem extern trimite un HTTP POST |
|
||||
| **Program** | La un interval recurent (sintaxă cron) |
|
||||
| **Webhook** | Un sistem extern trimite o solicitare HTTP POST |
|
||||
|
||||
## Acțiuni
|
||||
|
||||
Fluxurile de lucru pot lega în lanț orice combinație de:
|
||||
Fluxurile de lucru pot înlănțui orice combinație de:
|
||||
|
||||
* **Operațiuni pe înregistrări** — Crearea, actualizarea, căutarea, ștergerea sau upsertarea înregistrărilor
|
||||
* **Operațiuni pe înregistrări** — Crearea, actualizarea, căutarea, ștergerea sau inserarea ori actualizarea (upsert) a înregistrărilor
|
||||
* **Trimitere e-mail** — Trimiteți sau redactați e-mailuri din conturile conectate
|
||||
* **Solicitare HTTP** — Apelați orice API extern
|
||||
* **Cod** — Rulați JavaScript personalizat pentru logică complexă
|
||||
@@ -39,13 +39,13 @@ Fluxurile de lucru pot lega în lanț orice combinație de:
|
||||
* **Iterator** — Parcurgeți în buclă tablouri de date
|
||||
* **Agent AI** — Lăsați un agent AI să proceseze datele în mod autonom
|
||||
* **Întârziere** — Așteptați înainte de a continua
|
||||
* **Formular** — Colectați input-ul utilizatorului la mijlocul fluxului de lucru
|
||||
* **Formular** — Colectați date de la utilizator în mijlocul fluxului de lucru
|
||||
|
||||
## Ce puteți construi
|
||||
|
||||
* Trimiteți alerte Slack când un deal ajunge într-o anumită etapă
|
||||
* Îmbogățiți automat noii contacte cu date din API-uri externe
|
||||
* Detectați oportunitățile învechite și notificați deținătorul
|
||||
* Trimiteți alerte Slack când o oportunitate ajunge într-o anumită etapă
|
||||
* Îmbogățiți automat noile contacte cu date din API-uri externe
|
||||
* Detectați oportunitățile învechite și notificați proprietarul
|
||||
* Sincronizați datele între Twenty și sistemul dvs. de facturare
|
||||
* Generați PDF-uri sau facturi din datele înregistrărilor
|
||||
* Răspundeți automat la e-mailurile primite care corespund anumitor criterii
|
||||
|
||||
@@ -348,6 +348,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Чтобы объявить параметры **один раз** и использовать их для обеих поверхностей, определите одну JSON Schema (`InputJsonSchema`) и преобразуйте её для действия workflow с помощью `jsonSchemaToInputSchema` из `twenty-sdk/logic-function`. `toolTriggerSettings.inputSchema` принимает JSON Schema напрямую, в то время как `workflowActionTriggerSettings.inputSchema` ожидает `InputSchema` Twenty:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**Напишите хорошее описание в поле `description`.** Агенты ИИ опираются на поле `description` функции, чтобы решить, когда использовать инструмент. Чётко опишите, что делает инструмент и когда его следует вызывать.
|
||||
</Note>
|
||||
@@ -355,6 +381,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Вспомогательные функции времени выполнения.** `twenty-sdk/utils` повторно экспортирует небольшие вспомогательные функции времени выполнения, поэтому обработчики никогда не импортируют напрямую из `twenty-shared`. Например, `isDefined(value)` возвращает `false` как для `null`, так и для `undefined` — используйте её, чтобы безопасно сузить необязательные входные данные обработчика, которые могут приходить как `null` во время выполнения, даже если имеют тип `T | undefined`:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Хуки установки** — обработчики до установки и после установки — используют тот же рантайм, но объявляются с помощью собственных функций `define` и не принимают настройки триггеров. См. раздел [Install Hooks](/l/ru/developers/extend/apps/config/install-hooks) для `definePreInstallLogicFunction` и `definePostInstallLogicFunction`.
|
||||
</Note>
|
||||
|
||||
@@ -4,22 +4,22 @@ description: Синхронизируйте свою электронную по
|
||||
icon: envelope
|
||||
---
|
||||
|
||||
Twenty подключается к вашим существующим инструментам, поэтому ваш CRM всегда остается актуальным без ручного ввода данных.
|
||||
Twenty подключается к вашим существующим инструментам, поэтому ваша CRM-система остается актуальной без ручного ввода данных.
|
||||
|
||||
## Синхронизация электронной почты
|
||||
|
||||
Подключите свой почтовый ящик **Google Workspace** или **Microsoft 365**. После подключения:
|
||||
|
||||
* Электронные письма автоматически привязываются к соответствующим записям Компаний и Людей
|
||||
* Электронные письма автоматически привязываются к соответствующим записям компаний и людей
|
||||
* Полные цепочки писем отображаются на временной шкале каждой записи
|
||||
* Вы можете отправлять письма непосредственно из Twenty
|
||||
* Поддерживается несколько почтовых ящиков на одного пользователя
|
||||
|
||||
Вы контролируете, что импортируется — отфильтруйте по диапазону дат или отправителю, чтобы не подтягивать неактуальные письма.
|
||||
Вы контролируете, что импортируется — фильтруйте по диапазону дат или отправителю, чтобы не импортировать нерелевантные письма.
|
||||
|
||||
## Синхронизация календаря
|
||||
|
||||
События календаря автоматически синхронизируются из подключенной учетной записи. События отображаются в соответствующих записях CRM, давая вам полное представление о ваших взаимодействиях с каждым контактом или компанией.
|
||||
События календаря автоматически синхронизируются из подключенной учетной записи. События отображаются в соответствующих записях CRM-системы, давая вам полное представление о ваших взаимодействиях с каждым контактом или компанией.
|
||||
|
||||
## Интеграции
|
||||
|
||||
@@ -29,7 +29,7 @@ Twenty подключается к вашим существующим инст
|
||||
| ------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| **API** | Создавайте собственные интеграции с помощью GraphQL или REST API |
|
||||
| **Вебхуки** | Отправляйте уведомления в реальном времени во внешние системы при изменении записей |
|
||||
| **Zapier** | Подключайте более 5 000 приложений без кода |
|
||||
| **Zapier** | Подключайте более 5 000 приложений без написания кода |
|
||||
| **Действия HTTP в рабочих процессах** | Вызывайте любой внешний API как часть автоматизированного рабочего процесса |
|
||||
|
||||
## Пользовательские приложения
|
||||
|
||||
@@ -14,7 +14,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
|
||||
* **Companies** — организации, с которыми вы работаете
|
||||
* **People** — отдельные контакты
|
||||
* **Opportunities** — сделки в вашем пайплайне
|
||||
* **Opportunities** — сделки в вашей воронке продаж
|
||||
* **Tasks** — задачи для вашей команды
|
||||
* **Notes** — произвольный текст, связанный с записями
|
||||
|
||||
@@ -28,17 +28,17 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
| --------------- | ------------------------------------------------------------------------------ |
|
||||
| **Базовые** | Текст, Число, Булево значение, Дата, Валюта, Оценка, Список |
|
||||
| **Составные** | Адрес (улица, город, штат, индекс), Полное имя, Ссылки, Телефоны, Email-адреса |
|
||||
| **Специальные** | Связь, Файловое вложение, JSON, Участник (кто создал/изменил) |
|
||||
| **Специальные** | Связь, Файловое вложение, JSON, Автор (кто создал/изменил) |
|
||||
|
||||
Каждый объект также получает автоматические системные поля: `id`, `createdAt`, `updatedAt`, `createdBy` и `position`.
|
||||
|
||||
## Связи
|
||||
|
||||
Объекты соединяются друг с другом с помощью связей. Компания имеет много людей, возможность принадлежит компании и так далее. Вы можете создавать пользовательские связи между любыми объектами, включая связи «многие ко многим».
|
||||
Объекты соединяются друг с другом с помощью связей. У компании может быть много контактов, а сделка принадлежит компании и т. д. Вы можете создавать пользовательские связи между любыми объектами, включая связи «многие ко многим».
|
||||
|
||||
## Почему это мощно
|
||||
|
||||
В отличие от традиционных CRM, где вы ограничены предопределёнными полями на предопределённых объектах, Twenty позволяет моделировать данные именно так, как устроен ваш бизнес. Пользовательские объекты получают такой же статус, как и встроенные, — включая API endpoints, представления, права доступа и триггеры рабочих процессов.
|
||||
В отличие от традиционных CRM-систем, в которых вы ограничены предопределёнными полями на предопределённых объектах, Twenty позволяет моделировать данные именно так, как устроен ваш бизнес. Пользовательские объекты получают такой же статус, как и встроенные, — включая конечные точки API, представления, права доступа и триггеры рабочих процессов.
|
||||
|
||||
<Card title="Подробно о модели данных" icon="arrow-right" href="/l/ru/user-guide/data-model/overview">
|
||||
Полная справка по объектам, полям, связям и их настройке.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Глоссарий
|
||||
icon: книга
|
||||
description: Ключевые термины, использующиеся в Twenty.
|
||||
description: Ключевые термины, используемые в Twenty.
|
||||
---
|
||||
|
||||
## API
|
||||
@@ -41,7 +41,7 @@ CRM имеет два основных типа записей:
|
||||
|
||||
## Поле
|
||||
|
||||
Поле относится к определенной области, в которой хранится конкретная информация для объекта.
|
||||
Поле — это определенная область, в которой хранится конкретная информация об объекте.
|
||||
|
||||
## Итератор
|
||||
|
||||
|
||||
@@ -14,38 +14,38 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
|
||||
У каждого рабочего процесса есть три части:
|
||||
|
||||
1. **Trigger** — что запускает рабочий процесс
|
||||
2. **Steps** — что происходит дальше (одно или несколько действий последовательно)
|
||||
3. **Variables** — данные, которые передаются между шагами
|
||||
1. **Триггер** — что запускает рабочий процесс
|
||||
2. **Шаги** — что происходит дальше (одно или несколько действий последовательно)
|
||||
3. **Переменные** — данные, которые передаются между шагами
|
||||
|
||||
## Триггеры
|
||||
|
||||
| Триггер | Когда срабатывает |
|
||||
| ---------------- | --------------------------------------------------------------------------------- |
|
||||
| **Record event** | Запись создается, обновляется, удаляется или выполняется upsert |
|
||||
| **Вручную** | Пользователь нажимает кнопку (для одной записи, нескольких записей или глобально) |
|
||||
| **Schedule** | Через регулярные интервалы (синтаксис cron) |
|
||||
| **Вебхук** | Внешняя система отправляет HTTP POST |
|
||||
| Триггер | Когда срабатывает |
|
||||
| ------------------ | --------------------------------------------------------------------------------- |
|
||||
| **Событие записи** | Запись создается, обновляется, удаляется или вставляется/обновляется |
|
||||
| **Вручную** | Пользователь нажимает кнопку (для одной записи, нескольких записей или глобально) |
|
||||
| **Расписание** | Через регулярные интервалы (синтаксис cron) |
|
||||
| **Вебхук** | Внешняя система отправляет HTTP POST |
|
||||
|
||||
## Действия
|
||||
|
||||
Рабочие процессы могут объединять в цепочку любую комбинацию следующих элементов:
|
||||
|
||||
* **Record operations** — создание, обновление, поиск, удаление или upsert записей
|
||||
* **Send email** — отправка или подготовка писем из подключенных учетных записей
|
||||
* **HTTP request** — вызов любого внешнего API
|
||||
* **Code** — запуск пользовательского JavaScript для сложной логики
|
||||
* **Branches** — условия if/else для разветвления пути рабочего процесса
|
||||
* **Операции с записями** — создание, обновление, поиск, удаление или вставка/обновление записей
|
||||
* **Отправка писем** — отправка или создание черновиков писем из подключенных учетных записей
|
||||
* **HTTP-запрос** — вызов любого внешнего API
|
||||
* **Код** — запуск пользовательского JavaScript для сложной логики
|
||||
* **Ветвления** — условия if/else для разветвления пути рабочего процесса
|
||||
* **Iterator** — перебор массивов данных
|
||||
* **AI Agent** — позволяет агенту ИИ автономно обрабатывать данные
|
||||
* **Delay** — ожидание перед продолжением
|
||||
* **Form** — сбор пользовательского ввода в середине рабочего процесса
|
||||
* **Агент ИИ** — позволяет агенту ИИ автономно обрабатывать данные
|
||||
* **Задержка** — ожидание перед продолжением
|
||||
* **Форма** — сбор пользовательского ввода в середине рабочего процесса
|
||||
|
||||
## Что вы можете создать
|
||||
|
||||
* Отправляйте оповещения в Slack, когда сделка достигает определенного этапа
|
||||
* Автоматически обогащайте новые контакты данными из внешних API
|
||||
* Обнаруживайте «застаивающиеся» возможности и уведомляйте их владельца
|
||||
* Выявляйте зависшие сделки и уведомляйте их владельца
|
||||
* Синхронизируйте данные между Twenty и вашей биллинговой системой
|
||||
* Генерируйте PDF или счета на основе данных записей
|
||||
* Автоматически отвечайте на входящие письма, соответствующие определенным критериям
|
||||
|
||||
@@ -349,6 +349,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Parametrelerinizi **bir kez** bildirmek ve her iki yüzeye de hizmet vermek için tek bir JSON Şeması (`InputJsonSchema`) tanımlayın ve bunu iş akışı eylemi için `twenty-sdk/logic-function` içindeki `jsonSchemaToInputSchema` ile dönüştürün. `toolTriggerSettings.inputSchema`, JSON Şemasını doğrudan alırken `workflowActionTriggerSettings.inputSchema`, Twenty'nin `InputSchema` tipini bekler:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**İyi bir `description` yazın.** AI ajanları, aracı ne zaman kullanacaklarına karar vermek için işlevin `description` alanına güvenir. Aracın ne yaptığını ve ne zaman çağrılması gerektiğini açıkça belirtin.
|
||||
</Note>
|
||||
@@ -356,6 +382,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**Çalışma zamanı yardımcıları.** `twenty-sdk/utils`, işleyicilerin doğrudan `twenty-shared` içinden içe aktarma yapmasına gerek kalmaması için küçük çalışma zamanı yardımcılarını yeniden dışa aktarır. Örneğin, `isDefined(value)` hem `null` hem de `undefined` için `false` döndürür — bunu, çalışma zamanında `T | undefined` olarak yazılmış olsa bile `null` olarak gelebilen isteğe bağlı işleyici girdilerini güvenli şekilde daraltmak için kullanın:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**Yükleme kancaları** — ön yükleme ve yükleme sonrası işleyiciler — bu çalışma zamanını paylaşır ancak kendi tanımlama işlevleriyle bildirilir ve tetikleyici ayarlarını almaz. `definePreInstallLogicFunction` ve `definePostInstallLogicFunction` için [Yükleme Kancaları](/l/tr/developers/extend/apps/config/install-hooks) bölümüne bakın.
|
||||
</Note>
|
||||
|
||||
@@ -11,7 +11,7 @@ Twenty, CRM'inizin manuel veri girişi olmadan güncel kalması için mevcut ara
|
||||
**Google Workspace** veya **Microsoft 365** posta kutunuzu bağlayın. Bağlandıktan sonra:
|
||||
|
||||
* E-postalar, ilgili Şirket ve Kişi kayıtlarıyla otomatik olarak ilişkilendirilir
|
||||
* Tam e-posta dizileri her kaydın zaman çizelgesinde görünür
|
||||
* Tüm e-posta dizileri her kaydın zaman çizelgesinde görünür
|
||||
* E-postaları doğrudan Twenty üzerinden gönderebilirsiniz
|
||||
* Kullanıcı başına birden çok posta kutusu desteklenir
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Veri modeli
|
||||
description: Twenty, verilerinizi nesneler, alanlar ve ilişkilerle nasıl yapılandırdığını anlayın.
|
||||
description: Twenty'nin verilerinizi nesneler, alanlar ve ilişkilerle nasıl yapılandırdığını anlayın.
|
||||
icon: database
|
||||
---
|
||||
|
||||
@@ -14,9 +14,9 @@ Nesneler, verilerinizi tutan tablolardır. Twenty, kutudan çıktığı haliyle
|
||||
|
||||
* **Companies** — İş yaptığınız organizasyonlar
|
||||
* **People** — Bireysel kişiler
|
||||
* **Opportunities** — Boru hattınızdaki anlaşmalar
|
||||
* **Tasks** — Ekibiniz için eylem öğeleri
|
||||
* **Notes** — Kaydetlerle ilişkilendirilmiş serbest biçimli metin
|
||||
* **Opportunities** — Satış sürecinizdeki anlaşmalar
|
||||
* **Tasks** — Ekibiniz için yapılacak işler
|
||||
* **Notes** — Kayıtlarla ilişkilendirilmiş serbest biçimli metin
|
||||
|
||||
Ayrıca işletmenizin ihtiyaç duyduğu her şey için **özel nesneler** oluşturabilirsiniz — projeler, destek talepleri, ürünler, sözleşmeler veya başka herhangi bir şey.
|
||||
|
||||
@@ -34,13 +34,13 @@ Her nesne ayrıca otomatik sistem alanları da alır: `id`, `createdAt`, `update
|
||||
|
||||
## İlişkiler
|
||||
|
||||
Nesneler, ilişkiler aracılığıyla birbirine bağlanır. Bir Company'nin birçok People'ı vardır, bir Opportunity bir Company'ye aittir, vb. Herhangi nesneler arasında, çoktan çoğa ilişkiler de dahil olmak üzere, özel ilişkiler oluşturabilirsiniz.
|
||||
Nesneler, ilişkiler aracılığıyla birbirine bağlanır. Bir Company'nin birçok People'ı vardır, bir Opportunity bir Company'ye aittir, vb. İstediğiniz nesneler arasında, çoktan çoğa ilişkiler de dahil, özel ilişkiler oluşturabilirsiniz.
|
||||
|
||||
## Bunu güçlü kılan nedir
|
||||
|
||||
Önceden tanımlanmış nesneler üzerindeki önceden tanımlanmış alanlarla sınırlı olduğunuz geleneksel CRM'lerin aksine, Twenty verilerinizi işletmenizin çalışma şekline tam olarak uygun biçimde modellemenizi sağlar. Özel nesneler, API uç noktaları, görünümler, izinler ve iş akışı tetikleyicileri dahil olmak üzere, yerleşik olanlarla aynı birinci sınıf muameleyi görür.
|
||||
|
||||
<Card title="Veri Modeline derinlemesine bakış" icon="arrow-right" href="/l/tr/user-guide/data-model/overview">
|
||||
<Card title="Veri modeline derinlemesine bakış" icon="arrow-right" href="/l/tr/user-guide/data-model/overview">
|
||||
Nesneler, alanlar, ilişkiler ve bunların nasıl yapılandırılacağına ilişkin tam başvuru.
|
||||
</Card>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Sözlük
|
||||
icon: kitap
|
||||
description: Twenty boyunca kullanılan anahtar terimler.
|
||||
description: Twenty genelinde kullanılan temel terimler.
|
||||
---
|
||||
|
||||
## API
|
||||
@@ -31,7 +31,7 @@ CRM'de iki temel kayıt türü vardır:
|
||||
|
||||
Özel Alanlar, iş ihtiyaçlarınıza ve süreçlerinize özgü bilgileri yakalamak için oluşturduğunuz veri alanlarıdır.
|
||||
|
||||
## Veri modeli
|
||||
## Veri Modeli
|
||||
|
||||
Bir Veri Modeli, CRM'nizde bilgilerin nasıl düzenlendiğini tanımlayan yapıdır, hangi nesnelerin var oldukları, özellikleri (alanlar) ve birbirleriyle nasıl ilişkili oldukları gibi.
|
||||
|
||||
@@ -77,7 +77,7 @@ Twenty CRM'deki Görevler, kişilere, hesaplara veya fırsatlara ilişkin atanm
|
||||
|
||||
## Tetikleyiciler
|
||||
|
||||
Tetikleyiciler, bir iş akışının başlangıç noktasıdır — otomasyonu başlatan olay veya koşuldur. Örnekler arasında kayıt oluşturma, kayıt güncellemeleri, webhook'lar veya zamanlanmış saatler bulunur.
|
||||
Tetikleyiciler, bir iş akışının başlangıç noktasıdır — otomasyonu başlatan olay veya koşuldur. Örnekler arasında kayıt oluşturma, kayıt güncellemeleri, webhooklar veya zamanlanmış saatler bulunur.
|
||||
|
||||
## Görünümler
|
||||
|
||||
@@ -89,7 +89,7 @@ Upsert, "update" ve "insert" işlemlerini birleştiren bir işlemdir — eşleş
|
||||
|
||||
## Webhooklar
|
||||
|
||||
Webhook'lar, belirli olaylar gerçekleştiğinde Twenty'den diğer uygulamalara gönderilen otomatik mesajlardır ve gerçek zamanlı veri senkronizasyonu sağlar.
|
||||
Webhooklar, belirli olaylar gerçekleştiğinde Twenty'den diğer uygulamalara gönderilen otomatik mesajlardır ve gerçek zamanlı veri senkronizasyonu sağlar.
|
||||
|
||||
## İş Akışları
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
---
|
||||
title: Düzen
|
||||
description: Twenty'de nasıl gezinileceği, göz atılacağı ve kayıtların görüntüleneceği.
|
||||
description: Twenty'de gezinme, göz atma ve kayıtları görüntüleme.
|
||||
icon: table-columns
|
||||
---
|
||||
|
||||
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||||
|
||||
## Ana düzen
|
||||
## Ana Düzen
|
||||
|
||||
Ekranın ortası, kayıtlarınızın bulunduğu yerdir — kişiler, şirketler, fırsatlar, görevler, notlar, panolar, iş akışları ve tüm özel nesneler. Kayıtları burada görüntüler, düzenler ve siler, yeni görünümler oluşturursunuz.
|
||||
Ekranın ortası, kayıtlarınızın bulunduğu yerdir — kişiler, şirketler, fırsatlar, görevler, notlar, panolar, iş akışları ve özel nesneler. Kayıtları burada görüntüler, düzenler ve siler, yeni görünümler oluşturursunuz.
|
||||
|
||||
<img src="/images/user-guide/home/main-layout.png" style={{width:'100%'}} />
|
||||
|
||||
@@ -17,15 +17,15 @@ Ekranın ortası, kayıtlarınızın bulunduğu yerdir — kişiler, şirketler,
|
||||
Sol kenar çubuğu size şunları sağlar:
|
||||
|
||||
* **Çalışma alanı değiştirici** — çalışma alanları arasında geçiş yapın veya yeni bir tane oluşturun (üst açılır menü)
|
||||
* **Arama** — anında odaklamak için `/` tuşuna basın, tüm nesnelerde arama yapar
|
||||
* **Arama** — anında odaklanmak için `/` tuşuna basın, tüm nesnelerde arama yapar
|
||||
* **Ayarlar** — sol üstten erişin
|
||||
* **Sık kullanılanlar** — her kullanıcıya özgü sabitlenmiş görünümler
|
||||
* **Nesne kısayolları** — People, Companies, Opportunities vb. nesnelere hızlı erişim
|
||||
* **Nesne kısayolları** — Kişiler, Şirketler, Fırsatlar vb. nesnelere hızlı erişim
|
||||
* **İş akışları** — otomasyonlar oluşturun
|
||||
|
||||
Öğeleri yeniden sıralamak için sürükleyin, ilgili nesneleri gruplamak için klasörler oluşturun, kullanmadıklarınızı gizleyin.
|
||||
|
||||
<img src="/images/user-guide/home/navigation-bar.png" style={{genişlik:'100%'}} />
|
||||
<img src="/images/user-guide/home/navigation-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## Komut Menüsü
|
||||
|
||||
@@ -43,9 +43,9 @@ Sol kenar çubuğu size şunları sağlar:
|
||||
|
||||
Komut Menüsü, gezinme çubuğunun üst kısmı veya `/` tuşuna basarak erişilebilir. Arama tüm nesnelerde çalışır.
|
||||
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{genişlik:'100%'}} />
|
||||
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
|
||||
|
||||
## Yan panel
|
||||
## Yan Panel
|
||||
|
||||
Bir kayda tıklayarak sağdaki yan paneli açın — mevcut sayfadan ayrılmadan kaydın temel bilgilerinin hızlı bir özetini görürsünüz. Tam kayıt sayfasına gitmek için **Aç**'a tıklayın.
|
||||
|
||||
@@ -53,7 +53,7 @@ Bir kayda tıklayarak sağdaki yan paneli açın — mevcut sayfadan ayrılmadan
|
||||
|
||||
## Görünümler
|
||||
|
||||
Her nesne, nesne başına sınırsız olmak üzere birden çok görünümü destekler. Aralarına geçiş yapmak için sol üstteki açılır menüyü kullanın.
|
||||
Her nesne, nesne başına sınırsız olmak üzere birden çok görünümü destekler. Aralarında geçiş yapmak için sol üstteki açılır menüyü kullanın.
|
||||
|
||||
* **Tablo** — gruplama, satır içi düzenleme ve sütun özelleştirme ile hesap tablosu tarzı satırlar ve sütunlar
|
||||
* **Kanban** — bir seçim alanına göre düzenlenmiş sürükle-bırak kartları, boru hatları için idealdir
|
||||
@@ -65,7 +65,7 @@ Her görünüm kendi filtrelerini, sıralamasını ve alan görünürlüğünü
|
||||
|
||||
## Kayıt Sayfaları
|
||||
|
||||
Bir kaydı açtığınızda, ayrıntı sayfası yapılandırılabilir **sekme** ve **widget**'lardan oluşturulur. Izgara üzerinde widget'ları ekleyin, kaldırın, yeniden sıralayın ve yeniden boyutlandırın — alanlar, ilişkili kayıtlar, e-postalar, zaman çizelgesi, görevler, notlar, dosyalar, grafikler, iframe'ler ve daha fazlası. Her nesne türünün kendi düzeni vardır.
|
||||
Bir kaydı açtığınızda, ayrıntı sayfası yapılandırılabilir **sekmeler** ve **widget'lar**dan oluşturulur. Izgara üzerinde widget'ları ekleyin, kaldırın, yeniden sıralayın ve yeniden boyutlandırın — alanlar, ilişkili kayıtlar, e-postalar, zaman çizelgesi, görevler, notlar, dosyalar, grafikler, iframe'ler ve daha fazlası. Her nesne türünün kendi düzeni vardır.
|
||||
|
||||
<Card title="Tam Düzen rehberi" icon="arrow-right" href="/l/tr/user-guide/layout/overview">
|
||||
Gezinme, görünümler, kayıt sayfaları — ayrıntılı başvuru ve nasıl yapılır kılavuzları.
|
||||
|
||||
@@ -20,12 +20,12 @@ Her iş akışının üç bölümü vardır:
|
||||
|
||||
## Tetikleyiciler
|
||||
|
||||
| Tetikleyici | Ne zaman tetiklenir |
|
||||
| --------------- | ---------------------------------------------------------------------------------------- |
|
||||
| **Kayıt olayı** | Bir kayıt oluşturulur, güncellenir, silinir veya upsert edilir |
|
||||
| **Manuel** | Bir kullanıcı bir düğmeye tıklar (tek bir kayıtta, birden çok kayıtta veya genel olarak) |
|
||||
| **Zamanlama** | Yinelenen bir aralıkta (cron söz dizimiyle) |
|
||||
| **Webhook** | Harici bir sistem bir HTTP POST gönderir |
|
||||
| Tetikleyici | Ne zaman tetiklenir |
|
||||
| --------------- | ----------------------------------------------------------------------------------------- |
|
||||
| **Kayıt olayı** | Bir kayıt oluşturulur, güncellenir, silinir veya upsert edilir |
|
||||
| **Manuel** | Bir kullanıcı bir düğmeye tıklar (tek bir kayıtta, birden çok kayıtta veya global olarak) |
|
||||
| **Program** | Yinelenen bir aralıkta (cron söz dizimiyle) |
|
||||
| **Webhook** | Harici bir sistem bir HTTP POST gönderir |
|
||||
|
||||
## Eylemler
|
||||
|
||||
@@ -43,7 +43,7 @@ Her iş akışının üç bölümü vardır:
|
||||
|
||||
## Oluşturabilecekleriniz
|
||||
|
||||
* Bir anlaşma belirli bir aşamaya ulaştığında Slack uyarıları gönderin
|
||||
* Bir fırsat belirli bir aşamaya ulaştığında Slack uyarıları gönderin
|
||||
* Yeni kişileri harici API'lerden gelen verilerle otomatik olarak zenginleştirin
|
||||
* Eski fırsatları tespit edin ve sahibini bilgilendirin
|
||||
* Twenty ile faturalandırma sisteminiz arasında verileri senkronize edin
|
||||
|
||||
@@ -349,6 +349,32 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
要**只**声明一次参数并服务于这两种界面,请定义一个单一的 JSON Schema(`InputJsonSchema`),并使用来自 `twenty-sdk/logic-function` 的 `jsonSchemaToInputSchema` 将其转换为工作流操作使用。 `toolTriggerSettings.inputSchema` 直接接受 JSON Schema,而 `workflowActionTriggerSettings.inputSchema` 需要的是 Twenty 的 `InputSchema`:
|
||||
|
||||
```ts
|
||||
import { defineLogicFunction } from 'twenty-sdk/define';
|
||||
import { jsonSchemaToInputSchema, type InputJsonSchema } from 'twenty-sdk/logic-function';
|
||||
|
||||
const inputSchema: InputJsonSchema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: { type: 'string', label: 'Company name' },
|
||||
domain: { type: 'string', label: 'Domain' },
|
||||
},
|
||||
required: ['companyName'],
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
...,
|
||||
toolTriggerSettings: { inputSchema },
|
||||
workflowActionTriggerSettings: {
|
||||
label: 'Enrich Company',
|
||||
icon: 'IconBuilding',
|
||||
inputSchema: jsonSchemaToInputSchema(inputSchema),
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
<Note>
|
||||
**写一个好的 `description`。** AI 智能体会依赖该函数的 `description` 字段来决定何时使用该工具。 明确说明该工具的作用以及应在何时调用。
|
||||
</Note>
|
||||
@@ -356,6 +382,20 @@ export default defineLogicFunction({
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
**运行时辅助工具。** `twenty-sdk/utils` 会重新导出一些小型运行时辅助工具,这样处理程序就不需要直接从 `twenty-shared` 导入。 例如,`isDefined(value)` 对 `null` 和 `undefined` 都会返回 `false` —— 使用它可以安全地收窄可选处理程序输入的类型,因为即使类型标注为 `T | undefined`,在运行时它们仍可能以 `null` 的形式传入:
|
||||
|
||||
```ts
|
||||
import { isDefined } from 'twenty-sdk/utils';
|
||||
|
||||
const handler = async (params: { parentMessageId?: string }) => {
|
||||
if (isDefined(params.parentMessageId)) {
|
||||
// params.parentMessageId is narrowed to string here
|
||||
}
|
||||
};
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
**安装 hooks**——预安装和后安装处理程序——共享此运行时,但使用它们自己的 define 函数进行声明,并且不接受触发器设置。 有关 `definePreInstallLogicFunction` 和 `definePostInstallLogicFunction`,请参阅 [Install Hooks](/l/zh/developers/extend/apps/config/install-hooks)。
|
||||
</Note>
|
||||
|
||||
@@ -4,21 +4,21 @@ icon: cube
|
||||
description: 通过代码扩展 Twenty——将自定义对象、服务器端逻辑、UI 组件和 AI 代理全部构建为 TypeScript 软件包。
|
||||
---
|
||||
|
||||
大多数 CRM 只给你一个配置面板。 Twenty 给你的是一个平台。 App 是开发者将 Twenty 扩展到超出 UI 所提供能力的方式——将数据模型、服务器端逻辑、UI 组件和 AI 能力定义为代码,然后将它们部署到一个或多个工作区。
|
||||
大多数 CRM 只给你一个配置面板。 Twenty 给你的是一个平台。 应用是开发者将 Twenty 扩展到超出 UI 所提供能力的方式——将数据模型、服务器端逻辑、UI 组件和 AI 能力定义为代码,然后将它们部署到一个或多个工作区。
|
||||
|
||||
## App 存在的原因
|
||||
## 应用存在的原因
|
||||
|
||||
Workflows 覆盖了无代码自动化。 但有些事情需要代码:自定义定价引擎、专有的富化管道、在每次记录更新时运行的合规检查、从内部工具中提取数据的自定义 UI 面板。
|
||||
工作流涵盖无代码自动化。 但有些事情需要代码:自定义定价引擎、专有的富化管道、在每次记录更新时运行的合规检查、从内部工具中提取数据的自定义 UI 面板。
|
||||
|
||||
App 让你将这些构建为一等扩展——不是从外部与 API 通信的脆弱脚本,而是在平台上运行、完全访问类型系统、权限模型和 UI 的代码。
|
||||
应用让你将这些构建为一等扩展——不是从外部与 API 通信的脆弱脚本,而是在平台上运行、可完全访问类型系统、权限模型和 UI 的代码。
|
||||
|
||||
## 一个 App 可以定义什么
|
||||
## 一个应用可以定义什么
|
||||
|
||||
一个 App 是使用 `twenty-sdk` 声明 **实体(entities)** 的 TypeScript 软件包:
|
||||
一个应用是使用 `twenty-sdk` 声明 **实体** 的 TypeScript 软件包:
|
||||
|
||||
| 实体 | 作用 |
|
||||
| ---------- | --------------------------------------------- |
|
||||
| **对象与字段** | 在现有对象上新增数据表和字段——与内置对象享受同等待遇 |
|
||||
| **对象与字段** | 在现有对象上新增数据表和字段——与内置项同等对待 |
|
||||
| **逻辑函数** | 由 HTTP 路由、cron 调度或数据库事件触发的服务端 TypeScript |
|
||||
| **前端组件** | 在 Twenty 的 UI 内渲染的沙盒化 React 组件(侧边面板、小部件、命令菜单) |
|
||||
| **技能与智能体** | AI 能力——可复用的指令和自主助手 |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: 术语表
|
||||
icon: 书
|
||||
icon: book
|
||||
description: 在 Twenty 中使用的关键术语。
|
||||
---
|
||||
|
||||
@@ -14,7 +14,7 @@ API(应用程序接口)允许您将 Twenty 与其他软件系统连接并构
|
||||
|
||||
## 代码操作
|
||||
|
||||
代码操作是工作流步骤,允许你编写自定义 JavaScript 来转换数据、进行计算,或执行内置操作无法实现的复杂逻辑。
|
||||
代码操作是工作流步骤,允许您编写自定义 JavaScript 来转换数据、进行计算,或执行内置操作无法实现的复杂逻辑。
|
||||
|
||||
## 命令菜单
|
||||
|
||||
@@ -37,7 +37,7 @@ CRM 有两种基本类型的记录:
|
||||
|
||||
## 收藏夹
|
||||
|
||||
收藏是你标记用于快速访问的记录,会显示在侧边栏,便于即时导航到重要数据。
|
||||
收藏是您标记用于快速访问的记录,会显示在侧边栏,便于即时导航到重要数据。
|
||||
|
||||
## 字段
|
||||
|
||||
@@ -102,4 +102,4 @@ Webhook 是在特定事件发生时从 Twenty 发送到其他应用的自动消
|
||||
|
||||
## 工作区成员
|
||||
|
||||
工作区成员是您的团队中有权访问您的工作区的 Twenty 用户。 他们可以被指定为记录的所有者或被分配人。
|
||||
工作区成员是您的团队中有权访问您的工作区的 Twenty 用户。 他们可以被指定为记录的所有者或负责人。
|
||||
|
||||
@@ -14,7 +14,7 @@ Twenty 是一个可以在其之上进行构建的平台,而不是一个只能
|
||||
<CardGroup cols={2}>
|
||||
<Card img="/images/user-guide/halftone/ai.png">
|
||||
<CardTitle>为智能体打造</CardTitle>
|
||||
Agents 在你的数据模型内部运行,并具备真实的权限控制。 技能、工具、MCP。
|
||||
智能体在你的数据模型内部运行,并具备真实的权限控制。 技能、工具、MCP。
|
||||
</Card>
|
||||
<Card img="/images/user-guide/halftone/permissions.png">
|
||||
<CardTitle>安全可扩展性</CardTitle>
|
||||
|
||||
Reference in New Issue
Block a user