JiriUhlirandClaude Opus 5 e701bc0e2c Tickety maji zalozky, fronta umi prirazovat
Seznam ticketu mel dva prepinace, "Moje tickety" a "Ve fronte", schovane mezi
ostatnimi filtry - splyvaly s nimi a vypadaly jako dalsi dva chipy. Jenze "co
mam u sebe", "co jeste nikdo nema" a "co je ve firme" nejsou filtry, jsou to
tri ruzne prace a kazda chce jinou tabulku.

Tri zalozky:

- Moje tickety, pro toho, kdo je veden jako resitel. Bez sloupce Resi, byl by
  tam porad on
- Nezarazene, pro kazdeho. Radky s rychlym prirazenim
- Vsechny tickety, jen pro toho, kdo vidi i cizi. Sloupec Resi a filtr na sekce

Sloupec Resi je jen ve Vsech: v Mych by ve vsech radcich stalo tyz jmeno a ve
fronte je z definice prazdny. Az v prehledu vsech ma smysl videt, kdo co ma
u sebe.

Zalozka Vsechny se nenabizi tomu, kdo vidi jen svoje - byl by to tentyz seznam.
Rika to Access.seesOthers, a Access.visibleGroups k tomu prida sekce, ktere smi
filtrovat: kdo vidi celou firmu vsechny, vedouci jen ty, ktere vede.

Nova QuickAssign: u kazdeho ticketu ve fronte tlacitko Vzit si a dve roletky,
komu a do ktere sekce. Prirazeni je ve fronte hlavni prace, ne jedna z mnoha
veci na detailu - otevirat kvuli tomu kazdy ticket znamena u dvaceti ticketech
ctyricet kliknuti navic. Dve roletky, ne jedna: clovek a sekce jsou dve ruzna
rozhodnuti. Kdo nesmi rozdavat praci ostatnim, vidi jen Vzit si. Endpointy uz
existovaly, nova je jen cesta k nim.

Vychozi zalozka se odvodi z adresy: odkaz z widgetu nese assignee, takze
unassigned otevre frontu a konkretni resitel nebo sekce pohled Vsechny. Bez
toho by clovek prisel z dlazdice "fronta bez resitele" a koukal na svoje.

Do navrhu 25 zapsano, ze hledani ma zapadnout do zalozky, ve ktere clovek stoji,
ne ji obejit, a vysledek se ma vracet do te same zalozky.

Overeno na bezici instanci: spravce platformy ma zalozku Vsechny a vsechny sekce
ve filtru, Vomacka jako vedouci Servicedesku jen svoji sekci, Kriz jako radovy
clen zalozku Vsechny nema. A cely pohyb ticketu frontou: admin preda TK-4819 do
sekce, Kriz ho vidi ve fronte, vezme si ho a objevi se mu v Mych ticketech.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 12:48:15 +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%