JiriUhlirandClaude Opus 5 79c9a729f6 Builder nabizi jen to, co jde zavolat
V nabidce kroku byly vsechny sluzby katalogu, i ty, ke kterym firma nema
napojeni. Slo tedy vybrat Raynet CRM bez konektoru a postavit strom, ktery pri
prvnim behu spadne na chybejicich udajich - a to se pozna az za tyden, kdyz
prijde prvni ostra udalost.

Nabizi se sluzba, ktera je obecna, nebo k ni firma ma napojeni. Obecne jsou ty,
co se bez konektoru obejdou: webhook, casovac, rucni spusteni, formular,
incident, ticket, HTTP, transformace, pauza a log. Priznak general uz existoval,
jen ho nikdo nepouzil na filtrovani nabidky.

Katalog se kvuli tomu nefiltruje, jen se oznacuje: GET /api/dashboard/services
prida ke kazde sluzbe connected. Sluzba z odpovedi nemizi, protoze log ticketu
a detail akce podle katalogu prekladaji ID operaci na jmena - kdyby zmizela,
zustalo by v uz zapsanem radku hole ID. Filtruje az builder. Pod nabidkou je
veta, kolik sluzeb ceka na napojeni, aby to nevypadalo, ze neexistuji.

Soukroma sluzba uz neni videt cizi firme. canSeeService vracelo spravci
platformy true driv, nez se vubec podivalo na viditelnost, takze zakazkova
integrace omezena na jednoho klienta se ukazovala i po prepnuti do jine firmy
a spravce si ji mohl vybrat do jeji automatizace. Nove rozhoduje firma, ne
clovek: kdyz je vybrana, plati jeji seznam, bez ni spravce platformy spravuje
katalog a vidi vsechno. Zaroven se konecne pouziva tenantHasService, tedy
zpristupneni sluzby firme pres nastaveni - dosud to bylo pole, ktere nikdo
necetl.

Overeno na bezici instanci: Polstryn SAP je pro tnt_logitrans v katalogu, pro
tnt_automia uz ne, a to i pro spravce platformy. V nabidce builderu pro
tnt_automia zbylo deset obecnych sluzeb plus iDoklad, na ktery firma napojeni
ma.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 13:04:54 +02:00
2026-09-02 13:04:54 +02:00
2026-09-02 13:04:54 +02:00
2026-07-31 14:42:26 +00:00

csbot-prototype

Web a klientsky portal firmy zamerene na automatizace, voiceboty, integrace, dashboardy, tickety a incident management.

Jedna aplikace v jednom containeru: Express obsluhuje API i zbuildovanou React aplikaci. Bezi v AppFactory za reverse proxy na /apps/<app-id>.

Rychly start

npm install
npm run build
npm start

Aplikace nasloucha na 0.0.0.0:3000.

Lokalni vyvoj s hot reloadem (API na 3000, web na 5173):

npm run dev

Povinne endpointy

Cesta Ucel
/health Health check pro AppFactory, vraci 200
/docs Swagger UI
/openapi.json OpenAPI definice

Verejne pres proxy jako /apps/<app-id>/health a /apps/<app-id>/docs.

Demo prihlaseni

E-mail Heslo Role
admin@automia.cz demo1234 interni spravce
klient@firma.cz demo1234 klient

Environment variables

Promenna Povinna Vychozi Popis
PORT ne 3000 Port containeru, urcuje AppFactory sablona
ROOT_PATH ne prazdne Prefix proxy, napr. /apps/csbot-prototype
JWT_SECRET ano v produkci - Podpis tokenu, bez nej aplikace nenastartuje
JWT_EXPIRES_IN ne 8h Platnost tokenu
PUBLIC_ORIGIN ne prazdne Verejna domena pro absolutni adresy webhooku
CORS_ORIGIN ne localhost Povolene originy, jen pro lokalni vyvoj

Secrets se nikdy nelogují ani neukladaji do kodu.

Skripty

Prikaz Co dela
npm run build Zbuilduje server i web do dist/
npm start Spusti zbuildovanou aplikaci
npm run dev Vyvoj s hot reloadem
npm run typecheck Kontrola typu bez generovani vystupu

Dokumentace

Podrobnosti jsou ve slozce documentation/. Pred upravou projektu staci precist ji, neni nutne prochazet cely kod.

Pravidla pro AI asistenty a nastroje jsou v AGENTS.md.

S
Description
No description provided
Readme
2.8 MiB
Languages
TypeScript 91.8%
JavaScript 6.4%
HTML 1.5%
CSS 0.3%