Kontrakt webhooku: objekt jde vybrat a odmitnuti je videt
Parametr spoustece `data` byl deklarovany jako type string a povinny, zatimco odesilatel ho posila jako objekt a v prvni zprave hovoru ho jeste nema. Kazde volani proto skoncilo na 400 a automatizace hodinu nedelala nic. Za tim byly tri veci, kazda sama o sobe malicherna: - rucne pridany parametr byl vychozi povinny, zatimco parametr odvozeny z ukazkoveho tela nepovinny. Dve ruzna vychozi nastaveni pro tutez vec v jednom formulari. Nove je nepovinny i rucne pridany: povinny znamena "odmitni volani" a do toho nema nikdo spadnout omylem - objekt a seznam neslo vybrat. declarableFieldTypes nabizel jen string, number, boolean a date, a TriggerConfig.tsx mel jeste treti kopii toho seznamu. Deklarovat data jako objekt tedy neslo, i kdyz matchesType objekt umi a operatorsByType pro nej ma operatory - odmitnuti nebylo nikde videt. Skoncilo jako console.warn v logu kontejneru: zadna udalost, zadny beh, nic na detailu automatizace Ten treti bod je ten podstatny. Chybu v kontraktu udela ten, kdo ho psal, ale 400 dostane odesilatel - a ten s tim nic nenadela, casto je to cizi sluzba, ktera volani neopakuje. Majitel automatizace se nedozvi nic a v portalu vypada vsechno v poradku. Detail automatizace proto ukazuje poslednich deset volani: cas, jestli proslo nebo ne, a u odmitnutych duvod. Telo se schvalne neuklada, duvod uz rika, co je spatne, a drzet payloady by znamenalo mit v pameti kopie zakaznickych dat. Seznam je v pameti, restart ho zahodi. Incident se z toho nezaklada a upozorneni se neposila: staci radek, implementator se ozve sam. Vzorova automatizace ma data opravene na object a nepovinne. Do navrhu 25 jsou zapsana rozhodnuti z diskuze: "moje tickety" jsou tickety prirazene mne, v helpdesku ty, ktere jsem zalozil ja, a helpdeskove pozadavky vidi lide podle teze hierarchie jako tickety. Sekce 6 popisuje tuhle zmenu. Overeno na bezici instanci s vlastnim DATA_DIR: telo s data jako objektem projde, prvni zprava hovoru s data null projde, telo bez callSid se dal odmita, a vsechna tri jsou videt v seznamu poslednich volani. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
72da07debe
commit
e8bb4d6e54
@@ -2,6 +2,44 @@
|
||||
|
||||
Nejnovejsi nahore.
|
||||
|
||||
## 2026-09-02 - Kontrakt webhooku: objekt jde vybrat a odmitnuti je videt
|
||||
|
||||
Parametr spoustece `data` byl deklarovany jako `type: string, required: true`,
|
||||
zatimco odesilatel ho posila jako objekt a v prvni zprave hovoru ho jeste nema.
|
||||
Kazde volani proto skoncilo na 400 a automatizace hodinu nedelala nic.
|
||||
|
||||
Za tim byly tri veci, kazda sama o sobe malicherna:
|
||||
|
||||
- **Rucne pridany parametr byl vychozi povinny**, zatimco parametr odvozeny
|
||||
z ukazkoveho tela nepovinny. Dve ruzna vychozi nastaveni pro tutez vec
|
||||
v jednom formulari. Nove je nepovinny i rucne pridany: povinny znamena
|
||||
"odmitni volani" a do toho nema nikdo spadnout omylem.
|
||||
- **Objekt a seznam neslo vybrat.** `declarableFieldTypes` nabizel jen `string`,
|
||||
`number`, `boolean` a `date`, a `TriggerConfig.tsx` mel jeste treti kopii toho
|
||||
seznamu. Deklarovat `data` jako objekt tedy neslo, i kdyz `matchesType` objekt
|
||||
umi a `operatorsByType` pro nej ma operatory. Ted jsou v nabidce oba a klient
|
||||
si vlastni kopii nedrzi.
|
||||
- **Odmitnuti nebylo nikde videt.** Skoncilo jako `console.warn` v logu
|
||||
kontejneru: zadna udalost, zadny beh, nic na detailu automatizace.
|
||||
|
||||
Ten treti bod je ten podstatny. Chybu v kontraktu udela ten, kdo ho psal, ale
|
||||
**400 dostane odesilatel** - a ten s tim nic nenadela, casto je to cizi sluzba,
|
||||
ktera volani neopakuje. Majitel automatizace se nedozvi nic a v portalu vypada
|
||||
vsechno v poradku.
|
||||
|
||||
Detail automatizace proto ukazuje **poslednich deset volani**: cas, jestli
|
||||
proslo nebo ne, a u odmitnutych duvod. Telo se schvalne neuklada, duvod uz rika,
|
||||
co je spatne, a drzet payloady by znamenalo mit v pameti kopie zakaznickych dat.
|
||||
Seznam je v pameti, restart ho zahodi - je to diagnostika posledni hodiny, ne
|
||||
historie. Incident se z toho nezaklada a upozorneni se neposila: staci radek,
|
||||
protoze implementator se ozve sam a tady je videt co.
|
||||
|
||||
Vzorova automatizace ma `data` opravene na `type: 'object', required: false`.
|
||||
|
||||
Overeno na bezici instanci s vlastnim DATA_DIR: telo s `data` jako objektem
|
||||
projde, prvni zprava hovoru s `data: null` projde, telo bez `callSid` se dal
|
||||
odmita - a vsechna tri jsou videt v seznamu poslednich volani.
|
||||
|
||||
## 2026-09-02 - Navrh: pristupny portal a viditelnost
|
||||
|
||||
Novy [25-navrh-pristupny-portal.md](25-navrh-pristupny-portal.md). Je to navrh,
|
||||
|
||||
Reference in New Issue
Block a user