supersam/src/data/mockAppData.js

940 lines
35 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export const demoUsers = [
{
id: "u-manager",
email: "manager@local",
name: "Анна Мельник",
phone: "+7 978 300-10-01",
role: "manager",
lastLogin: "2026-03-12T08:15:00Z",
botBindings: {
telegram: "@anna_manager",
vk: "id1045001",
messengerMax: null,
},
},
{
id: "u-production",
email: "production@local",
name: "Илья Корнеев",
phone: "+7 978 300-10-02",
role: "production_lead",
lastLogin: "2026-03-12T09:05:00Z",
botBindings: {
telegram: "@production_lead",
vk: null,
messengerMax: null,
},
},
{
id: "u-logistics",
email: "logistics@local",
name: "Ольга Синицына",
phone: "+7 978 300-10-03",
role: "logistician",
lastLogin: "2026-03-12T10:22:00Z",
botBindings: {
telegram: "@olga_route",
vk: "id1045002",
messengerMax: "olga.max",
},
},
{
id: "u-logistics-2",
email: "route@local",
name: "Павел Миронов",
phone: "+7 978 300-10-04",
role: "logistician",
lastLogin: "2026-03-12T08:47:00Z",
botBindings: {
telegram: "@pavel_route",
vk: null,
messengerMax: null,
},
},
{
id: "u-driver",
email: "driver@local",
name: "Артём Громов",
phone: "+7 978 300-10-06",
role: "driver",
lastLogin: "2026-03-12T06:55:00Z",
botBindings: {
telegram: null,
vk: null,
messengerMax: null,
},
},
{
id: "u-admin",
email: "admin@local",
name: "Максим Белов",
phone: "+7 978 300-10-05",
role: "admin",
lastLogin: "2026-03-12T11:41:00Z",
botBindings: {
telegram: "@max_admin",
vk: "id1045003",
messengerMax: "max.admin",
},
},
];
const baseDemoOrders = [
{
id: "o-1001",
orderNumber: "CD-240031",
customer: {
name: "Мария Волкова",
phone: "+7 978 000-12-31",
messenger: "СМС",
address: "Симферополь, ул. Тургенева, 18",
},
status: "Ожидает согласования доставки",
deliveryAgreementStatus: "Ожидание ответа",
managerId: "u-manager",
logisticianIds: ["u-logistics"],
assignedDriverId: null,
createdAt: "2026-03-11T06:45:00Z",
updatedAt: "2026-03-12T09:40:00Z",
scheduledDelivery: "2026-03-14T08:00:00Z",
items: [
"Кухонный гарнитур | 1 комплект",
"Фурнитура Blum | 12 шт",
"Монтажный комплект | 1 набор",
],
tags: ["срочно", "кухня"],
comments: ["Клиент просит подтверждение за 2 часа до доставки"],
orderNotes: [
{
id: "note-1",
authorName: "Анна Мельник",
text: "Проверить доступность подъезда для разгрузки.",
createdAt: "2026-03-11T08:00:00Z",
},
],
history: [
{
id: "h-1",
action: "Создан заказ",
oldStatus: null,
newStatus: "Новый",
userName: "Анна Мельник",
at: "2026-03-11T06:45:00Z",
},
{
id: "h-2",
action: "Подтверждение менеджером",
oldStatus: "Новый",
newStatus: "Подтверждён менеджером",
userName: "Анна Мельник",
at: "2026-03-11T07:10:00Z",
},
{
id: "h-3",
action: "Передан в производство",
oldStatus: "Подтверждён менеджером",
newStatus: "В очереди производства",
userName: "Анна Мельник",
at: "2026-03-11T07:45:00Z",
},
{
id: "h-4",
action: "Заказ готов к отгрузке",
oldStatus: "В производстве",
newStatus: "Готов к отгрузке",
userName: "Илья Корнеев",
at: "2026-03-12T08:20:00Z",
},
{
id: "h-5",
action: "Запущено согласование доставки",
oldStatus: "Готов к отгрузке",
newStatus: "Ожидает согласования доставки",
userName: "Система",
at: "2026-03-12T09:40:00Z",
},
],
chatMessages: [
{
id: "c-1",
sender: "bot",
channel: "СМС",
text: "Заказ CD-240031 готов. Выберите дату и половину дня доставки.",
sentAt: "2026-03-12T09:42:00Z",
},
{
id: "c-2",
sender: "client",
channel: "СМС",
text: "Подтвержу позже, вернусь после 16:00.",
sentAt: "2026-03-12T10:05:00Z",
},
],
internalMessages: [
{
id: "ic-1",
senderId: "u-manager",
senderName: "Анна Мельник",
text: "Клиент просил предварительный звонок перед доставкой.",
sentAt: "2026-03-12T09:50:00Z",
},
],
deliverySlots: [
{
id: "ds-1",
date: "2026-03-14",
time: "Первая половина дня",
logisticianId: "u-logistics",
status: "Ожидает подтверждения",
},
],
exception: null,
},
{
id: "o-1002",
orderNumber: "CD-240032",
customer: {
name: "Александр Савин",
phone: "+7 978 000-12-32",
messenger: "Эл. почта",
address: "Ялта, ул. Чехова, 9",
},
status: "Готов к отгрузке",
deliveryAgreementStatus: "Не начато",
managerId: "u-manager",
logisticianIds: ["u-logistics"],
assignedDriverId: null,
createdAt: "2026-03-10T11:20:00Z",
updatedAt: "2026-03-12T08:20:00Z",
scheduledDelivery: "2026-03-15T13:00:00Z",
items: ["Стеклопакет 2400x1800 | 2 шт", "Комплект крепежа | 1 набор"],
tags: ["стеклопакет"],
comments: ["Нужен созвон перед отгрузкой"],
orderNotes: [
{
id: "note-2",
authorName: "Илья Корнеев",
text: "Производство завершено, передаём логистике после фотофиксации.",
createdAt: "2026-03-12T08:35:00Z",
},
],
history: [
{
id: "h-6",
action: "Запущено производство",
oldStatus: "В очереди производства",
newStatus: "В производстве",
userName: "Илья Корнеев",
at: "2026-03-11T12:20:00Z",
},
{
id: "h-7",
action: "Заказ готов к отгрузке",
oldStatus: "В производстве",
newStatus: "Готов к отгрузке",
userName: "Илья Корнеев",
at: "2026-03-12T08:20:00Z",
},
],
chatMessages: [],
internalMessages: [
{
id: "ic-2",
senderId: "u-production",
senderName: "Илья Корнеев",
text: "Можно запускать сообщение клиенту после 14:00.",
sentAt: "2026-03-12T08:25:00Z",
},
],
deliverySlots: [],
exception: null,
},
{
id: "o-1003",
orderNumber: "CD-240033",
customer: {
name: "Екатерина Тарасова",
phone: "+7 978 000-12-33",
messenger: "СМС",
address: "Севастополь, пр. Октябрьской Революции, 51",
},
status: "Проблема доставки",
deliveryAgreementStatus: "Нет ответа",
managerId: "u-manager",
logisticianIds: ["u-logistics"],
assignedDriverId: null,
createdAt: "2026-03-09T12:00:00Z",
updatedAt: "2026-03-12T07:05:00Z",
scheduledDelivery: "2026-03-13T16:00:00Z",
items: ["Шкаф-купе | 1 шт", "Зеркальные фасады | 2 шт"],
tags: ["рисковый клиент"],
comments: ["Три безуспешные попытки подтверждения"],
orderNotes: [
{
id: "note-3",
authorName: "Ольга Синицына",
text: "Если клиент выйдет на связь, предлагать только вторую половину дня.",
createdAt: "2026-03-12T07:09:00Z",
},
],
history: [
{
id: "h-8",
action: "Запущено согласование доставки",
oldStatus: "Готов к отгрузке",
newStatus: "Ожидает согласования доставки",
userName: "Система",
at: "2026-03-11T10:05:00Z",
},
{
id: "h-9",
action: "Зафиксирована проблема доставки",
oldStatus: "Ожидает согласования доставки",
newStatus: "Проблема доставки",
userName: "Ольга Синицына",
at: "2026-03-12T07:05:00Z",
},
],
chatMessages: [
{
id: "c-3",
sender: "bot",
channel: "СМС",
text: "Напоминаем о необходимости выбрать дату доставки.",
sentAt: "2026-03-12T06:35:00Z",
},
],
internalMessages: [
{
id: "ic-3",
senderId: "u-logistics",
senderName: "Ольга Синицына",
text: "Если до 18:00 клиент не ответит, переводим в ручную обработку.",
sentAt: "2026-03-12T07:08:00Z",
},
],
deliverySlots: [
{
id: "ds-3",
date: "2026-03-13",
time: "Вторая половина дня",
logisticianId: "u-logistics",
status: "Просрочен",
},
],
exception: "Отсутствие ответа клиента",
},
{
id: "o-1004",
orderNumber: "CD-240034",
customer: {
name: "Сергей Марченко",
phone: "+7 978 000-12-34",
messenger: "СМС",
address: "Симферополь, ул. Крылова, 4",
},
status: "Назначен водитель",
deliveryAgreementStatus: "Подтверждено клиентом",
managerId: "u-manager",
logisticianIds: ["u-logistics-2"],
assignedDriverId: "u-driver",
driverRouteOrder: 2,
createdAt: "2026-03-10T09:15:00Z",
updatedAt: "2026-03-12T11:05:00Z",
scheduledDelivery: "2026-03-14T13:00:00Z",
items: ["Столешница дуб | 1 шт", "Опоры металлические | 4 шт"],
tags: ["сегодня"],
comments: ["Доставка в офис, разгрузка через задний вход"],
orderNotes: [
{
id: "note-4",
authorName: "Павел Миронов",
text: "Назначен на рейс СМФ-02, водитель предупреждён.",
createdAt: "2026-03-12T11:06:00Z",
},
],
history: [
{
id: "h-10",
action: "Клиент подтвердил доставку",
oldStatus: "Ожидает согласования доставки",
newStatus: "Доставка согласована",
userName: "Система",
at: "2026-03-12T09:20:00Z",
},
{
id: "h-11",
action: "Назначен водитель",
oldStatus: "Доставка согласована",
newStatus: "Назначен водитель",
userName: "Павел Миронов",
at: "2026-03-12T11:05:00Z",
},
],
chatMessages: [
{
id: "c-4",
sender: "bot",
channel: "СМС",
text: "Доставка подтверждена на 13 марта, вторая половина дня.",
sentAt: "2026-03-12T09:21:00Z",
},
],
internalMessages: [
{
id: "ic-4",
senderId: "u-logistics-2",
senderName: "Павел Миронов",
text: "Водитель выезжает со склада в 13:30.",
sentAt: "2026-03-12T11:08:00Z",
},
],
deliverySlots: [
{
id: "ds-4",
date: "2026-03-14",
time: "Вторая половина дня",
logisticianId: "u-logistics-2",
status: "Подтверждён",
},
],
exception: null,
},
{
id: "o-1006",
orderNumber: "CD-240036",
customer: {
name: "Ирина Лебедева",
phone: "+7 978 000-12-36",
messenger: "СМС",
address: "Симферополь, ул. Киевская, 112",
},
status: "Назначен водитель",
deliveryAgreementStatus: "Подтверждено клиентом",
managerId: "u-manager",
logisticianIds: ["u-logistics"],
assignedDriverId: "u-driver",
driverRouteOrder: 1,
createdAt: "2026-03-12T10:40:00Z",
updatedAt: "2026-03-13T18:10:00Z",
scheduledDelivery: "2026-03-14T08:30:00Z",
items: ["Пенал для ванной | 1 шт", "Крепёжный комплект | 1 набор"],
tags: ["утро", "симферополь"],
comments: ["Подъезд со стороны двора, заранее позвонить консьержу"],
orderNotes: [
{
id: "note-6",
authorName: "Ольга Синицына",
text: "Клиент просит приехать в начале интервала, до 11:00.",
createdAt: "2026-03-13T18:12:00Z",
},
],
history: [
{
id: "h-14",
action: "Клиент подтвердил доставку",
oldStatus: "Ожидает согласования доставки",
newStatus: "Доставка согласована",
userName: "Система",
at: "2026-03-13T15:20:00Z",
},
{
id: "h-15",
action: "Назначен водитель",
oldStatus: "Доставка согласована",
newStatus: "Назначен водитель",
userName: "Ольга Синицына",
at: "2026-03-13T18:10:00Z",
},
],
chatMessages: [
{
id: "c-6",
sender: "bot",
channel: "СМС",
text: "Доставка подтверждена на 14 марта, первая половина дня.",
sentAt: "2026-03-13T15:22:00Z",
},
],
internalMessages: [
{
id: "ic-5",
senderId: "u-logistics",
senderName: "Ольга Синицына",
text: "Хрупкая упаковка, просьба выгружать аккуратно.",
sentAt: "2026-03-13T18:15:00Z",
},
],
deliverySlots: [
{
id: "ds-6",
date: "2026-03-14",
time: "Первая половина дня",
logisticianId: "u-logistics",
status: "Подтверждён",
},
],
exception: null,
},
{
id: "o-1007",
orderNumber: "CD-240037",
customer: {
name: "Дмитрий Шестаков",
phone: "+7 978 000-12-37",
messenger: "СМС",
address: "Ялта, ул. Садовая, 27",
},
status: "Загружен",
deliveryAgreementStatus: "Подтверждено клиентом",
managerId: "u-manager",
logisticianIds: ["u-logistics-2"],
assignedDriverId: "u-driver",
driverRouteOrder: 1,
createdAt: "2026-03-13T08:10:00Z",
updatedAt: "2026-03-13T19:20:00Z",
scheduledDelivery: "2026-03-15T09:30:00Z",
items: ["Комод | 1 шт", "Полка навесная | 2 шт"],
tags: ["ялта", "завтра"],
comments: ["Доставка в частный дом, разгрузка у ворот"],
orderNotes: [
{
id: "note-7",
authorName: "Павел Миронов",
text: "Машина загружена вечером заранее, выезд утром по расписанию.",
createdAt: "2026-03-13T19:22:00Z",
},
],
history: [
{
id: "h-16",
action: "Назначен водитель",
oldStatus: "Доставка согласована",
newStatus: "Назначен водитель",
userName: "Павел Миронов",
at: "2026-03-13T16:45:00Z",
},
{
id: "h-17",
action: "Подтверждена загрузка",
oldStatus: "Назначен водитель",
newStatus: "Загружен",
userName: "Артём Громов",
at: "2026-03-13T19:20:00Z",
},
],
chatMessages: [
{
id: "c-7",
sender: "bot",
channel: "СМС",
text: "Доставка назначена на 15 марта, первая половина дня.",
sentAt: "2026-03-13T16:48:00Z",
},
],
internalMessages: [
{
id: "ic-6",
senderId: "u-driver",
senderName: "Артём Громов",
text: "Принял заказ в рейс, планирую выезд в 07:30.",
sentAt: "2026-03-13T19:25:00Z",
},
],
deliverySlots: [
{
id: "ds-7",
date: "2026-03-15",
time: "Первая половина дня",
logisticianId: "u-logistics-2",
status: "Подтверждён",
},
],
exception: null,
},
{
id: "o-1005",
orderNumber: "CD-240035",
customer: {
name: "Николай Дроздов",
phone: "+7 978 000-12-35",
messenger: "Эл. почта",
address: "Ялта, ул. Московская, 14",
},
status: "Закрыт",
deliveryAgreementStatus: "Подтверждено клиентом",
managerId: "u-manager",
logisticianIds: ["u-logistics-2"],
assignedDriverId: "u-driver",
driverRouteOrder: 1,
createdAt: "2026-03-08T09:00:00Z",
updatedAt: "2026-03-11T18:30:00Z",
scheduledDelivery: "2026-03-11T08:00:00Z",
items: ["Тумба под раковину | 1 шт", "Комплект крепежа | 1 набор"],
tags: ["архив"],
comments: ["Заказ завершён без замечаний"],
orderNotes: [
{
id: "note-5",
authorName: "Павел Миронов",
text: "Клиент подтвердил получение, заказ закрыт.",
createdAt: "2026-03-11T18:31:00Z",
},
],
history: [
{
id: "h-12",
action: "Доставка завершена",
oldStatus: "В пути",
newStatus: "Доставлен",
userName: "Артём Громов",
at: "2026-03-11T17:50:00Z",
},
{
id: "h-13",
action: "Заказ закрыт",
oldStatus: "Доставлен",
newStatus: "Закрыт",
userName: "Павел Миронов",
at: "2026-03-11T18:30:00Z",
},
],
chatMessages: [
{
id: "c-5",
sender: "bot",
channel: "Эл. почта",
text: "Доставка успешно завершена. Спасибо за подтверждение.",
sentAt: "2026-03-11T18:10:00Z",
},
],
internalMessages: [],
deliverySlots: [
{
id: "ds-5",
date: "2026-03-11",
time: "Первая половина дня",
logisticianId: "u-logistics-2",
status: "Завершён",
},
],
exception: null,
},
];
const extraOrderSeeds = [
{ suffix: 101, customerName: "Людмила Артемьева", status: "Новый", city: "Симферополь", item: "Шкаф распашной", messenger: "СМС", updatedAt: "2026-03-14T08:20:00Z" },
{ suffix: 102, customerName: "Павел Карпов", status: "Новый", city: "Ялта", item: "Стол обеденный", messenger: "Эл. почта", updatedAt: "2026-03-14T10:10:00Z" },
{ suffix: 103, customerName: "Алёна Беспалова", status: "Требует уточнения", city: "Евпатория", item: "Тумба ТВ", messenger: "СМС", updatedAt: "2026-03-14T06:40:00Z" },
{ suffix: 104, customerName: "Георгий Храмов", status: "Требует уточнения", city: "Севастополь", item: "Комод", messenger: "СМС", updatedAt: "2026-03-13T17:50:00Z" },
{ suffix: 105, customerName: "Валерия Фролова", status: "Подтверждён менеджером", city: "Симферополь", item: "Кухонный фасад", messenger: "СМС", updatedAt: "2026-03-14T11:35:00Z" },
{ suffix: 106, customerName: "Иван Мирошниченко", status: "Подтверждён менеджером", city: "Алушта", item: "Шкаф-купе", messenger: "Эл. почта", updatedAt: "2026-03-14T09:25:00Z" },
{ suffix: 107, customerName: "Марина Ермакова", status: "В очереди производства", city: "Симферополь", item: "Столешница", messenger: "СМС", updatedAt: "2026-03-13T12:10:00Z" },
{ suffix: 108, customerName: "Руслан Гладков", status: "В очереди производства", city: "Ялта", item: "Гардеробная секция", messenger: "Эл. почта", updatedAt: "2026-03-13T08:00:00Z" },
{ suffix: 109, customerName: "Светлана Коваль", status: "В очереди производства", city: "Севастополь", item: "Дверь межкомнатная", messenger: "СМС", updatedAt: "2026-03-12T13:45:00Z" },
{ suffix: 110, customerName: "Михаил Орлов", status: "В производстве", city: "Симферополь", item: "Кухня линейная", messenger: "СМС", updatedAt: "2026-03-13T09:30:00Z" },
{ suffix: 111, customerName: "Татьяна Шубина", status: "В производстве", city: "Ялта", item: "Стеллаж", messenger: "СМС", updatedAt: "2026-03-12T15:20:00Z" },
{ suffix: 112, customerName: "Андрей Беляев", status: "В производстве", city: "Евпатория", item: "Фасады МДФ", messenger: "Эл. почта", updatedAt: "2026-03-14T07:55:00Z" },
{ suffix: 113, customerName: "Елена Бондарь", status: "Готов к отгрузке", city: "Симферополь", item: "Пенал для кухни", messenger: "СМС", updatedAt: "2026-03-14T05:15:00Z" },
{ suffix: 114, customerName: "Кирилл Нестеров", status: "Готов к отгрузке", city: "Ялта", item: "Стол письменный", messenger: "СМС", updatedAt: "2026-03-14T09:45:00Z" },
{ suffix: 115, customerName: "Наталья Зотова", status: "Готов к отгрузке", city: "Севастополь", item: "Шкаф угловой", messenger: "Эл. почта", updatedAt: "2026-03-13T18:05:00Z" },
{ suffix: 116, customerName: "Константин Матвеев", status: "Ожидает согласования доставки", city: "Симферополь", item: "Комод высокий", messenger: "СМС", updatedAt: "2026-03-14T08:05:00Z" },
{ suffix: 117, customerName: "Лариса Шевцова", status: "Ожидает согласования доставки", city: "Ялта", item: "Стеллаж модульный", messenger: "СМС", updatedAt: "2026-03-13T06:50:00Z" },
{ suffix: 118, customerName: "Евгений Филимонов", status: "Ожидает согласования доставки", city: "Севастополь", item: "Тумба под мойку", messenger: "СМС", updatedAt: "2026-03-12T08:15:00Z" },
{ suffix: 119, customerName: "Диана Рябова", status: "Доставка согласована", city: "Симферополь", item: "Навесной шкаф", messenger: "СМС", updatedAt: "2026-03-14T11:00:00Z" },
{ suffix: 120, customerName: "Олег Вишневский", status: "Доставка согласована", city: "Алушта", item: "Стол раскладной", messenger: "Эл. почта", updatedAt: "2026-03-14T04:20:00Z" },
{ suffix: 121, customerName: "Полина Исаева", status: "Назначен водитель", city: "Симферополь", item: "Кровать", messenger: "СМС", updatedAt: "2026-03-14T10:40:00Z" },
{ suffix: 122, customerName: "Роман Щукин", status: "Назначен водитель", city: "Ялта", item: "Прихожая", messenger: "Эл. почта", updatedAt: "2026-03-14T09:05:00Z" },
{ suffix: 123, customerName: "Юлия Баранова", status: "Загружен", city: "Севастополь", item: "Шкаф-пенал", messenger: "СМС", updatedAt: "2026-03-14T07:30:00Z" },
{ suffix: 124, customerName: "Виктор Громыко", status: "В пути", city: "Симферополь", item: "Гарнитур в прихожую", messenger: "СМС", updatedAt: "2026-03-14T11:20:00Z" },
{ suffix: 125, customerName: "Инна Самойлова", status: "Доставлен", city: "Евпатория", item: "Шкаф в ванную", messenger: "Эл. почта", updatedAt: "2026-03-14T12:05:00Z" },
];
const DELIVERY_STATUSES = new Set(["Назначен водитель", "Загружен", "В пути", "Доставлен", "Закрыт"]);
const LOGISTICS_OR_DELIVERY_STATUSES = new Set([
"Ожидает согласования доставки",
"Доставка согласована",
"Назначен водитель",
"Загружен",
"В пути",
"Доставлен",
"Закрыт",
]);
const getAgreementStatusForDemo = (status) => {
if (status === "Ожидает согласования доставки") {
return "Ожидание ответа";
}
if (status === "Доставка согласована" || DELIVERY_STATUSES.has(status)) {
return "Подтверждено клиентом";
}
return "Не начато";
};
const getDeliverySlotStatusForDemo = (status) => {
if (status === "Ожидает согласования доставки") {
return "Ожидает подтверждения";
}
if (status === "Доставка согласована" || status === "Назначен водитель") {
return "Подтверждён";
}
if (status === "Загружен" || status === "В пути") {
return "В рейсе";
}
if (status === "Доставлен" || status === "Закрыт") {
return "Завершён";
}
return "Черновик";
};
const buildExtraDemoOrder = (seed, index) => {
const logisticianId = index % 2 === 0 ? "u-logistics" : "u-logistics-2";
const assignedDriverId =
DELIVERY_STATUSES.has(seed.status) || seed.status === "Доставка согласована"
? "u-driver"
: null;
const scheduledDelivery = `2026-03-${String(16 + (index % 6)).padStart(2, "0")}T${index % 2 === 0 ? "09:00:00Z" : "13:00:00Z"}`;
return {
id: `o-extra-${seed.suffix}`,
orderNumber: `CD-24${seed.suffix}`,
customer: {
name: seed.customerName,
phone: `+7 978 100-${String(seed.suffix).padStart(3, "0")}`,
messenger: seed.messenger,
address: `${seed.city}, ул. Демо, ${10 + index}`,
},
status: seed.status,
deliveryAgreementStatus: getAgreementStatusForDemo(seed.status),
managerId: "u-manager",
logisticianIds: LOGISTICS_OR_DELIVERY_STATUSES.has(seed.status) ? [logisticianId] : [],
assignedDriverId,
driverRouteOrder: assignedDriverId ? (index % 6) + 1 : null,
createdAt: `2026-03-${String(9 + (index % 5)).padStart(2, "0")}T${String((index % 5) + 7).padStart(2, "0")}:00:00Z`,
updatedAt: seed.updatedAt,
scheduledDelivery,
items: [`${seed.item} | 1 шт`, "Комплект фурнитуры | 1 набор"],
tags: [seed.city.toLowerCase(), seed.status.toLowerCase()],
comments: [`Демо-заказ для проверки нагрузки на статусе «${seed.status}».`],
orderNotes: [
{
id: `note-extra-${seed.suffix}`,
authorName: "Система",
text: `Контрольная демо-запись для этапа «${seed.status}».`,
createdAt: seed.updatedAt,
},
],
history: [
{
id: `history-extra-${seed.suffix}`,
action: "Демо-переход",
oldStatus: null,
newStatus: seed.status,
userName: "Система",
at: seed.updatedAt,
},
],
chatMessages:
seed.status === "Ожидает согласования доставки"
? [
{
id: `chat-extra-${seed.suffix}`,
sender: "bot",
channel: seed.messenger,
text: `Клиенту отправлено согласование по заказу CD-24${seed.suffix}.`,
sentAt: seed.updatedAt,
},
]
: [],
internalMessages: [
{
id: `internal-extra-${seed.suffix}`,
senderId: logisticianId,
senderName: logisticianId === "u-logistics" ? "Ольга Синицына" : "Павел Миронов",
text: `Демо-комментарий для статуса «${seed.status}».`,
sentAt: seed.updatedAt,
},
],
deliverySlots: LOGISTICS_OR_DELIVERY_STATUSES.has(seed.status)
? [
{
id: `slot-extra-${seed.suffix}`,
date: scheduledDelivery.slice(0, 10),
time: index % 2 === 0 ? "Первая половина дня" : "Вторая половина дня",
logisticianId,
status: getDeliverySlotStatusForDemo(seed.status),
},
]
: [],
exception: seed.status === "Проблема доставки" ? "Требуется ручной разбор логистом" : null,
};
};
const extraDemoOrders = extraOrderSeeds.map(buildExtraDemoOrder);
export const demoOrders = [...baseDemoOrders, ...extraDemoOrders];
export const demoOrderGroups = [
{
id: "953c5bda-7e77-47af-9b7f-9d2c2cf3e7c5",
groupKey: "3939375462|14.04.26",
customerName: "Калинина Дарья Егоровна",
customerPhone: "3939375462",
customerDate: "14.04.26",
ordersCount: 1,
readyCount: 1,
notReadyCount: 0,
orderNumbers: ["СФ Т\\ЕА-23094"],
status: "ready_for_notification",
deliveryStatus: "agreed",
deliveryHalfDay: "Первая половина дня",
smsSentAt: null,
createdFromExchangeAt: null,
sourceKey: null,
legacyCustomerName: null,
legacyCustomerPhone: null,
legacyCustomerPhoneNormalized: null,
legacyCustomerDate: null,
legacyOrdersTotal: null,
legacyOrdersReady: null,
legacyOrdersNotReady: null,
sourceOrders: null,
createdAt: "2026-05-05T09:43:53.750061+00:00",
updatedAt: "2026-05-05T09:43:53.750061+00:00",
},
{
id: "6420ea0d-7a4d-4a18-94cc-7d6d0a4a22ac",
groupKey: "2263561168|17.04.26",
customerName: "Петров Константин Владимирович",
customerPhone: "2263561168",
customerDate: "17.04.26",
ordersCount: 2,
readyCount: 2,
notReadyCount: 0,
orderNumbers: ["СФ Т\\ЕА-21974", "СФ Т\\ЕА-21975"],
status: "ready_for_notification",
deliveryStatus: "driver_assigned",
deliveryHalfDay: "Вторая половина дня",
smsSentAt: "2026-05-05T11:10:00+00:00",
createdFromExchangeAt: "2026-05-05T09:20:00+00:00",
sourceKey: "1c-21974",
legacyCustomerName: null,
legacyCustomerPhone: null,
legacyCustomerPhoneNormalized: null,
legacyCustomerDate: null,
legacyOrdersTotal: null,
legacyOrdersReady: null,
legacyOrdersNotReady: null,
sourceOrders: null,
createdAt: "2026-05-05T09:43:53.750061+00:00",
updatedAt: "2026-05-05T11:10:00+00:00",
},
{
id: "2e5c0ca6-dbd9-4dfd-95ca-f449b8d12a24",
groupKey: "8926690125|17.03.26",
customerName: "Иванов Степан Дмитриевич",
customerPhone: "8926690125",
customerDate: "17.03.26",
ordersCount: 1,
readyCount: 0,
notReadyCount: 1,
orderNumbers: ["СФ Т\\ЕА-16477"],
status: "manual_work",
deliveryStatus: "pending_confirmation",
smsSentAt: null,
createdFromExchangeAt: null,
sourceKey: "1c-16477",
legacyCustomerName: null,
legacyCustomerPhone: null,
legacyCustomerPhoneNormalized: null,
legacyCustomerDate: null,
legacyOrdersTotal: null,
legacyOrdersReady: null,
legacyOrdersNotReady: null,
sourceOrders: null,
createdAt: "2026-05-05T09:43:53.750061+00:00",
updatedAt: "2026-05-05T09:43:53.750061+00:00",
},
{
id: "30108722-e37b-424e-8307-328f7d80706e",
groupKey: "4227515073|11.04.26",
customerName: "Романов Кирилл Викторович",
customerPhone: "4227515073",
customerDate: "11.04.26",
ordersCount: 3,
readyCount: 3,
notReadyCount: 0,
orderNumbers: ["СФ Т\\ЕА-23120", "СФ Т\\ЕА-23123", "СФ Т\\ЕА-23129"],
status: "ready_for_notification",
deliveryStatus: "loaded",
deliveryHalfDay: "Первая половина дня",
smsSentAt: null,
createdFromExchangeAt: null,
sourceKey: "1c-23120",
legacyCustomerName: null,
legacyCustomerPhone: null,
legacyCustomerPhoneNormalized: null,
legacyCustomerDate: null,
legacyOrdersTotal: null,
legacyOrdersReady: null,
legacyOrdersNotReady: null,
sourceOrders: null,
createdAt: "2026-05-05T09:43:53.750061+00:00",
updatedAt: "2026-05-05T09:43:53.750061+00:00",
},
{
id: "78a5db18-c603-4317-bfdb-989a69979e9a",
groupKey: "6206926364|20.04.26",
customerName: "Антонов Ярослав",
customerPhone: "6206926364",
customerDate: "20.04.26",
ordersCount: 1,
readyCount: 1,
notReadyCount: 0,
orderNumbers: ["СФ Т\\ЕА-24508"],
status: "sms_sent",
deliveryStatus: "on_route",
deliveryHalfDay: "Вторая половина дня",
smsSentAt: "2026-05-05T12:45:00+00:00",
createdFromExchangeAt: null,
sourceKey: null,
legacyCustomerName: null,
legacyCustomerPhone: null,
legacyCustomerPhoneNormalized: null,
legacyCustomerDate: null,
legacyOrdersTotal: null,
legacyOrdersReady: null,
legacyOrdersNotReady: null,
sourceOrders: null,
createdAt: "2026-05-05T09:43:53.750061+00:00",
updatedAt: "2026-05-05T12:45:00+00:00",
},
];
export const demoNotifications = [
{
id: "n-1",
type: "warning",
title: "Ожидается ответ клиента",
description: "CD-240031: клиенту отправлено согласование доставки, ответ ещё не получен.",
},
{
id: "n-2",
type: "success",
title: "Доставка подтверждена",
description: "CD-240034: клиент подтвердил доставку на вторую половину дня.",
},
{
id: "n-3",
type: "error",
title: "Нет ответа клиента",
description: "CD-240033: требуется ручная обработка логистом.",
},
{
id: "n-4",
type: "success",
title: "Заказ готов к отгрузке",
description: "CD-240032: производство завершено, можно запускать согласование доставки.",
},
];