# АНАЛИТИКА # Промт по созданию отчета конверсий на активных звонках ты архитектор программного обеспечения и программист нужно сделать аналитику по конверсии по холодным звонкам в CRM Voronka (измененный форк Yetiforce CRM), сейчас есть интеграция телефонии и CRM и все звонки регистрируются, входящие звонки создают сделки автоматически сами, а исходящие звонки не создают сделки их создают менеджеры по продажам когда в разговоре получают информацию об интересе к продуктам, нужно чтобы была таблица месяца с 28-31 по столбцам номера дня и показатели по строкам нужно выводить результаты отработки исходящих и входящих звонков при этом разделять по сотрудникам по отделам по воронкам и смотреть как итоговые результаты так и в разрезах сотрудников и воронок и источников, к источникам активных продаж относим исходящие звонки больше чем 15 секунд (или 30 секунд это настройка) холодные звонки без воронки - по лидам т.е номера звонящего в контрагентах нет, повторные звонки по клиентам (сделки нет, это реанимация базы) и теплые звонки по сделкм (номер на клиенте, у клиента в момент звонка есть сделка и звонок привязывается и к клиенту и к сделке) при этом есть отдельная воронка продаж по холодным (ни разу еще не продали услуги сделка на то чтобы впервые продать) и воронка по теплым клиентам (ранее уже продавали это реанимация базы или повторные регулярные продажи) и может быть воронка входящих обращений (когда клиенты сами звонят с интересомм и им не надо продавать на исходящих) , нужно считать сейчас количество звонков и количество созданных сделок (и конверсию между ними в %) и количество и сумму успешно завершенных сделок (и % конверсии между созданными сделками и завершенными сдеелками) в каждом дней по дате создания или завершения сделок и дате совершения звонков. Пользователю-руководителю важно видеть интенсивность работы менеджеров и их эффективность как они конвертируют. еще есть в лидах источник базы (какой сектор берется в работу) по ним тоже надо срез делать потому что одна база будет успешной а другая нулевой (нецелевая) учти этот срез данных. Сейчас есть модуль аналитики и в нем есть отчет по конверсии но он работает как общий итоговый и использует накопление данных чтобы в момент формировния отчета не сканировать все записи за весь год а пересчитывать записи в момент действий (каждого действия заапускается рабочий процесс) а при выводе отчета просто берутся нужные итогвые данные по разрезам уже собранные в месяца и разрезы и как нужно группируются, подумай доработать этот отчет или создать новый, разархивируй файлы каждый в свою папку это модуль там файлы могут называются одинаково но они разные, проверь у себя в кеше по этим названиям если есть сохраненное - удали не используй данные из кэша используй эти файлы как источник анализа, спланируй вид отчета фильтры и группировки, продумай архитектуру с учетом текущего контекста и твоих знаний о структуре Yetiforce CRM, разработай нужный код для модуля, выдай код в виде файлов или замен функций, вот база данных CREATE TABLE `voronka\_analytics\_conversionsyear` ( `id` int(21) NOT NULL, `dateyear` int(11) NOT NULL, `datemonth` int(11) NOT NULL, `category` varchar(254) DEFAULT NULL, `locations` int(11) NOT NULL DEFAULT 0, `value` decimal(55,3) DEFAULT 0.000, `units` varchar(50) DEFAULT NULL, `amount` decimal(55,3) DEFAULT 0.000 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3\_uca1400\_ai\_ci COMMENT='агрегация данных для отчета ДДС по месяцам'; \-- \-- Дамп данных таблицы `voronka\_analytics\_conversionsyear` \-- INSERT INTO `voronka\_analytics\_conversionsyear` (`id`, `dateyear`, `datemonth`, `category`, `locations`, `value`, `units`, `amount`) VALUES (1, 2026, 2, 'ssalesprocesses', 32263, '206.000', 'int', '0.000'), (2, 2026, 2, 'ssalesprocesses', 32263, '206.000', 'int', '0.000'), (3, 2026, 2, 'ssalesprocesses', -1, '206.000', 'int', '0.000'), (4, 2026, 2, 'ssalesprocesses', -1, '206.000', 'int', '0.000'), (5, 2026, 2, 'vbossalespersent', 32263, '0.485', 'pers', '0.000'), (6, 2026, 2, 'vbossalespersent', 32263, '0.485', 'pers', '0.000'), (7, 2026, 2, 'vbossalespersent', -1, '0.485', 'pers', '0.000'), (8, 2026, 2, 'vbookingstart', 32263, '1.000', 'int', '0.000'), (9, 2026, 2, 'vbookingstart', -1, '1.000', 'int', '0.000'), (10, 2026, 2, 'vbooking', 32263, '1.000', 'int', '0.000'), (11, 2026, 2, 'vbooking', 32263, '1.000', 'int', '0.000'), (12, 2026, 2, 'vbookingcancel', 32263, '0.000', 'int', '0.000'), (13, 2026, 2, 'vbookingopen', 32263, '1.000', 'int', '0.000'), (14, 2026, 2, 'vbookingprepay', 32263, '1.000', 'int', '0.000'), (15, 2026, 2, 'vbookingprepay', 32263, '1.000', 'int', '0.000'), (16, 2026, 2, 'vbookingsuccess', 32263, '0.000', 'int', '0.000'), (17, 2026, 2, 'vbooking', -1, '1.000', 'int', '0.000'), (18, 2026, 2, 'vbooking', -1, '1.000', 'int', '0.000'), (19, 2026, 2, 'vbookingcancel', -1, '0.000', 'int', '0.000'), (20, 2026, 2, 'vbookingprepay', -1, '1.000', 'int', '0.000'), (21, 2026, 2, 'vbookingsuccess', -1, '0.000', 'int', '0.000'), (22, 2026, 2, 'vbookingopen', -1, '1.000', 'int', '0.000'), (23, 2026, 2, 'vbookingsuccesspersent', 32263, '0.000', 'pers', '0.000'), (24, 2026, 2, 'vbookingsuccesspersent', -1, '0.000', 'pers', '0.000'), (25, 2026, 3, 'ssalesprocesses', 213261, '14.000', 'int', '0.000'), (26, 2026, 3, 'ssalesprocesses', 213261, '14.000', 'int', '0.000'), (27, 2026, 3, 'ssalesprocesses', -1, '36.000', 'int', '0.000'), (28, 2026, 3, 'ssalesprocesses', 32263, '21.000', 'int', '0.000'), (29, 2026, 3, 'ssalesprocesses', 0, '1.000', 'int', '0.000'), (30, 2026, 3, 'ssalesprocesses', 0, '1.000', 'int', '0.000'), (31, 2026, 3, 'vbossalespersent', 213261, '0.000', 'pers', '0.000'), (32, 2026, 3, 'vbossalespersent', -1, '0.000', 'pers', '0.000'), (33, 2026, 3, 'vbossalespersent', 32263, '0.000', 'pers', '0.000'), (34, 2026, 3, 'vbossalespersent', 0, '0.000', 'pers', '0.000'); CREATE TABLE `voronka\_menu\_analytics` ( `id` int(10) UNSIGNED NOT NULL, `role` int(10) DEFAULT NULL, `parentid` int(10) DEFAULT 0, `type` tinyint(1) DEFAULT NULL, `sequence` int(3) DEFAULT NULL, `module` smallint(5) DEFAULT NULL, `label` varchar(100) DEFAULT NULL, `newwindow` tinyint(1) DEFAULT 0, `dataurl` text DEFAULT NULL, `showicon` tinyint(1) DEFAULT 0, `icon` varchar(255) DEFAULT NULL, `sizeicon` varchar(255) DEFAULT NULL, `hotkey` varchar(30) DEFAULT NULL, `filters` varchar(255) DEFAULT NULL, `ownergroups` text DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3\_uca1400\_ai\_ci; \-- \-- Дамп данных таблицы `voronka\_menu\_analytics` \-- INSERT INTO `voronka\_menu\_analytics` (`id`, `role`, `parentid`, `type`, `sequence`, `module`, `label`, `newwindow`, `dataurl`, `showicon`, `icon`, `sizeicon`, `hotkey`, `filters`, `ownergroups`) VALUES (1, NULL, 0, NULL, 5, NULL, 'MEN\_MARKETING', 0, NULL, 0, 'fal fa-megaphone', NULL, NULL, NULL, NULL), (2, NULL, 0, NULL, 2, NULL, 'MEN\_SALES', 0, NULL, 0, 'fal fa-funnel-dollar', NULL, NULL, NULL, NULL), (3, NULL, 0, NULL, 3, NULL, 'MEN\_STOCK', 0, NULL, 0, 'fal fa-truck-loading', NULL, NULL, NULL, NULL), (4, NULL, 0, NULL, 1, NULL, 'MEN\_FINANCE', 0, NULL, 0, 'fal fa-function', NULL, NULL, NULL, NULL), (5, NULL, 0, NULL, 4, NULL, 'MEN\_STAFF', 0, NULL, 0, 'fal fa-walking', NULL, NULL, NULL, NULL), (6, NULL, 4, NULL, 1, NULL, 'Dds\_day', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (7, NULL, 4, NULL, 2, NULL, 'Dds\_year', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (8, NULL, 4, NULL, 4, NULL, 'Revenue\_month', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (9, NULL, 4, NULL, 5, NULL, 'Revenue\_year', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (10, NULL, 4, NULL, 3, NULL, 'Dds\_month', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (11, NULL, 1, NULL, 1, NULL, 'Sources\_channel\_leads', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (12, NULL, 3, NULL, 1, NULL, 'ProductHystory', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (13, NULL, 2, NULL, 3, NULL, 'Bron\_prepayment', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (14, NULL, 2, NULL, 1, NULL, 'SaleDetailInventory', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (15, NULL, 2, NULL, 3, NULL, 'Conversions\_year', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (16, NULL, 4, NULL, 6, NULL, 'Prepayments\_balance', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (17, NULL, 1, NULL, 2, NULL, 'Frequencyofvisits2', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (18, NULL, 1, NULL, 3, NULL, 'Frequencyofvisits1', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (19, NULL, 1, NULL, 4, NULL, 'Frequencyofvisits0', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (20, NULL, 2, NULL, 4, NULL, 'Conversions\_weeks', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (21, NULL, 2, NULL, 6, NULL, 'Product\_revenue', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (22, NULL, 4, NULL, 7, NULL, 'Balance', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (23, NULL, 5, NULL, 1, NULL, 'Planfactmanager', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (24, NULL, 3, NULL, 2, NULL, 'ProductInventory', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL), (25, NULL, 3, NULL, 3, NULL, 'ProductOborot', 0, NULL, 0, NULL, NULL, NULL, NULL, NULL);