Отчёт собственнику за неделю

Собственнику B2B-компании нужен ответ на один вопрос в понедельник утром: как прошла неделя. Обычно его собирают вручную из почты и списка задач. У нашего ассистента эти данные уже лежат в таблицах n8n с модуля 3. Осталось раз в неделю превратить их в короткий отчёт.

Чему научитесь в этом уроке:
• собрать цифры недели из таблиц писем и задач;
• поручить модели только пересказ, а цифры считать кодом;
• поставить отчёт на расписание по понедельникам.

Главное правило: цифры считает код

При подготовке урока модель получила верные данные: 0 закрытых задач, 1 открытая, 9 писем. (Даты задач мы добавили позже, после этого прогона.) В одном прогоне из четырёх она написала «закрыто 6 задач», добавила непонятную фразу и ссылку, которой во входе не было. В трёх других прогонах цифры были верными. Вывод: модель пересказывает, а считает код. Тогда в отчёте можно сверить цифры с данными, а если модель ошиблась, это сразу видно.

Шаг 1. Данные

Создайте сценарий «Отчёт за неделю». Добавьте Manual Trigger для проверок, потом два узла Data table → Get row(s): «Письма» из таблицы «Письма для брифинга» и «Задачи» из таблицы «Задачи». В обоих включите Return All, а в Settings — Always Output Data и Execute Once, как в уроке 3.3.

Шаг 2. Цифры недели

Узел Code «Цифры недели» берёт письма за последние 7 дней и делит задачи на закрытые и открытые:

// Сводим неделю в цифры для модели
const weekAgo = $now.minus({ days: 7 }).toJSDate();
const inWeek = (d) => d && new Date(d) >= weekAgo;
const letters = $('Письма').all().map(i => i.json).filter(l => inWeek(l.received));
const tasks = $('Задачи').all().map(i => i.json).filter(t => t.task);
const closed = tasks.filter(t => t.done && inWeek(t.closed_at));
const added = tasks.filter(t => inWeek(t.created));
const open = tasks.filter(t => !t.done);
const lines = [
  'Период: ' + $now.minus({ days: 7 }).toFormat('dd.MM') + '–' + $now.toFormat('dd.MM'),
  'Писем за неделю: ' + letters.length,
  'Темы писем: ' + letters.map(l => l.subject).join('; '),
  'Задач новых за неделю: ' + added.length,
  'Задач закрыто за неделю: ' + closed.length + (closed.length ? ' (' + closed.map(t => t.task).join('; ') + ')' : ''),
  'Задач открыто сейчас: ' + open.length + (open.length ? ' (' + open.map(t => t.task).join('; ') + ')' : ''),
];
return [{ json: { data: lines.join('\n') } }];

Задачи за неделю код отбирает по датам created и closed_at из урока 3.4. Без дат «закрыто» считалось бы за всё время, и через месяц собственник видел бы неверную цифру. Проверено: задача, закрытая 22 сентября, в отчёт с 29 сентября не попала, закрытая 5 октября — попала.

Шаг 3. Пересказ

Basic LLM Chain «Составить отчёт», Prompt: {{ $json.data }}, системное сообщение:

Ты ассистент руководителя небольшой компании. По цифрам за неделю составь отчёт собственнику по-русски, не длиннее 10 строк, простым текстом без разметки:
1) главное за неделю одной фразой;
2) цифры: письма, задачи закрыто и открыто;
3) что требует внимания на следующей неделе.
Используй только цифры из данных, ничего не додумывай.

На прогоне отчёт выглядел так: «Отчёт за период 29.09–06.10. Главное за неделю: получили новые входящие письма и открыли одну задачу, закрытых задач нет. Писем за неделю: 9. Задач закрыто: 0, открыто: 1. На следующей неделе требует внимания: позвонить поставщику до пятницы».

Шаг 4. Расписание и отправка

Добавьте Telegram → Send a text message с текстом {{ $json.text }}, как в брифинге. Затем Schedule Trigger с Cron 0 9 * * 1 (понедельник, 9:00) и проверьте часовой пояс в Settings. Опубликуйте. Если отчёт нужен партнёру или бухгалтеру, а не вам, добавьте второй Chat ID только после того, как три недели читали отчёт сами.

Если есть CRM. В B2B-компании отчёт обычно включает сделки. Принцип тот же: ещё один узел, который достаёт сделки за неделю (HTTP Request к вашей CRM), и строка в коде «Цифры недели». Модель по-прежнему только пересказывает.

Если не получилось

  • Писем за неделю 0, хотя они были. В таблице не заполнена колонка received. Проверьте сценарий «Почта в таблицу» из урока 3.3.
  • Цифры в отчёте не совпадают с данными. Модель ошиблась при пересказе. Сравните с выходом «Цифры недели» и запустите ещё раз. Повторяется — смените модель.
  • Отчёт со звёздочками. Модель не послушалась «без разметки». Добавьте в конец системного сообщения пример отчёта простым текстом.

Контрольный вопрос. Почему количество закрытых задач считает код, а не модель?

АКод работает быстрее
БМодель может ошибиться в цифрах, а код — нет, и цифры кода можно сверить
ВМодель не умеет читать таблицы
ГТак дешевле на 90%

Подсказка: Вспомните, что случилось в одном из прогонов отчёта.

На курсе задания проверяются автоматически. Подобрать курс

Задание. Соберите отчёт за неделю для своего ассистента. Приложите: (1) скриншот сценария; (2) выход узла «Цифры недели»; (3) отчёт в Telegram; (4) одной фразой: сверили ли вы цифры отчёта с данными и совпали ли они. Принято, если: цифры считает Code-узел; отчёт простым текстом и не длиннее 10 строк; цифры в отчёте совпадают с выходом «Цифры недели»; стоит расписание на понедельник и проверен часовой пояс.

Подсказка: Данных за неделю мало? Добавьте пару задач через ветку «задача:» из урока 3.4 и отметьте одну сделанной.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

На курсе задания проверяются автоматически. Подобрать курс

Что дальше

Ассистент отвечает клиентам и пишет отчёты. Это момент разобраться, чего ему доверять нельзя.

Итог:
• цифры считает код, модель только пересказывает;
• отчёт собирается из тех же таблиц, что брифинг;
• отчёт уходит по расписанию в понедельник утром.

← Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева