Skripty konektoru: vykonna cast s manifestem a kontrolou parametru
Konektory dostaly vykonnou cast. Jeden skript je jeden soubor, ktery nese manifest (vstupni a vystupni parametry) i kod. Diky manifestu s nim umi pracovat strom automatizace, aniz by o kodu cokoliv vedel. Soubory jsou zamerne obycejny JavaScript, ne TypeScript. TypeScript by se musel prelozit a to je presne to otaceni, ktere tady nema byt. Registr sleduje cas zmeny souboru, takze uprava v portalu, rucni uprava souboru i novy soubor ve slozce funguji stejne a bez restartu. Pridano: - scripts/ se skripty konektoru, nazev souboru je zaroven ID operace - kontrola vstupu i vystupu proti manifestu, jedna funkce pro obe strany. Chybejici povinny vystup je chyba skriptu, ne uzivatele - jinak by strom veril parametru, ktery nikdy nedosel - ctx predavany skriptu: http nad adresou napojeni, util, log, config, idempotencyKey, fail a retry. Skript nedostane pristupove udaje - rozliseni opakovatelne a koncove chyby. Runner nikdy nevyhodi vyjimku, vzdy vraci vysledek vcetne retryable - redakce tajnych hodnot pred zapisem do logu. Cizi API rado vraci prijaty token v chybove zprave a log ticketu vidi klient - napojeni z environment variables vcetne iDokladu - sest ukazkovych skriptu pro iDoklad proti skutecnemu API sluzby services.csbot.cz/apps/idoklad, kazdy na jiny vzor - stranka /dashboard/skripty: seznam, manifest, editor, zkusebni spusteni. Formular testu se sklada z manifestu, nepise se pro kazdy skript - endpointy /api/dashboard/scripts vcetne Swaggeru Zmeneno: - katalog konektoru uz neni jen staticky seznam. Akce ze skriptu se domeruji prekryvem v src/data/connectors.ts, takze se naraz objevi ve validaci stromu, ve vypoctu scope i v sablonach. Pri stejnem ID vyhrava skript - ConnectorOperation ma implementation a scriptId - ApiError na klientovi nese cele telo odpovedi a umi z nej vytahnout issues - Dockerfile kopiruje scripts/ do vysledneho image Ukladani nemuze rozbit fungujici skript: kod se nejdriv zapise do docasneho souboru, ten se nacte a overi, a az pak prepise puvodni. K tomu tri dokumenty navrhu dalsich kroku: 09 datove modely a prava, 10 runtime a rozpocet na 150 klientu, 11 popis skriptu konektoru. Overeno: npm run typecheck prochazi na serveru i webu. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bbc2236c0d
commit
6f6b287d7e
@@ -2,6 +2,70 @@
|
||||
|
||||
Nejnovejsi nahore.
|
||||
|
||||
## 2026-08-12 - skripty konektoru
|
||||
|
||||
Naprogramovana vykonna cast konektoru. Popis je
|
||||
v [11-skripty-konektoru.md](11-skripty-konektoru.md).
|
||||
|
||||
### Pridano
|
||||
|
||||
- `scripts/` se skripty konektoru. Jeden soubor nese manifest (vstupni a vystupni
|
||||
parametry) i kod. Obycejny JavaScript, aby se nemusel prekladat.
|
||||
- Hot reload podle casu zmeny souboru. Uprava v portalu i rucni uprava souboru
|
||||
se projevi bez restartu.
|
||||
- Kontrola vstupu i vystupu proti manifestu, jedna funkce pro obe strany.
|
||||
Chybejici povinny vystup je chyba skriptu, ne uzivatele.
|
||||
- `ctx` predavany skriptu: `http` nad adresou napojeni, `util`, `log`, `config`,
|
||||
`idempotencyKey`, `fail` a `retry`. Skript nedostane pristupove udaje.
|
||||
- Rozliseni opakovatelne a koncove chyby. Runner nikdy nevyhodi vyjimku, vzdy
|
||||
vraci vysledek vcetne `retryable`.
|
||||
- Redakce tajnych hodnot pred zapisem do logu.
|
||||
- Napojeni z environment variables (`src/scripts/connections.ts`) vcetne iDokladu.
|
||||
- Sest ukazkovych skriptu pro iDoklad proti skutecnemu API sluzby
|
||||
`services.csbot.cz/apps/idoklad`, kazdy na jiny vzor.
|
||||
- Stranka `/dashboard/skripty`: seznam, manifest, editor, zkusebni spusteni.
|
||||
Formular testu se sklada z manifestu, nepise se pro kazdy skript.
|
||||
- Endpointy `/api/dashboard/scripts`, `/:id`, `PUT /:id`, `/:id/test` a `/reload`.
|
||||
Vse ve Swaggeru.
|
||||
|
||||
### Zmeneno
|
||||
|
||||
- Katalog konektoru uz neni jen staticky seznam. Akce ze skriptu se domeruji
|
||||
prekryvem v `src/data/connectors.ts`, takze se naraz objevi ve validaci stromu,
|
||||
ve vypoctu scope i v sablonach. Pri stejnem ID operace vyhrava skript.
|
||||
- `ConnectorOperation` ma `implementation` a `scriptId`. Katalog v portalu operace
|
||||
se skriptem oznacuje ikonou.
|
||||
- `ApiError` na klientovi nese cele telo odpovedi a umi z nej vytahnout `issues`.
|
||||
- Dockerfile kopiruje `scripts/` do vysledneho image.
|
||||
|
||||
### Vedome neudelano
|
||||
|
||||
Skripty bezi v procesu serveru, ne v sandboxu. Jsou nase a prosly gitem.
|
||||
Zakaznicke skripty budou potrebovat izolovany engine ve vlastnim vlakne, duvod
|
||||
je v [10-runtime-a-kapacita.md](10-runtime-a-kapacita.md).
|
||||
|
||||
Ulozeni z portalu zapisuje do souboru v containeru. Bez trvaleho svazku ho
|
||||
redeploy vrati na verzi z gitu.
|
||||
|
||||
## 2026-08-12 - navrhy
|
||||
|
||||
Pridany [09-navrh-rozsireni.md](09-navrh-rozsireni.md)
|
||||
a [10-runtime-a-kapacita.md](10-runtime-a-kapacita.md).
|
||||
|
||||
09 popisuje datove modely: akce navazane na typ nebo tag ticketu s telem jako
|
||||
operaci, vlastnim stromem nebo skriptem, typy a tagy ticketu, role a prava jako
|
||||
data misto unionu, zalozky a zpristupneni konektoru za firmu, konektory rozdelene
|
||||
na definici, zpristupneni a napojeni, cekaci krok, sablony zprav, vlastni widgety
|
||||
se seskupovanim a prevod na Postgres. Soucasti je kontrola navrhu proti celemu
|
||||
prikladu se dvema firmami jednoho cloveka.
|
||||
|
||||
10 popisuje vykonnou cast: cestu udalosti od webhooku pres inbox a dispatcher
|
||||
k workeru, frontu v Postgresu se `SKIP LOCKED`, davkovy odber, spravedlnost mezi
|
||||
klienty, idempotenci, retence a rozpocet na 150 klientu ve dvou scenarich objemu.
|
||||
|
||||
Nic z toho neni naprogramovane, oba dokumenty jsou navrh k rozhodnuti.
|
||||
Kod se nemenil.
|
||||
|
||||
## 2026-08-03
|
||||
|
||||
Tickety predelane na plnohodnotny konektor. Prestavaji byt polozkou v seznamu
|
||||
|
||||
Reference in New Issue
Block a user