29de584df89b1867ecab4ae2896d63936d9a7b7d
Jakakoliv udalost se muze stat ticketem. Prijem je verejny endpoint na firmu (`POST /webhook/ticket/:token`), takze zalozit ticket jde i bez stavby stromu. Externi ID je unikatni V RAMCI FIRMY: dalsi zprava se stejnym ID se navesi na existujici ticket misto zalozeni druheho, a stejne ID u jine firmy je jiny ticket. Cislo a retezec jsou tentyz klic. Udalosti se drzi cele vcetne prijatych dat a jdou rozbalit v detailu - je to neco jineho nez log. Ticket nove nese firstResponseAt, resolvedAt, resolvedById a reopenCount. Bez nich neslo rict, kdo kolik odbavil ani jak dlouho zakaznik cekal. `getAgentStats` z toho pocita vykon resitelu vcetne medianovych casu a vracenych ticketu. Pocet vyresenych sam o sobe odmenuje toho, kdo tickety zaviral predcasne, proto je vraceni videt vedle nej. Widgety: klient konecne vola /widget-data. Endpoint existoval, ale nikdo ho nepouzival, takze vlastni widget hlasil "nepodarilo se zobrazit". Pribyl zdroj `connector` - co umi zjistit napojena sluzba, jde vytahnout do dlazdice pres tentyz skript, ktery pouziva krok automatizace. Vysledek se cachuje. Akce a widgety uz nejsou v nastaveni, maji vlastni zalozku vedle automatizaci. Telo akce se sklada stromem, ne JSONem v textarei - je to tentyz editor, jen misto karty spoustece je "spousti clovek tlacitkem na ticketu". Nova zalozka Lide se seznamem a detailem osoby. Seznam ticketu i lidi ma dva pohledy, tabulku a dlazdice. Opraveno: createTicket bral typeId, fields, tags i assigneeGroupId, ale nikdy je neukladal. Ticket zalozeny s typem zustaval bez typu a bez vlastnich poli. Dlouhe pomlcky, sipky, vypustky a bullety pryc z celeho projektu. Overeno 21 kontrolami proti bezicimu serveru v rezimu souboru. 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%