Чтобы понять состав списка заявок, нужно посчитать обращения по услугам и текущим статусам. Этот локальный пример собирает сводку из учебного JSON; он не подключён к настоящей CRM и не делает выводов о выручке или эффективности рекламы.
УЧЕБНЫЙ ПРИМЕР
Отчёт по заявкам без ручного подсчёта
Вставьте JSON со списком заявок и получите сводку по услугам и статусам. Измените данные, пересчитайте и скачайте CSV с агрегатами.
Это ширина демонстрационного холста. Она не заменяет проверку настоящего устройства.
DEMO / report-builder
Отчёт по заявкам без ручного подсчёта
Чтобы понять состав списка заявок, нужно посчитать обращения по услугам и текущим статусам. Этот локальный пример собирает сводку из учебного JSON; он не подключён к настоящей CRM и не делает выводов о выручке или эффективности рекламы.
Открыть рабочую демонстрацию
Отчёт по заявкам без ручного подсчёта
Позволяет быстро проверить, сколько записей относится к каждой услуге и статусу.
Посмотреть рабочий код
function aggregateRequests(records) {
if (!Array.isArray(records) || records.length < 1 || records.length > 50) throw new Error('REPORT_COUNT');
const summary = {
total: records.length,
services: {site: 0, ads: 0, code: 0},
statuses: {new: 0, in_progress: 0, done: 0},
matrix: {site:{new:0,in_progress:0,done:0},ads:{new:0,in_progress:0,done:0},code:{new:0,in_progress:0,done:0}}
};
for (const record of records) {
if (record === null || typeof record !== 'object' || Array.isArray(record) ||
Object.getPrototypeOf(record) !== Object.prototype) throw new Error('REPORT_OBJECT');
if (typeof record.service !== 'string' || !['site', 'ads', 'code'].includes(record.service)) {
throw new Error('REPORT_SERVICE');
}
if (typeof record.status !== 'string' || !['new', 'in_progress', 'done'].includes(record.status)) {
throw new Error('REPORT_STATUS');
}
summary.services[record.service] += 1;
summary.statuses[record.status] += 1;
summary.matrix[record.service][record.status] += 1;
}
return summary;
}Локальная демонстрация: сервер, сохранение и настоящая отправка не подключены.
Редактируемый учебный список заявок JSON.
Проверить подсчёт после изменения записей, неверные service и status, ограничение в пятьдесят записей и содержимое экспортируемого CSV.
Задача в этом сценарии
Чтобы понять состав списка заявок, нужно посчитать обращения по услугам и текущим статусам. Этот локальный пример собирает сводку из учебного JSON; он не подключён к настоящей CRM и не делает выводов о выручке или эффективности рекламы.
Как устроено решение
- Читаем список до пятидесяти записей с полями service и status. Для услуги разрешены site, ads и code, для статуса — new, in_progress и done.
- Проверяем значения, затем считаем записи отдельно по услугам и статусам. Неизвестные поля пропускаем: в отчёт входят категории и количества, без персональных данных.
- Показываем сводку в браузере и даём скачать CSV с агрегатами. После изменения исходного JSON отчёт нужно построить заново.
Промежуточные материалы
- Исходная задача и ограничения → Чтобы понять состав списка заявок, нужно посчитать обращения по услугам и текущим статусам. Этот локальный пример собирает сводку из учебного JSON; он не подключён к настоящей CRM и не делает выводов о выручке или эффективности рекламы.
- Состав решения → Редактируемый учебный список заявок JSON.
- Проверка перед запуском → Проверить подсчёт после изменения записей, неверные service и status, ограничение в пятьдесят записей и содержимое экспортируемого CSV.
Что проверить перед запуском
- Проверить подсчёт после изменения записей, неверные service и status, ограничение в пятьдесят записей и содержимое экспортируемого CSV.
- Для рабочего отчёта согласовать источник, смысл статусов и правила отбора данных; отдельно реализовать получение актуальной выгрузки.
Что входит в пример
- Редактируемый учебный список заявок JSON.
- Проверка допустимых услуг и статусов и локальный подсчёт групп.
- Сводка по двум признакам и скачивание CSV с агрегатами.
Технический паспорт
DevPilot 1.5.2 · Охват проверок, исходники и дата свидетельств
- Статус
- DEMO · Вымышленная компания и учебные данные
- Материалы
- Собственные HTML/CSS/SVG, исходники и локальные алгоритмы. Фотографии клиентов не используются.
- Обработка
- Демонстрация выполняется в браузере. Открытие примера не создаёт заявку или оплаченный проект.
- Доказательства
- Содержимое и локальные проверки отделены от реальной браузерной, хостинговой и коммерческой приёмки.