--- name: "Kraft.Участники" description: "Анализ данных сообщений из заданной группы в определенный временной период с целью подсчета общего количества сообщений от каждого уникального участника." --- ## Входные данные (Inputs) 1. **`group_name`**: Название группы на сервере новостей (например, `kraft.talks`). 2. **`start_date`**: Начальная дата анализа в формате YYYY-MM-DD. 3. **`end_date`**: Конечная дата анализа в формате YYYY-MM-DD. ## Логика работы (Workflow) 1. **Получение данных:** Используй функцию `fetch_messages_by_date_range(group_name, start_date, end_date)` для получения всех сообщений за указанный период и группу. 2. **Обработка:** Проанализируй полученный список сообщений (сообщения должны содержать поле `from` в формате "Имя "). 3. **Агрегация:** Создай словарь/таблицу, где ключом будет уникальный отправитель (используй полный email как основной идентификатор). Значением будет счетчик. 4. **Подсчет:** Для каждого сообщения из списка: * Извлеки имя и email из поля `from`. * Используй email для однозначной привязки к участнику. * Увеличивай счетчик сообщений для этого уникального пользователя. 5. **Форматирование вывода:** Сформируй финальный отчет в виде таблицы со следующим заголовком и структурой: `"Имя | электронный адрес | количество сообщений"`. ## Пример реализации (Mental Walkthrough) Если получены N сообщений, нужно пройтись по ним один раз. Для каждого сообщения `msg`: * Извлеки отправителя из `msg.from` (например, "Иван "). * Сохрани или обнови запись в словаре: `"Ivan | ivan@mail.com": 1`. **Важно:** При выводе результатов используй уникальный email-адрес как основной идентификатор для предотвращения ошибок при одинаковых именах у разных пользователей. ## Ожидаемый вывод Четкий, легко читаемый и структурированный отчет в формате markdown table: