Zalozit nebo doplnit ticket: doplneni konecne doplnuje

Krok mel v poli Obsah nastaveno {{rating}}. Data v behu prokazatelne byla,
v udalostech ticketu je hodnoceni videt cele, ale ticket zustal s prazdnym
obsahem.

intakeEvent deli praci na zalozeni a navazani na existujici ticket a vsechno
z `create` platilo jen pro tu prvni vetev. U existujiciho ticketu se doplnovaly
pouze vlastni pole a stitky, zbytek se tise zahodil. U hovoru to znamena, ze
obsah nedorazi nikdy: prvni zprava jen oznami, ze hovor zacal (in-progress,
data null), a prave ta ticket zaklada. Hodnoceni prijde az posledni zpravou,
kdy uz ticket existuje. Stav byl jedina vyjimka, protoze ho krok nastavuje
zvlast pres updateTicketStatus - proto fungoval a zbytek ne.

Jedno pravidlo misto dvou seznamu poli:
- neprazdna hodnota prepise, prazdna nemaze. IntakeInput ma na to `apply`,
  v `create` zustala jen zaloha predmetu a vychozi stav
- prazdna hodnota nemaze schvalne. Prave to byla puvodni obava, kvuli ktere se
  zapisovalo jen pri zalozeni: pozdejsi zprava bez jmena zakaznika je bezna
  a smazat kvuli ni jmeno by bylo horsi nez ho nedoplnit
- vyjimky zustavaji dve: zaloha predmetu z externiho ID plati jen pri vzniku
  a stav chodi pres updateTicketStatus, ktere resi i priznak vyrizeni, cas
  vyreseni a pocet znovuotevreni

Data smi chodit po castech:
- vlastni pole typu se scitaji podle klicu. Prvni zprava posle `data`, druha
  `data2` a ticket ma obe
- prazdny retezec pole nemaze. Sablona, ktera na nic neukazuje, se dosadi
  prazdnem, takze {"vysledek":"{{result}}"} u zpravy bez vysledku posilalo
  prazdno a prepsalo tim hodnotu z minule zpravy. Vymazat pole jde poslanim
  null, coz uz je zamer

Dalsi dve veci, ktere u toho vyplavaly:
- create.status se do createTicket vubec nepredaval, takze ticket vznikl
  s vychozim "Nový" a hned se prepsal. V logu pak stalo "stav Nový ->
  completed" u ticketu, ktery v nem nikdy nebyl
- faze byla zrusena uz driv, ale v katalogu po ni zbyval krok "Posunout do
  dalsi faze" a pole Faze u zalozeni ticketu. Ticket ani typ ticketu fazi
  nemaji, takze krok by selhal na chybejicim skriptu a pole se zahazovalo.
  Oboji je pryc

Krok navic v logu rekne, co doplnil: "doplnen TK-123, stav completed, obsah".
Driv radek jen oznamil, ze se ticket doplnil, a nebylo poznat cim.

Overeno na bezici instanci s vlastnim DATA_DIR, tremi zpravami o jednom hovoru:
prvni zaklada ticket s prazdnym obsahem, druha doplni obsah i zakaznika, treti
bez dat je nechava byt a meni jen stav. Scenar s `data` a pak `data2` ma na konci
obe hodnoty.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
JiriUhlir
2026-09-02 08:09:05 +02:00
co-authored by Claude Opus 5
parent 35d1e43307
commit 1134852bff
8 changed files with 324 additions and 85 deletions
+73
View File
@@ -2,6 +2,79 @@
Nejnovejsi nahore.
## 2026-09-02 - Zalozit NEBO DOPLNIT ticket: doplneni konecne doplnuje
Automatizace mela v kroku "Zalozit nebo doplnit ticket" pole Obsah nastavene na
`{{rating}}`. Data v behu prokazatelne byla - v udalostech ticketu je hodnoceni
videt cele - ale ticket zustal s prazdnym obsahem.
### Cim to bylo
`intakeEvent` deli praci na **zalozeni** a **navazani na existujici ticket**.
Vsechno z `create` platilo jen pro tu prvni vetev. U existujiciho ticketu se
doplnovaly pouze vlastni pole a stitky. Predmet, obsah, typ, priorita, kanal,
zakaznik, resitel ani skupina ne - tise se zahodily.
U hovoru to znamena, ze obsah nedorazi nikdy. Prvni zprava jen oznami, ze hovor
zacal (`status: in-progress`, `data: null`), a **prave ta ticket zaklada**, tedy
s prazdnym obsahem. Hodnoceni prijde az posledni zpravou, kdy uz ticket existuje.
Stav byl jedina vyjimka, protoze ho krok nastavuje zvlast pres
`updateTicketStatus`. Proto fungoval a zbytek ne, a proto to vypadalo jako chyba
jednoho pole.
### Jedno pravidlo misto dvou seznamu
Zalozeni a doplneni ted delaji totez:
> Neprazdna hodnota prepise, prazdna nemaze.
`IntakeInput` ma na to `apply`, v `create` zustal jen zaloha predmetu a vychozi
stav. Dva ruzne seznamy poli by se stejne zase rozesly a nekde by zas neco
chybelo.
Prazdna hodnota nemaze schvalne. Prave to byla puvodni obava, kvuli ktere se
zapisovalo jen pri zalozeni: pozdejsi zprava bez jmena zakaznika je bezna
a smazat kvuli ni jmeno by bylo horsi nez ho nedoplnit. Nove se prepise jen to,
co odesilatel opravdu poslal, takze pojistka plati a data se neztraci.
Dve vyjimky zustavaji: zaloha predmetu z externiho ID plati jen pri vzniku
a stav chodi pres `updateTicketStatus`, ktere resi i priznak vyrizeni, cas
vyreseni a pocet znovuotevreni.
### Data smi chodit po castech
Vlastni pole typu se **scitaji podle klicu**. Prvni zprava posle `data`, druha
`data2` a ticket ma obe. Odesilatel se nemusi predem dohodnout, co vsechno
posle, a nemusi posilat vsechno pokazde.
Prazdny retezec pritom pole nemaze. Sablona, ktera na nic neukazuje, se dosadi
prazdnem, takze `{"vysledek":"{{result}}"}` u zpravy bez vysledku posilalo
prazdno a **prepsalo tim hodnotu z minule zpravy**. Vymazat pole jde poslanim
`null`: to uz je zamer, ne vedlejsi ucinek nevyplnene sablony.
### Stav se ted ulozi uz pri vzniku
`create.status` se do `createTicket` vubec nepredaval, takze ticket vznikl
s vychozim "Nový" a hned se prepsal. V logu pak stalo "stav Nový -> completed"
u ticketu, ktery v "Nový" nikdy nebyl. Komentar u volajiciho tvrdil, ze uz je to
opravene - opravena byla jen jedna strana.
### Faze dorazena do konce
Faze byla zrusena uz driv, hodnoty z ni patri do stavu. V katalogu po ni ale
zbyval krok "Posunout do dalsi faze" a pole Faze u zalozeni ticketu. Ani jedno
nemelo co delat: ticket ani typ ticketu fazi nemaji. Krok by pri behu selhal na
chybejicim skriptu a pole se tise zahazovalo, takze `{{status}}` napsany do Faze
nedelal nic. Oboji je pryc.
### Aby bylo videt, ze se to ulozilo
Krok v logu rekne, co doplnil: `doplnen TK-123, stav completed, obsah`. Driv
radek jen oznamil, ze se ticket doplnil, a nebylo poznat cim - u dat, ktera
dorazi az druhou zpravou, je to zrovna ta informace, kterou clovek hleda.
## 2026-08-28 - pad portalu uz nesmi shodit stranku a zaklada incident
Ukazka tela webhooku shazovala cely builder pri psani cesty parametru. Chyba