Transformace maji svou kategorii, pribylo XML
Odstranena sluzba AI zpracovani textu. Delala totez co OpenAI, jen jinymi slovy, a dva zpusoby jak udelat jednu vec znamenaji jen otazku, ktery pouzit. Ukazkove stromy a stopy, ktere na ni odkazovaly, miri na openai.chat. - nova kategorie Transformace dat. Driv byly mezi obecnymi sluzbami vedle webhooku a pauzy; ve chvili kdy jich je vic nez tri, hleda je clovek jako skupinu, ne mezi spoustecemi. - skript transform.to-xml: zapise objekt jako XML vcetne escapovani. Cizi systemy si XML porad rikaji casto (ISDOC, EDI, banky, statni sprava) a bez toho se sestavuje retezcem v HTTP kroku, kde se na escapovani zapomene pokazde. Klice, ktere nejsou platny nazev prvku, se prejmenuji a rekne se to nahlas; klic zacinajici cislici dostane podtrzitko misto odriznuti, jinak by 2024 a 2025 byly totez. - navrh cele skupiny transformaci v 13-transformace-dat.md: formaty, pole a hodnoty, seznamy, text a kontrola, vcetne toho co v seznamu zamerne neni. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
aa0a783095
commit
e1c52e3da3
@@ -574,7 +574,7 @@ function seedDemoAutomations(): void {
|
||||
steps: [
|
||||
{ id: 'st_11', kind: 'action', serviceId: 'voicebot', operationId: 'play-scenario' },
|
||||
{ id: 'st_12', kind: 'action', serviceId: 'transcription', operationId: 'transcribe' },
|
||||
{ id: 'st_13', kind: 'action', serviceId: 'ai-text', operationId: 'classify' },
|
||||
{ id: 'st_13', kind: 'action', serviceId: 'openai', operationId: 'chat' },
|
||||
{
|
||||
id: 'st_14',
|
||||
kind: 'condition',
|
||||
@@ -624,7 +624,7 @@ function seedDemoAutomations(): void {
|
||||
{ id: 'st_31', kind: 'action', serviceId: 'ga4', operationId: 'run-report' },
|
||||
{ id: 'st_32', kind: 'action', serviceId: 'google-ads', operationId: 'campaign-report' },
|
||||
{ id: 'st_33', kind: 'action', serviceId: 'sklik', operationId: 'campaign-report' },
|
||||
{ id: 'st_34', kind: 'action', serviceId: 'ai-text', operationId: 'generate' },
|
||||
{ id: 'st_34', kind: 'action', serviceId: 'openai', operationId: 'chat' },
|
||||
{ id: 'st_35', kind: 'action', serviceId: 'email', operationId: 'send' },
|
||||
],
|
||||
},
|
||||
|
||||
+8
-86
@@ -29,7 +29,12 @@ export type ServiceCategory =
|
||||
| 'logistika'
|
||||
| 'komunikace'
|
||||
| 'analytika'
|
||||
| 'ai';
|
||||
| 'ai'
|
||||
/**
|
||||
* Prevody dat mezi kroky. Vlastni kategorie, ne polozka v Obecnem:
|
||||
* je jich hodne a clovek je hleda jako skupinu, ne mezi webhookem a pauzou.
|
||||
*/
|
||||
| 'transformace';
|
||||
|
||||
/**
|
||||
* available = sluzbu umime, planned = je na roadmape.
|
||||
@@ -278,6 +283,7 @@ export const serviceCategories: Array<{ id: ServiceCategory; label: string }> =
|
||||
{ id: 'komunikace', label: 'Komunikace' },
|
||||
{ id: 'analytika', label: 'Analytika' },
|
||||
{ id: 'ai', label: 'AI a hlas' },
|
||||
{ id: 'transformace', label: 'Transformace dat' },
|
||||
];
|
||||
|
||||
export const services: Service[] = [
|
||||
@@ -2306,90 +2312,6 @@ export const services: Service[] = [
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'ai-text',
|
||||
name: 'AI zpracování textu',
|
||||
category: 'ai',
|
||||
description: 'Klasifikace, extrakce dat a generování textu jazykovým modelem.',
|
||||
icon: 'Sparkles',
|
||||
status: 'available',
|
||||
general: false,
|
||||
/*
|
||||
* Nebezi u nas, stejne jako OpenAI. Rozdil proti sluzbe OpenAI je v tom,
|
||||
* na co se pta: tam se posila volny dotaz, tady jsou hotove ulohy
|
||||
* (zaradit, vytahnout, napsat) s pevnym vystupem, na ktery se da ve strome
|
||||
* navazat podminkou.
|
||||
*/
|
||||
appId: null,
|
||||
baseUrl: 'https://api.openai.com/v1',
|
||||
visibility: { mode: 'everyone', tenantIds: [], userIds: [] },
|
||||
credentials: [
|
||||
{
|
||||
id: 'apiKey',
|
||||
label: 'API klíč',
|
||||
target: 'header',
|
||||
name: 'Authorization',
|
||||
prefix: 'Bearer ',
|
||||
required: true,
|
||||
secret: true,
|
||||
hint: 'platform.openai.com, sekce API keys. Vložte jen klíč, slovo Bearer doplní portál.',
|
||||
},
|
||||
{
|
||||
id: 'model',
|
||||
label: 'Model',
|
||||
target: 'config',
|
||||
name: 'model',
|
||||
required: false,
|
||||
secret: false,
|
||||
hint: 'Bez vyplnění gpt-4o-mini. Platí pro všechny operace této služby.',
|
||||
},
|
||||
{
|
||||
id: 'organization',
|
||||
label: 'ID organizace',
|
||||
target: 'header',
|
||||
name: 'OpenAI-Organization',
|
||||
required: false,
|
||||
secret: false,
|
||||
hint: 'Jen když má účet víc organizací a útrata se má počítat konkrétní z nich.',
|
||||
},
|
||||
],
|
||||
// Seznam modelu: nejlevnejsi cteci volani, ktere vyzaduje platny klic.
|
||||
verifyPath: '/models',
|
||||
triggers: [],
|
||||
actions: [
|
||||
{
|
||||
id: 'classify',
|
||||
name: 'Zařadit do kategorie',
|
||||
description: 'Rozhodne, do které kategorie text patří (např. téma ticketu).',
|
||||
inputs: [
|
||||
{
|
||||
id: 'categories',
|
||||
label: 'Seznam kategorií',
|
||||
kind: 'text',
|
||||
required: true,
|
||||
hint: 'Oddělte čárkou, například: porucha, dotaz, reklamace',
|
||||
},
|
||||
{ id: 'text', label: 'Text', kind: 'longtext', required: true },
|
||||
],
|
||||
outputFields: [
|
||||
{ id: 'ai.category', name: 'category', type: 'string', required: true },
|
||||
{ id: 'ai.confidence', name: 'confidence', type: 'number', required: true },
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'extract',
|
||||
name: 'Vytáhnout údaje',
|
||||
description: 'Z volného textu získá strukturovaná data podle schématu.',
|
||||
fields: ['Schéma polí', 'Text'],
|
||||
},
|
||||
{
|
||||
id: 'generate',
|
||||
name: 'Vygenerovat text',
|
||||
description: 'Napíše odpověď nebo shrnutí podle instrukce.',
|
||||
fields: ['Instrukce', 'Vstupní data'],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
/**
|
||||
* OpenAI je jina nez zbytek katalogu: **nebezi u nas**. Nema tedy `appId`,
|
||||
@@ -2552,7 +2474,7 @@ export const services: Service[] = [
|
||||
{
|
||||
id: 'transform',
|
||||
name: 'Transformace dat',
|
||||
category: 'obecne',
|
||||
category: 'transformace',
|
||||
description: 'Přemapování polí, formátování a čištění dat mezi kroky.',
|
||||
icon: 'Shuffle',
|
||||
status: 'available',
|
||||
|
||||
@@ -499,8 +499,8 @@ function seedDemoTickets(): void {
|
||||
},
|
||||
{
|
||||
kind: 'action',
|
||||
serviceId: 'ai-text',
|
||||
operationId: 'classify',
|
||||
serviceId: 'openai',
|
||||
operationId: 'chat',
|
||||
label: 'Zařazení do kategorie',
|
||||
status: 'ok',
|
||||
response: '{ "category": "porucha", "priority": "high", "confidence": 0.88 }',
|
||||
@@ -602,8 +602,8 @@ function seedDemoTickets(): void {
|
||||
},
|
||||
{
|
||||
kind: 'action',
|
||||
serviceId: 'ai-text',
|
||||
operationId: 'extract',
|
||||
serviceId: 'openai',
|
||||
operationId: 'chat',
|
||||
label: 'Vytažení údajů z textu',
|
||||
status: 'ok',
|
||||
response: '{ "type": "pozadavek na zmenu", "system": "CRM + iDoklad", "urgent": false }',
|
||||
@@ -684,8 +684,8 @@ function seedDemoTickets(): void {
|
||||
},
|
||||
{
|
||||
kind: 'action',
|
||||
serviceId: 'ai-text',
|
||||
operationId: 'classify',
|
||||
serviceId: 'openai',
|
||||
operationId: 'chat',
|
||||
label: 'Zařazení do kategorie',
|
||||
status: 'ok',
|
||||
response: '{ "category": "vypadek reportu", "priority": "normal", "confidence": 0.79 }',
|
||||
|
||||
Reference in New Issue
Block a user