# 99 - Zaznam zmen Nejnovejsi nahore. ## 2026-08-03 Tickety predelane na plnohodnotny konektor. Prestavaji byt polozkou v seznamu a stavaji se prichozim pozadavkem, ktery ma sveho cloveka a dohledatelny prubeh. Popis modelu je v [06-tickety.md](06-tickety.md). ### Pridano - Kanaly do ticketu: WhatsApp jako novy konektor, e-mail a hlasova linka jako plnohodnotne spoustece. - Konektor Tickety presunut do nove kategorie `servicedesk`, rozsiren o spoustece `created`, `unknown-customer`, `assigned`, `status-changed` a akce `assign`, `set-status`, `link-customer`. - Resitele (`src/data/people.ts`) oddelene od uzivatelu portalu, spojka e-mailem. - Log ticketu ve strome vcetne toho, co ktera volana sluzba vratila. - Prehled vytizeni tymu, kdo co ma u sebe, zaroven jako filtr seznamu. - Detail ticketu `/dashboard/tickety/:id`: prubeh a log, prirazeni, stav, zakaznik, komentare. - Filtry seznamu ticketu na serveru: resitel (vcetne `me` a `unassigned`), stav, kanal. - `providedFields` v katalogu konektoru: parametry, ktere spoustec predava sam. - Udalost `ticket.assigned` na sbernici i v portalu. - Endpointy `/api/dashboard/people`, `/tickets/workload`, `/tickets/:id` a POST varianty pro assign, status a comment. Vse ve Swaggeru. ### Zmeneno - `Ticket` ma misto volneho `requester` strukturovaneho `customer` s nullable `id` firmy v CRM, k tomu `channel`, `assignee` jako odkaz na cloveka a `automationId`. - `customer.id === null` je nosna informace, ne chybejici udaj. Prave na ni se pta podminka "mame zakaznika?" ve strome automatizace. - Simulace ticketu bere kanal a prepinac, jestli se zakaznik dohleda. Zakladany ticket dostane cely realisticky log. - Builder ukazuje parametry od sluzby jen ke cteni. Server je pri ulozeni vzdy dosadi z katalogu, a to jeste pred validaci stromu. ### Vedome neudelano Bugs a wishes zustavaji mimo. Vyvojarska agenda ma jiny zivotni cyklus a slucovat ji s tickety by znamenalo, ze ani jedna evidence nefunguje poradne. ## 2026-07-31 Prvni nasazeni aplikace do repozitare csbot-prototype. Puvodni sablona byla holy Express s endpointy `/` a `/health`. Nahradil ji kompletni web a klientsky portal. ### Pridano - Verejny web: homepage se sekcemi, sluzby, o nas, kontakt s formularem, 404. - Prihlaseni pres JWT s demo ucty. - Klientsky portal: prehled s grafem, tickety, incidenty, automatizace, konektory, nastaveni. - Builder automatizaci: strom akci, spoustec, vetveni podminkou. - Katalog 25 konektoru v 8 kategoriich. - Webhook s registrovanou adresou, token generuje server. - Zivy dashboard pres SSE, vcetne indikatoru spojeni a bublin s udalostmi. - Simulace provozu pod tlacitkem v postrannim menu portalu. - Swagger UI na `/docs` a OpenAPI definice na `/openapi.json`. - Dokumentace ve slozce `documentation/`. - `.gitignore`, ktery drzi `node_modules` a `dist` mimo repozitar. ### Zmeneno oproti sablone - Aplikace prepnuta na ESM (`"type": "module"`) a `module: NodeNext`. - Jeden container obsluhuje API i zbuildovanou React aplikaci z `dist/public`. - Dockerfile buildu je server i web, vysledny image dostava jen `dist`. - Port zustava 3000, naslouchani na `0.0.0.0` beze zmeny. ### Reseni reverse proxy - `ROOT_PATH` se cte z prostredi, nikde neni hardcoded. - Aplikace se mountuje na koren i na prefix, funguje tedy at Caddy prefix odstrani nebo ne. - Server vklada do `index.html` znacku `` a `window.__BASE_PATH__`, aby SPA nasla soubory i na vnorenych cestach. - OpenAPI `servers` obsahuje prefix, takze Swagger Try it out vola spravnou adresu. - Router ma `strict: true`, jinak by se presmerovani `/docs` na `/docs/` zacyklilo. ### Overeno lokalne S `ROOT_PATH=/apps/csbot-prototype`: - `/apps/csbot-prototype/health` i `/health` vraci 200, - `/apps/csbot-prototype/docs` presmeruje na `/docs/`, ta vraci Swagger UI, - `swagger-ui.css` se nacte pres prefix, - OpenAPI `servers` obsahuje `/apps/csbot-prototype`, - `index.html` na vnorene ceste obsahuje spravny ``, - prihlaseni pres prefix vraci token, - neexistujici cesta pod `/api` vraci JSON, ne HTML aplikace. ### Znama omezeni Data jsou v pameti, restart je vrati do vychoziho stavu. Obsah webu je ukazkovy. Ulozeny strom automatizace se nevykonava.