Opakovani do logu nepise a ticket se rodi s poslanym stavem
Overeno proti serveru: tri shodne POSTy udelaly jednu udalost s pocitadlem 3, ale krok se do logu porad zapsal trikrat. Zadani bylo, ze opakovani ma byt informace, ne dalsi radek. - Krok muze rict quiet a jeho radek se do logu ticketu nezapise. - Ticket vznika uz s poslanym stavem. Predtim se zalozil s vychozim "Novy" a hned se prepsal, takze v logu stalo "stav Novy -> completed" u ticketu, ktery v tom stavu nikdy nebyl. Odtud i to "Novy" ve widgetu. - Zaznam zmen: celkovy pocet behu se pocita od zavedeni historie po dnech, puvodni citac se den ode dne nedelil a rozpocitat ho zpetne neni z ceho. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f1e8253169
commit
fc0c2ff6c7
@@ -44,6 +44,14 @@ export interface StepOutcome {
|
||||
summary: string;
|
||||
detail?: string | null;
|
||||
outputs: Record<string, unknown>;
|
||||
/**
|
||||
* true = do logu ticketu se radek nezapise.
|
||||
*
|
||||
* Pro prijem stejne zpravy podesate: nic se nestalo, takze v logu nema co
|
||||
* byt. Pocet opakovani je videt u prichozi udalosti, coz je jedno cislo
|
||||
* misto osmdesati radku.
|
||||
*/
|
||||
quiet?: boolean;
|
||||
/** Vyplnene, kdyz krok zalozil nebo nasel ticket. Dalsi kroky ho pak maji. */
|
||||
ticketId?: string;
|
||||
}
|
||||
@@ -154,6 +162,12 @@ const handlers: Record<string, Handler> = {
|
||||
fields,
|
||||
create: {
|
||||
subject: subject || inputs.externalId || 'Bez předmětu',
|
||||
/*
|
||||
* Stav uz pri zalozeni. Bez toho ticket vznikl s vychozim "Nový"
|
||||
* a hned se prepsal, takze v logu stalo "stav Nový -> completed"
|
||||
* u ticketu, ktery v nem nikdy nebyl.
|
||||
*/
|
||||
...(inputs.status?.trim() ? { status: inputs.status.trim() } : {}),
|
||||
body: inputs.body ?? '',
|
||||
typeId: inputs.typeId?.trim() || null,
|
||||
priority: priorities.includes(inputs.priority as TicketPriority)
|
||||
@@ -189,14 +203,20 @@ const handlers: Record<string, Handler> = {
|
||||
const closed = boolInput(inputs.closed);
|
||||
let note = '';
|
||||
|
||||
if (wanted || closed !== undefined) {
|
||||
/*
|
||||
* Pri zalozeni uz stav sedi, nastavoval by se podruhe. Menit ho ma smysl
|
||||
* jen u ticketu, ktery uz existoval - nebo kdyz se meni priznak vyrizeni.
|
||||
*/
|
||||
const needsStatus = !result.created && wanted !== undefined && wanted !== result.ticket.status;
|
||||
|
||||
if (needsStatus || closed !== undefined) {
|
||||
updateTicketStatus(
|
||||
result.ticket.id,
|
||||
wanted || result.ticket.status,
|
||||
[context.tenantId],
|
||||
closed,
|
||||
);
|
||||
note = wanted ? `, stav ${wanted}` : '';
|
||||
note = needsStatus ? `, stav ${wanted}` : '';
|
||||
if (closed !== undefined) note += closed ? ', vyřízený' : ', nevyřízený';
|
||||
}
|
||||
|
||||
@@ -209,6 +229,8 @@ const handlers: Record<string, Handler> = {
|
||||
ok: true,
|
||||
summary: `bez změny, ${result.ticket.id} už tuhle zprávu dostal (${result.event.repeats}x)`,
|
||||
detail: null,
|
||||
// Do logu ne. Pocet je videt u prichozi udalosti.
|
||||
quiet: true,
|
||||
ticketId: result.ticket.id,
|
||||
outputs: {
|
||||
ticketId: result.ticket.id,
|
||||
|
||||
@@ -61,6 +61,8 @@ export interface StepResult {
|
||||
kind: 'action' | 'condition';
|
||||
label: string;
|
||||
ok: boolean;
|
||||
/** true = do logu ticketu se nezapisuje. Nic se nestalo, viz StepOutcome. */
|
||||
quiet?: boolean;
|
||||
/**
|
||||
* false = opakovat nema smysl.
|
||||
*
|
||||
@@ -152,7 +154,8 @@ export async function runFlow(
|
||||
|
||||
// Log ticketu dostane cely prubeh naraz, ne po jednom zapisu.
|
||||
if (options.ticketId && results.length > 0) {
|
||||
appendTrace(options.ticketId, results.map(toTrace));
|
||||
const worthLogging = results.filter((step) => step.quiet !== true);
|
||||
if (worthLogging.length > 0) appendTrace(options.ticketId, worthLogging.map(toTrace));
|
||||
}
|
||||
|
||||
const failed = results.find((step) => !step.ok);
|
||||
@@ -215,6 +218,8 @@ async function runAction(
|
||||
ok: outcome.ok,
|
||||
summary: outcome.summary,
|
||||
detail: outcome.detail ?? null,
|
||||
// Krok muze rict, ze se nic nestalo a do logu ticketu nepatri.
|
||||
quiet: outcome.quiet === true,
|
||||
// Vnitrni krok selhava na spatnem nastaveni, ne na vypadku. Opakovani
|
||||
// by jen pettkrat zopakovalo tutéz chybu.
|
||||
retryable: false,
|
||||
|
||||
Reference in New Issue
Block a user