52999a961b2603f56bad3a95e4478997336256f8
Dve veci, ktere ze stropu viditelnosti vypadly. Nezarazeny ticket je ve stropu vzdycky. Prvni verze ho schovavala: kdo nevidel na celou firmu, nevidel ticket bez resitele a bez skupiny. Byla to diera v provozu - prichozi ticket, ktery jeste nikdo nesmeroval, nepatri do zadne sekce, takze by ho nevidel nikdo krome vedeni a nikdo by si ho nevzal. Fronta je spolecna, prave proto je to fronta. Jakmile si ho nekdo vezme, plati strop jako u kazdeho jineho. Dlazdice "Moje tickety" a "Fronta bez resitele" byly v navrhu od zacatku a nikdy se neudelaly. Presne jak navrh rikal: zaznam v katalogu a zdroj v builtinSources, zadna nova komponenta, data pocita tataz cesta jako u vykonu resitelu. Tri veci, ktere si to vyzadalo: - closed ve WidgetTicketFilter. Bez nej se vyrizene tickety nedaly odfiltrovat: stav je volny retezec a vyjmenovat vsechny podoby slova "hotovo" se neda. Prospeje to i vlastnim widgetum, dosud neslo postavit "otevrene tickety podle typu" - ResolvedScope.personId se plni vzdycky, ne jen u pohledu mine. Prehled se pta v pohledu tenant, takze filtr me nemel co dosadit a dlazdice vracela prazdno. Kdo je to "ja", na pohledu nezalezi - kdo neni veden jako resitel, tomu se "Moje tickety" nenabidnou. Ticket se prirazuje resiteli, ne uctu Vychozi rozlozeni ma nahore to, co clovek muze udelat, teprve pod tim cisla. Graf behu z vychozi sady ven, je to nejmene srozumitelna dlazdice pro noveho cloveka a zabira celou sirku. V katalogu zustava. Zmena se projevi jen tem, kdo si dashboard jeste neupravili. Overeno na bezici instanci: Kriz jako radovy clen sekce vidi ve svych ticketech TK-4820, ve fronte nezarazeny TK-4819 a v seznamu oba. Pred opravou personId vracela prvni dlazdice prazdno. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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
| 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.
Languages
TypeScript
91.8%
JavaScript
6.4%
HTML
1.5%
CSS
0.3%