38 lines
1.6 KiB
JavaScript
38 lines
1.6 KiB
JavaScript
/**
|
|
* @file CallStatusBadge.jsx
|
|
* @description Бейдж коммуникационного статуса для строк реестра групп.
|
|
* Показывает проблему автодозвона снаружи, не открывая карточку.
|
|
* Приоритет сверху вниз — один бейдж наружу.
|
|
*/
|
|
import React from "react";
|
|
|
|
// Приоритет: отказ > неверный номер > менеджеру > не нажимает > не дозвонились > слот от робота
|
|
export const resolveCallBadge = (g) => {
|
|
if (!g) return null;
|
|
|
|
// 1. Отказ от звонков
|
|
if (g.autocall_opt_out) {
|
|
return { label: "🚫 отказ от звонков", cls: "bg-[rgba(239,68,68,0.14)] text-[var(--color-danger)]", title: "Клиент отказался от автозвонков" };
|
|
}
|
|
|
|
// 2. Слот от робота (информационный, самый низкий приоритет — показываем если нет проблем)
|
|
if (g.deliveryDateSource === "autocall") {
|
|
return { label: "🤖 слот от робота", cls: "bg-[rgba(59,130,246,0.14)] text-[var(--color-accent)]", title: "Слот согласован роботом" };
|
|
}
|
|
|
|
return null;
|
|
};
|
|
|
|
export const CallStatusBadge = ({ group }) => {
|
|
const badge = resolveCallBadge(group);
|
|
if (!badge) return null;
|
|
return (
|
|
<span
|
|
className={`inline-flex items-center whitespace-nowrap rounded-full px-2 py-0.5 text-[10px] font-semibold ${badge.cls}`}
|
|
title={badge.title}
|
|
>
|
|
{badge.label}
|
|
</span>
|
|
);
|
|
};
|