feat(autocall-log): пишем дату согласованного слота (chosen_date) в журнал звонков

AGI уже передаёт дату (chosen_date) — теперь она сохраняется в autocall_log,
поэтому карточка и журнал показывают конкретный день, а не «день 1/2».
This commit is contained in:
Hermes 2026-09-25 16:16:43 +02:00
parent 462c2b4892
commit 3a4cceb9a4
1 changed files with 9 additions and 0 deletions

View File

@ -94,6 +94,13 @@ Deno.serve(async (request) => {
const scenario = body.scenario || "A"; const scenario = body.scenario || "A";
const callType = body.call_type === "pkp" ? "pkp" : "dlv"; const callType = body.call_type === "pkp" ? "pkp" : "dlv";
const wasTest = body.was_test_mode ?? false; const wasTest = body.was_test_mode ?? false;
// Дата, которую робот реально назвал в разговоре (AGI передаёт её в chosen_date).
// Нужна и для заказа, и для строки лога: в карточке автодозвона показываем дату,
// а не «завтра/послезавтра» — «день 1» это первый рабочий день окна, который
// в пятницу оказывается понедельником.
const chosenDate = /^\d{4}-\d{2}-\d{2}$/.test(body.chosen_date || "")
? (body.chosen_date as string)
: null;
// ── Идемпотентность: повторный curl с тем же uniqueid обновляет строку ── // ── Идемпотентность: повторный curl с тем же uniqueid обновляет строку ──
const { data: existing } = await supabase const { data: existing } = await supabase
@ -108,6 +115,7 @@ Deno.serve(async (request) => {
outcome: body.outcome, outcome: body.outcome,
dtmf_day: body.dtmf_day ?? null, dtmf_day: body.dtmf_day ?? null,
dtmf_half: body.dtmf_half ?? null, dtmf_half: body.dtmf_half ?? null,
chosen_date: chosenDate,
changed: body.changed ?? false, changed: body.changed ?? false,
was_test_mode: body.was_test_mode ?? false, was_test_mode: body.was_test_mode ?? false,
}).eq("id", existing.id); }).eq("id", existing.id);
@ -122,6 +130,7 @@ Deno.serve(async (request) => {
attempt_no: attemptNo, attempt_no: attemptNo,
scenario, scenario,
call_type: callType, call_type: callType,
chosen_date: chosenDate,
call_started_at: body.call_started_at || new Date().toISOString(), call_started_at: body.call_started_at || new Date().toISOString(),
answered_at: body.answered_at || null, answered_at: body.answered_at || null,
duration_sec: body.duration_sec ?? null, duration_sec: body.duration_sec ?? null,