Resitel je clenstvi uctu, firma z ARES, prepinani jazyku schovane

Resitel uz neni vlastni zaznam spojeny s uctem pres e-mail: je to
clenstvi uctu ve firme a jeho ID je ID uctu. Popisek, kapacita, externi
ID a zapnuti visi na clenstvi, takze clovek ve dvou firmach je v kazde
jinak a spravce firmy ho vypne jen u sebe. Odebrani z firmy odebere jen
clenstvi. Stara data se pri startu jednou prevedou (migratePeople.ts),
vcetne odkazu v ticketech, skupinach, automatizacich, akcich a widgetech.
Sprava lidi v zalozce Lide zaklada ucty, pozvanka uz nema volbu resitele.

Zalozeni firmy z registru ARES: hledani podle IC nebo nazvu, dotazeni
IC, DIC, sidla a pravni formy, vyber soucasnych statutarnich zastupcu
a prokury, ucty spravce firmy s nahradnim e-mailem IC-poradi@placeholder.cz.
Vychozi rozlozeni dashboardu bez resitele neobsahuje list.myTickets.

Prepinani jazyku je docasne schovane (MULTILANG_ENABLED), web je cesky.
Dokumentace aktualizovana.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
JiriUhlir
2026-09-09 13:09:35 +02:00
co-authored by Claude Fable 5.1
parent 6eed909a0d
commit bc6508e1f3
41 changed files with 1415 additions and 328 deletions
+43 -5
View File
@@ -97,9 +97,14 @@ Sprava zaznamu ma u kazde entity stejnou petici (seznam, detail, vytvoreni,
uprava, mazani) na `/api/dashboard/settings/<entita>`, protoze ji dela jedna
fabrika (`src/routes/crud.ts`):
`tenants`, `users`, `roles`, `people`, `groups`, `ticket-types`, `actions`,
`tenants`, `users`, `roles`, `groups`, `ticket-types`, `actions`,
`widgets`, `features`.
`people` ma stejne cesty a stejne pravo (`people.manage`), ale vlastni
handlery v `settings.ts`: zaznam, ktery se meni, je ucet bez firmy
a odpoved je pohled za jednu firmu, coz fabrika neumi. Popis je nize
v sekci Lide.
## Format chyb
Jednotny pro cele API:
@@ -239,13 +244,43 @@ v uz nactenem seznamu.
toho, co ktera volana sluzba vratila.
`POST /api/dashboard/tickets/:id/assign` s telem `{"assigneeId": null}` vrati
ticket do fronty. Neznamy resitel vraci 404, ne tiche odpojeni.
ticket do fronty. `assigneeId` je ID uctu; kdo ve firme ticketu neni clenem,
vraci 404, ne tiche odpojeni.
`POST /api/dashboard/tickets/:id/claim` je **prevzeti prace**, ne prehozeni:
volajici si bere ticket sam a telo je prazdne. Smi to u ticketu bez resitele
a u ticketu ve skupine, ve ktere je. Kdyz uz ticket nekdo resi, vraci 409, resp.
403 u cizi skupiny - vzit nekomu rozdelanou praci je jine rozhodnuti a chce to
pravo `ticket.assign.others`. Kdo neni vedeny jako resitel, dostane 400.
pravo `ticket.assign.others`. Kdo ve firme nema clenstvi (neni resitel),
dostane 400.
## Lide (resitele)
Resitel je clenstvi uctu ve firme, ne vlastni zaznam; ID resitele je ID uctu.
Duvody v [06-tickety.md](06-tickety.md). `Person` je pohled: `id` a `name`,
`email`, `enabled` z uctu, `tenantId`, `role` (popisek), `capacity`,
`externalIds` a `roleIds` z clenstvi. Tentyz clovek ve dvou firmach prijde
dvakrat se stejnym `id`.
`GET /api/dashboard/people` vraci cleny zvolene firmy s povolenym uctem
a jejich skupiny (`items`, `groups`, `meId`). Sprava je na
`/api/dashboard/settings/people` pod pravem `people.manage`:
| Volani | Telo | Co se stane |
| ----------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET people` | | vcetne vypnutych uctu |
| `POST people` | `{ name, email, password?, roleIds?, role?, capacity?, externalIds?, enabled? }` | zalozi ucet (heslo nahodne, kdyz chybi; role `role_agent`, kdyz chybi) s clenstvim ve firme, nebo prida clenstvi uctu, ktery s tim e-mailem uz je |
| `PATCH people/:id` | tataz pole, vsechna nepovinna | `name`, `email` (unikatni) a `enabled` meni ucet, ostatni clenstvi v teto firme |
| `DELETE people/:id` | | odebere jen clenstvi; ucet bez clenstvi, ktery neni spravce platformy, se vypne |
Spravce firmy na spravce platformy nesaha, stejne jako u `/users`. Udalosti
jsou `person.created`, `person.updated`, `person.deleted` s payloadem
`{ id, person }`, u smazani `{ id }`. `enabled` je za clenstvi: vypne cloveka
jen v teto firme, ucet a ostatni clenstvi zustavaji.
`/users` (spravce platformy) bere u clenstvi vedle `roleIds` i
`seesAllTenant`, `role`, `capacity` a `externalIds` a pri uprave je zachova,
takze zmena role v Nastaveni nesmaze kapacitu nastavenou v Lidech.
## Pozvanky do firmy
@@ -269,7 +304,9 @@ pripojil cizi adresu ke sve firme a videl by jeji data.
Sprava pozvanek (`/api/dashboard/invites`) chce pravo `user.manage`. Seznam
vraci u kazde pozvanky **celou adresu** vcetne prefixu proxy, aby slo rovnou
kopirovat - relativni cesta se do zpravy vlepit neda.
kopirovat - relativni cesta se do zpravy vlepit neda. Pozvanka nese jen
`email` a `roleIds`; stary priznak `asPerson` se prijme a ignoruje, protoze
resitelem je kazdy clen firmy.
## Akce na ticketu
@@ -300,7 +337,7 @@ v [07-firmy-a-prava.md](07-firmy-a-prava.md).
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `GET ares/companies?query=` | same cislice (1 az 8) hledaji IC presne, jinak nazev, nejvys 10. U firmy, ktera uz v portalu je, `existingTenantId` |
| `GET ares/companies/{ico}/persons` | soucasni statutari a prokura z verejneho rejstriku, u kazdeho navrzeny e-mail `IC-poradi@placeholder.cz` |
| `POST ares/tenants` | zalozi firmu a ucty vybranych osob, vraci firmu a seznam uctu |
| `POST ares/tenants` | zalozi firmu a ucty vybranych osob (`role_admin`, popisek clenstvi z funkci v rejstriku, kapacita 8), vraci firmu a seznam uctu. Ucet je zaroven resitel |
Chyba registru je `ares_error` s kodem podle toho, co ARES vratil - neni to
chyba naseho API a nema se opakovat automaticky. Adresa registru je
@@ -356,6 +393,7 @@ Pravo se vzdy pta **za firmu zaznamu**, ne za prepnutou firmu. Cizi firma je
| ----------------------------------------------- | --------------------------------------------------------------------- |
| firmy CRUD, ARES | spravce platformy |
| uzivatele CRUD | spravce platformy, nebo `user.manage` jen v ramci sve firmy |
| lide (`/settings/people`) | `people.manage` jen v ramci sve firmy |
| pozvanky | `user.manage`, role jen z te firmy |
| konektory create, update, delete, test | `connector.manage` |
| automatizace create, update, delete, regenerate | `automation.edit` |