JiriUhlirandClaude Opus 5 0c405ea55a Otevrena stranka sekala prehravani videa
Pri otevrenem portalu zacalo vedle nej sekat prehravani videa, po zavreni bylo
hned dobre. Neslo o smycku v kodu: zivy prenos udalosti je SSE, jedno spojeni na
celou aplikaci, a setTimeout je v nem jen na odstup pri znovupripojeni. Byly to
tri veci.

Rozmazavani plne barvy. `.glass`, podklad skoro kazdeho panelu, mel
backdrop-filter blur(14px). Jenze pod kartami je plna barva (bg-ink-950 na
dashboardu), takze se rozmazavala jednolita plocha: zadny rozdil videt nebyl
a kazda karta si za to drzela vlastni rozmazanou vrstvu ve skladaci. V kodu je
glass na 58 mistech, na jedne obrazovce jich je snadno dvacet. Rozmazani zustava
na peti mistech, kde pod nim neco opravdu projizdi: lepici hlavicky, podklad
modalu, prekryv menu na mobilu.

Nekonecne animace nad velkymi rozmazanymi plochami. Prihlaseni a verejny web
mely zare o velikosti 26 az 34 rem s blur(120px), kterym se donekonecna
animovala pruhlednost - to znamena prepocitavat obrovskou vrstvu sedesatkrat za
sekundu, i kdyz se na strance nic nedeje. Zare zustaly, animace zmizela.
Pribylo prefers-reduced-motion.

Kazda udalost prekreslila cely dashboard. EventStreamProvider mel v tomtez
kontextu stav spojeni, odber i seznam poslednich udalosti. Seznam se meni pri
kazde udalosti, takze se menila cela hodnota kontextu a prekreslil se kazdy, kdo
si jen zaridil odber - tedy vsechny dotazy s refetchOn na strance, i kdyz o ten
typ udalosti nestaly. Pri behu automatizace se cely dashboard prekresloval
nekolikrat za sekundu, a s nim dvacet rozmazanych vrstev. Kontext je proto
rozdeleny: useEventStream da stav a odber, useEventLog seznam udalosti.

Filtr sekci nefiltroval. Seznam ticketu sklada adresu dotazu v useMemo, ale
v zavislostech chybely groupId, typeId, tag a stage - adresa se po prepnuti
sekce neprepocitala a data se nenacetla znovu. Driv to nevadilo, byly to filtry
nastavitelne jen odkazem, ktere se po nacteni nemenily. Se zalozkou "Vsechny
tickety" a jejim vyberem sekce je to chyba, ktera je videt.

Overeno: groupId=grp_servicedesk vrati jeden ticket, groupId=none zbyle dva.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 15:23:43 +02:00
2026-07-31 14:42:26 +00:00
2026-09-02 15:02:39 +02: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
BRAND_NAME ne WorkNuke Nazev produktu v titulku Swaggeru a OpenAPI

Klient je staticky soubor, takze runtime promenne containeru do prohlizece nedosahnou. Nazev znacky si bere z VITE_BRAND_NAME pri buildu, jinak z vychozi hodnoty v web/src/config/brand.ts.

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%