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:
co-authored by
Claude Fable 5.1
parent
6eed909a0d
commit
bc6508e1f3
@@ -2,6 +2,92 @@
|
||||
|
||||
Nejnovejsi nahore.
|
||||
|
||||
## 2026-09-09 - Prepinani jazyku docasne schovane
|
||||
|
||||
Do rozhodnuti o nove znacce je web jen cesky. `MULTILANG_ENABLED = false`
|
||||
v `web/src/i18n/index.ts` schova prepinac v hlavicce i v mobilnim menu a
|
||||
`detect()` vraci vzdy `cs`; ulozena volba `en` se ignoruje, jinak by nekdo
|
||||
zustal v anglictine bez cesty zpet. Slovniky a `LanguageSwitch` zustavaji,
|
||||
zapnuti je jedna konstanta. Navrh znacky je zatim jen artefakt "Navrh znacky",
|
||||
do projektu se neaplikoval.
|
||||
|
||||
## 2026-09-09 - Resitel je clenstvi uctu, ne vlastni zaznam
|
||||
|
||||
Prvni priznak: osoby zalozene pres ARES dostaly ucet, ale v Lidech nebyl
|
||||
nikdo, ani ten, za koho se spravce prepnul. Puvodni oprava chtela k uctu
|
||||
dozakladat zaznam resitele. Pri ni se ukazalo, ze chyba je hloubeji: resitel
|
||||
byl vlastni zaznam (`ppl_...`) spojeny s uctem **pres e-mail**, a e-mail je
|
||||
prihlasovaci jmeno, ktere spravce muze zmenit. Zmena adresy vazbu tise
|
||||
rozbila - clovek prestal videt "moje tickety" a nikdo nevedel proc. Kazde
|
||||
misto, ktere zaklada ucet (pozvanka, ARES, Nastaveni), navic muselo pamatovat
|
||||
na druhy zaznam a jedno vzdycky zapomnelo.
|
||||
|
||||
Rozhodnuti: spojovat pres ID misto e-mailu by znamenalo dal drzet dva zaznamy
|
||||
o jednom cloveku. Oba se proto slily: **resitel je clenstvi uctu ve firme**,
|
||||
kazdy clen muze mit tickety u sebe, ID resitele je ID uctu.
|
||||
|
||||
### Model
|
||||
|
||||
`Membership` (`src/shared/users.ts`) ma navic `role` (popisek), `capacity`
|
||||
(vychozi 8) a `externalIds`. `Person` (`src/shared/people.ts`) je jen pohled
|
||||
na jedno clenstvi: `id` = ID uctu, `tenantId` = firma clenstvi, jmeno
|
||||
a e-mail z uctu, `enabled` = stav uctu, `roleIds` = role clenstvi. Tentyz
|
||||
clovek ve dvou firmach je dvakrat se stejnym `id`.
|
||||
|
||||
`src/data/people.ts` uz nic neuklada: zmizely `personStore`, `seedPeople`,
|
||||
`refreshPeople` a `findPersonByEmail`. Pohled sklada jedine misto,
|
||||
`personView`; k tomu `listPeople(tenantIds)`, `listAllPeople`,
|
||||
`findPerson(id, tenantId)` (neclen je `undefined`), `personName(id)`,
|
||||
`findPersonByExternalId(value, tenantIds)` a `personIdFor(user, tenantId)`.
|
||||
Skupiny (`personGroup`) zustavaji, clenove odkazuji na ID uctu.
|
||||
|
||||
### Migrace starych dat
|
||||
|
||||
`src/data/migratePeople.ts` bezi pri startu z `bootstrapData`, az po nacteni
|
||||
ticketu a automatizaci, a jen kdyz ma stara kolekce `person` zaznamy. Ke
|
||||
kazdemu najde ucet podle e-mailu, nebo ho zalozi (nahodne heslo, `enabled`
|
||||
podle resitele, clenstvi `role_agent`), prenese popisek, kapacitu a externi
|
||||
ID na clenstvi a prepise `ppl_x -> usr_y` v ticketech (`assigneeId`,
|
||||
`resolvedById`), stromech automatizaci (nahrada v JSON), skupinach, telech
|
||||
akci a zdrojich vlastnich widgetu. Prevedene zaznamy smaze a zaloguje
|
||||
`[migrace] resitele -> ucty: ...`. Chyba jen loguje, zaznam se zkusi znovu
|
||||
pri dalsim startu. Historicke udalosti v logu ticketu si stara ID nechavaji.
|
||||
|
||||
### API a web
|
||||
|
||||
`/api/dashboard/settings/people` ma stejne cesty a pravo `people.manage`,
|
||||
ale pod nim jsou ucty: `POST` zalozi ucet (heslo nahodne, kdyz chybi, role
|
||||
`role_agent`) s clenstvim, nebo prida clenstvi uctu s tim e-mailem; `PATCH`
|
||||
meni jmeno, e-mail (unikatni) a `enabled` na uctu a popisek, kapacitu,
|
||||
externi ID a role na clenstvi; `DELETE` odebere jen clenstvi a ucet bez
|
||||
clenstvi bez `platformAdmin` vypne. Udalosti `person.*` nesou `{ id, person }`.
|
||||
`/users` bere u clenstvi i `seesAllTenant`, `role`, `capacity`, `externalIds`
|
||||
a pri uprave je zachova. Pozvanka prisla o `asPerson` (prijme se a ignoruje).
|
||||
ARES zaklada ucet `role_admin` s popiskem clenstvi z funkci v rejstriku.
|
||||
|
||||
V portalu spravce v Lidech upravuje cleny (pole vyse, role jako vyber vice
|
||||
hodnot), `InvitePanel` ztratil prepinac "zalozit i jako resitele" a texty
|
||||
o "resiteli bez uctu" a "spojce pres e-mail" jsou pryc. `hasPerson` pro
|
||||
katalog widgetu a vychozi rozlozeni znamena "je clenem firmy".
|
||||
|
||||
### Ukazkova data
|
||||
|
||||
Ukazkovi resitele jsou ukazkove ucty (heslo `demo1234`): `usr_1`
|
||||
admin@automia.cz (Vedouci tymu, 5), `usr_2` karel.vomacka@automia.cz
|
||||
(Automia Servicedesk 8, Nordis Spravce servicedesku 8), `usr_3`
|
||||
martin.kriz@automia.cz (Integrace a API, 6), `usr_novakova`, `usr_bartos`,
|
||||
`usr_horakova`, `usr_kadlec`. Ukazkove tickety, automatizace a skupina
|
||||
`grp_servicedesk` odkazuji na ne.
|
||||
|
||||
### Ucet ve vic firmach
|
||||
|
||||
Ucet muze byt ve vic firmach, proto se v Lidech odebira jen clenstvi
|
||||
(`DELETE /settings/people/:id`), ne ucet. Ze stejneho duvodu je i `enabled`
|
||||
na clenstvi: spravce firmy vypne cloveka u sebe, ne v jine firme, kde
|
||||
pracuje dal. Cely ucet vypina jen sprava uzivatelu. `Person.enabled` je
|
||||
`ucet.enabled && clenstvi.enabled !== false`; vypnute clenstvi se nenabizi
|
||||
k prirazeni ani nehleda podle externiho ID.
|
||||
|
||||
## 2026-09-09 - Novy ucet videl na dashboardu chybejici widget
|
||||
|
||||
Kdo se prihlasil do nove firmy (nebo jako nove zalozeny ucet), videl jako
|
||||
|
||||
Reference in New Issue
Block a user