Podminka se muze ptat na vic veci naraz

Podminka byla prave jedna otazka. Slozitejsi vetveni se muselo skladat
z vnorenych podminek, takze "vysledek dorazil" a v nem "vysledek je X" byly dve
urovne stromu misto jedne vety. U tri hodnot, ktere maji dopadnout stejne, to
byly tri urovne.

Model: rules (otazky) a match ('all' = a zaroven, 'any' = nebo). Stara podoba
fieldId/operator/value primo na kroku se dal cte, prevadi ji rulesOf - jedine
misto, kde se to deje. Kdyby se fieldId cetlo primo, krok ulozeny driv by po
zmene modelu prisel o svou otazku a vetvil by vzdycky stejne, tise a bez chyby.
Zapisuje se uz vzdycky rules.

fieldId je v typu nepovinne schvalne: prekladac tim ukazal vsech pet mist,
ktera podminku ctou (vyhodnoceni, obe hlasky do logu, kontrola pri ukladani,
kontrola nedodelku).

Proc jedna uroven a ne vyrazy se zavorkami: dve treti podminek jsou "vsechny
tohle" nebo "cokoliv z tohohle". Zavorky by v rozhrani znamenaly editor vyrazu,
ktery uz nikdo neuklika, a textovy zapis by navic zahodil odkaz na parametr pres
ID - diky nemu prejmenovani parametru podminku nerozbije a builder umi nabidnout
jen operatory, ktere na dany typ sedi. Az se ukaze, ze jedna uroven nestaci,
da se textovy zapis pridat nad tentyz vyhodnocovac. Opacne to nejde.

V builderu radek na otazku, tlacitko "Přidat otázku" a od druhe otazky prepinac
"sedí všechny" / "sedí aspoň jedna". Posledni otazka nejde smazat: podminka bez
otazky by tise nevetvila, runtime ji povazuje za nesplnenou a zaloguje to.

Radek podminky v logu nese vsechny otazky i s tim, ktera rozhodla - bez rozpadu
by u spojene podminky bylo videt jen "nesplneno".

Overeno na bezici instanci, strom se dvema spojenymi podminkami a peti volanimi:
vysledek nedorazil (nic), Chybějící informace (prirazeno), Přesměrování
a Mimo téma (zavreno pres any), Něco jiného (nic). Strom ulozeny ve stare
podobe se nacte a ulozi beze zmeny.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
JiriUhlir
2026-09-07 09:16:19 +02:00
co-authored by Claude Opus 5
parent 1532ea0af7
commit 9f4b8c0596
9 changed files with 507 additions and 144 deletions
+69
View File
@@ -2,6 +2,75 @@
Nejnovejsi nahore.
## 2026-09-07 - Podminka se muze ptat na vic veci naraz
Podminka byla **prave jedna otazka**. Slozitejsi vetveni se muselo skladat
z vnorenych podminek, takze "vysledek dorazil" a v nem "vysledek je X" byly dve
urovne stromu misto jedne vety. U tri hodnot, ktere maji dopadnout stejne, to
byly tri urovne, ve kterych se nikdo nevyzna.
### Model
```ts
rules: ConditionRule[] // otazky
match: 'all' | 'any' // a zaroven / nebo
```
Stara podoba (`fieldId`, `operator`, `value` primo na kroku) se dal cte, prevadi
ji `rulesOf` - **jedine misto, kde se to deje**. Kdyby se `fieldId` cetlo primo,
krok ulozeny driv by po zmene modelu prisel o svou otazku a vetvil by vzdycky
stejne, tise a bez chyby. Zapisuje se uz vzdycky `rules`.
Aby se na zadne cteni nezapomnelo, je `fieldId` v typu **nepovinne**. Prekladac
tim ukazal vsech pet mist, ktera podminku ctou: vyhodnoceni, obe hlasky do logu,
kontrola pri ukladani a kontrola nedodelku.
### Proc jedna uroven a ne vyrazy se zavorkami
Dve treti podminek jsou "vsechny tohle" nebo "cokoliv z tohohle". Zavorky by
v rozhrani znamenaly editor vyrazu, ktery uz nikdo neuklika, a textovy zapis by
navic zahodil to podstatne: **odkaz na parametr pres ID**. Diky nemu prejmenovani
parametru podminku nerozbije a builder umi nabidnout jen operatory, ktere na dany
typ sedi, a rovnou rict, ze se odkazuje na parametr, ktery vznika az pozdeji.
Az se ukaze, ze jedna uroven nestaci, da se textovy zapis pridat nad tentyz
vyhodnocovac. Opacne to nejde.
### V builderu
Radek na otazku, k tomu tlacitko "Přidat otázku" a od druhe otazky prepinac
**sedí všechny** nebo **sedí aspoň jedna**. U jedne otazky se prepinac nenabizi,
nema co spojovat. Posledni otazka nejde smazat: podminka bez otazky by tise
nevetvila, proto ji runtime rovnou povazuje za nesplnenou a zaloguje to.
### V logu
Radek podminky nese vsechny otazky i s tim, ktera rozhodla:
```text
Podmínka: result isNotEmpty a zároveň result eq Chybějící informace: nesplněno
result = "Přesměrování": sedí
result = "Přesměrování", porovnáno s "Chybějící informace": nesedí
```
Bez rozpadu by u spojene podminky bylo videt jen "nesplneno" a ne to, ktera
otazka to zpusobila.
### Overeno na bezici instanci
Strom se dvema spojenymi podminkami, pet prichozich volani:
| Co prislo | Prirazeno | Vyrizeny |
| --------------------------- | ------------- | -------- |
| vysledek nedorazil | ne | ne |
| Chybějící informace | ano | ne |
| Přesměrování | ne | ano |
| Mimo téma | ne | ano |
| Něco jiného | ne | ne |
Prvni podminka je `all` (dorazil a zaroven je to Chybejici informace), druha
`any` (Přesměrování nebo Vyřešeno nebo Mimo téma). Strom ulozeny ve stare podobe
se nacte a ulozi beze zmeny.
## 2026-09-07 - Automatizace zavirala tickety uz pri zvoneni
Na instanci nebyl ani jeden nevyrizeny ticket: **vsech 131 melo `closed: true`**,