cbf8b4fb43
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
174 lines
5.8 KiB
TypeScript
174 lines
5.8 KiB
TypeScript
/**
|
||
* Mock-сделки для UI-разводки. Заменяется на API-fetch при backend-интеграции
|
||
* (`GET /api/deals?tenant_id=...&status=...&page=...`).
|
||
*
|
||
* Slug'и статусов берутся из `composables/leadStatuses.ts` (источник —
|
||
* `db/schema.sql:2130`, не BRANDBOOK §3.6).
|
||
*/
|
||
import type { LeadStatus } from './leadStatuses';
|
||
|
||
export interface MockDeal {
|
||
id: number;
|
||
name: string;
|
||
phone: string;
|
||
statusSlug: LeadStatus['slug'];
|
||
project: string;
|
||
manager: { initials: string; name: string };
|
||
cost: number;
|
||
// F2: реальная стоимость лида в копейках (снимок rub-списания) или null —
|
||
// отдельное поле от legacy mock-`cost`, чтобы карточка показывала факт списания.
|
||
costKopecks?: number | null;
|
||
receivedMinutesAgo: number;
|
||
// Редизайн «Сделки» (2026-05-17). Опциональны — Канбан/MOCK_DEALS не трогаем.
|
||
signalType?: 'call' | 'site' | 'sms' | null;
|
||
city?: string | null;
|
||
comment?: string | null;
|
||
receivedAt?: string | null; // ISO — колонка «Поставлен»
|
||
// Drawer-«легенда» сделки (18.05.2026): Тип + Источник проекта (read-only).
|
||
projectSignalType?: 'site' | 'call' | 'sms' | null;
|
||
projectSignalIdentifier?: string | null;
|
||
projectSmsKeyword?: string | null;
|
||
projectSmsSenders?: string[] | null;
|
||
}
|
||
|
||
export const MOCK_DEALS: MockDeal[] = [
|
||
{
|
||
id: 1,
|
||
name: 'Анна Соколова',
|
||
phone: '+7 (916) 871-23-45',
|
||
statusSlug: 'new',
|
||
project: 'Натяжные потолки',
|
||
manager: { initials: 'ИП', name: 'Иван П.' },
|
||
cost: 1850,
|
||
receivedMinutesAgo: 7,
|
||
},
|
||
{
|
||
id: 2,
|
||
name: 'Дмитрий Кузнецов',
|
||
phone: '+7 (903) 412-58-90',
|
||
statusSlug: 'in_progress',
|
||
project: 'Окна Москва',
|
||
manager: { initials: 'ОР', name: 'Ольга Р.' },
|
||
cost: 2400,
|
||
receivedMinutesAgo: 23,
|
||
},
|
||
{
|
||
id: 3,
|
||
name: 'Светлана Иванова',
|
||
phone: '+7 (925) 309-44-12',
|
||
statusSlug: 'in_progress',
|
||
project: 'Окна Москва',
|
||
manager: { initials: 'ИП', name: 'Иван П.' },
|
||
cost: 2100,
|
||
receivedMinutesAgo: 47,
|
||
},
|
||
{
|
||
id: 4,
|
||
name: 'Марина Лебедева',
|
||
phone: '+7 (915) 778-90-32',
|
||
statusSlug: 'won',
|
||
project: 'Натяжные потолки',
|
||
manager: { initials: 'ОР', name: 'Ольга Р.' },
|
||
cost: 2350,
|
||
receivedMinutesAgo: 105,
|
||
},
|
||
{
|
||
id: 5,
|
||
name: 'Алексей Петров',
|
||
phone: '+7 (905) 132-46-87',
|
||
statusSlug: 'in_progress',
|
||
project: 'Окна Москва',
|
||
manager: { initials: 'ИП', name: 'Иван П.' },
|
||
cost: 2400,
|
||
receivedMinutesAgo: 132,
|
||
},
|
||
{
|
||
id: 6,
|
||
name: 'Екатерина Морозова',
|
||
phone: '+7 (926) 554-21-09',
|
||
statusSlug: 'in_progress',
|
||
project: 'Натяжные потолки',
|
||
manager: { initials: 'ОР', name: 'Ольга Р.' },
|
||
cost: 1950,
|
||
receivedMinutesAgo: 178,
|
||
},
|
||
{
|
||
id: 7,
|
||
name: 'Игорь Васильев',
|
||
phone: '+7 (917) 882-30-55',
|
||
statusSlug: 'viewed',
|
||
project: 'Окна Москва',
|
||
manager: { initials: 'ИП', name: 'Иван П.' },
|
||
cost: 2400,
|
||
receivedMinutesAgo: 215,
|
||
},
|
||
{
|
||
id: 8,
|
||
name: 'Тимур Алиев',
|
||
phone: '+7 (903) 765-09-21',
|
||
statusSlug: 'in_progress',
|
||
project: 'Натяжные потолки',
|
||
manager: { initials: 'ОР', name: 'Ольга Р.' },
|
||
cost: 1850,
|
||
receivedMinutesAgo: 263,
|
||
},
|
||
{
|
||
id: 9,
|
||
name: 'Наталья Семёнова',
|
||
phone: '+7 (910) 244-67-83',
|
||
statusSlug: 'lost',
|
||
project: 'Окна Москва',
|
||
manager: { initials: 'ИП', name: 'Иван П.' },
|
||
cost: 2400,
|
||
receivedMinutesAgo: 312,
|
||
},
|
||
{
|
||
id: 10,
|
||
name: 'Олег Григорьев',
|
||
phone: '+7 (909) 411-52-76',
|
||
statusSlug: 'in_progress',
|
||
project: 'Натяжные потолки',
|
||
manager: { initials: 'ОР', name: 'Ольга Р.' },
|
||
cost: 1850,
|
||
receivedMinutesAgo: 388,
|
||
},
|
||
{
|
||
id: 11,
|
||
name: 'Ирина Зайцева',
|
||
phone: '+7 (916) 671-98-04',
|
||
statusSlug: 'in_progress',
|
||
project: 'Окна Москва',
|
||
manager: { initials: 'ИП', name: 'Иван П.' },
|
||
cost: 2400,
|
||
receivedMinutesAgo: 445,
|
||
},
|
||
{
|
||
id: 12,
|
||
name: 'Сергей Никитин',
|
||
phone: '+7 (925) 198-43-58',
|
||
statusSlug: 'won',
|
||
project: 'Натяжные потолки',
|
||
manager: { initials: 'ОР', name: 'Ольга Р.' },
|
||
cost: 1850,
|
||
receivedMinutesAgo: 521,
|
||
},
|
||
];
|
||
|
||
/**
|
||
* Доступные проекты и менеджеры для NewDealDialog. На API: GET /api/projects /
|
||
* GET /api/managers (фильтр по tenant_id из middleware).
|
||
*/
|
||
export const MOCK_PROJECTS = ['Натяжные потолки', 'Окна Москва', 'Кухни на заказ', 'Двери Премиум'] as const;
|
||
|
||
export interface MockManager {
|
||
initials: string;
|
||
name: string;
|
||
}
|
||
|
||
export const MOCK_MANAGERS: MockManager[] = [
|
||
{ initials: 'ИП', name: 'Иван П.' },
|
||
{ initials: 'ОР', name: 'Ольга Р.' },
|
||
{ initials: 'СК', name: 'Светлана К.' },
|
||
{ initials: 'АН', name: 'Андрей Н.' },
|
||
];
|