← На главную
Кейс 10

Формирование задач и поручений
из неструктурированных данных

Автоматическое извлечение задач, поручений и договорённостей из переписки, протоколов и стенограмм. Интеграция с Jira, Mattermost и Telegram. Контроль дедлайнов и напоминания.

Полный pipeline

Переписка почта / мессенджеры Аудио/Видео ВКС → ДИОН → скачивание Протоколы существующие встречи Заметки рукописные / голосовые Hermes Agent + OpenRouter (Gemini 3 Flash) STT (если аудио) → анализ текста → извлечение поручений Jira / Linear задачи + дедлайны Confluence страница протокола Колл-трекинг статусы + контроль Уведомления TG / MM / Email 🧠 Knowledge Graph MemPalace / Neo4j
⚠️

Проблема

  • Задачи теряются, остаются «в голове»
  • Поручения с встреч не фиксируются в системе
  • Дедлайны срываются — нет напоминаний
  • Руководитель не видит общую картину загрузки команды
  • Нет автоматической привязки к оргструктуре

Решение

  • Любой источник → единый пайплайн → задачи
  • Валидация по оргструктуре — неверные поручения блокируются
  • Автоматические напоминания за день до дедлайна
  • Эскалация просрочек руководителю
  • Граф организации растёт сам из каждой встречи

Кейсы решения

# ─── ВХОДНЫЕ ДАННЫЕ ───
Источники:
  • Электронная почта (IMAP) — письма с поручениями
  • Аудио/видео встреч — ВКС → ДИОН → скачивание → STT
  • Существующие протоколы — DOCX / PDF / TXT
  • Заметки — голосовые сообщения, текстовые заметки

# ─── ОБРАБОТКА (Hermes Agent + OpenRouter) ───
Шаг 1. Извлечение текста
  IF аудио OR видео:
    → FFmpeg (извлечение аудиодорожки)
    → OpenRouter: Gemini 3 Flash (input_audio) → расшифровка
  ELSE:
    → извлечение текста напрямую

Шаг 2. LLM-парсинг поручений
  → Строгий промпт (constraint-based)
  → Извлечение:
      • "кто" — автор поручения
      • "кому" — исполнитель
      • "что" — суть задачи
      • "срок" — дедлайн
      • "приоритет" — из контекста
  → Если поле не определено → "НЕ УСТАНОВЛЕНО"

Шаг 3. Валидация по оргструктуре
  → MemPalace KG: kg_query(entity="Исполнитель")
  → Проверка: автор имеет право давать поручение?
      • Подчинённый → ✅ прямое
      • Равный (кросс-функциональный) → ⚠️ согласование
      • Начальник → ❌ невалидно
      • Не в организации → ℹ️ запрос контакта

# ─── ИНТЕГРАЦИИ ───
Шаг 4. Создание задач
  → Jira API / Linear API:
      • Проект: "Поручения"
      • Заголовок: "[Встреча dd.mm] {суть}"
      • Исполнитель: {кому}
      • Дедлайн: {срок}
      • Приоритет: {высокий/средний/низкий}
      • Метка: из_протокола
      • Связь: родительская задача (если уточнение)

Шаг 5. Confluence (логирование)
  → Создание/обновление страницы:
      • Раздел "Поручения {дата}"
      • Таблица: автор | исполнитель | задача | срок | статус

Шаг 6. Уведомления
  → Telegram: протокол + ссылки на задачи
  → Mattermost: уведомление команде
  → Email: рассылка отсутствующим
  → Исполнителю: личное сообщение с задачей

# ─── НАПОМИНАНИЯ (CRON) ───
Cron-расписание
  • T-1 день: "Завтра дедлайн по задаче {X}"
  • T-0 день: "Сегодня дедлайн по задаче {X}"
  • T+1 день: "Просрочка: задача {X}, ответственный {Y}"
  • T+3 дня: "Эскалация: {руководитель}, {Y} просрочил на 3 дня"

# ─── ОБОГАЩЕНИЕ ГРАФА ───
Каждая обработанная встреча → новые факты:
  • kg_add(subject="Сергей", predicate="отвечает_за", object="Лендинг")kg_add(subject="Лендинг", predicate="дедлайн", object="2026-05-02")kg_add(subject="Кабан Кабаныч", predicate="поручил", object="Лендинг")

Валидация по оргструктуре

Каждое поручение проверяется по графу организации перед созданием задачи:

АвторИсполнительТип порученияСтатусДействие
Кабан Кабаныч (гендир)ЛюбойПрямое✅ ВалидноЗадача создаётся сразу
Сергей (рук. маркетинга)Дмитрий (подчинённый)Прямое✅ ВалидноЗадача создаётся сразу
СергейВладимир (техдир, не подчинён)Кросс-функциональное⚠️ СогласованиеУведомление Владимиру + запрос подтверждения
ВладимирКабан Кабаныч❌ НевалидноПоручение начальнику блокируется
Дмитрий (pr-менеджер)Сергей❌ НевалидноНет полномочий давать поручения

🔐 Безопасность поручений

Если в стенограмме встречается «Дим, сделай отчёт», а Дмитрий не подчиняется автору — система не создаст задачу, а запросит подтверждение у вышестоящего руководителя. Ни одно поручение не теряется, но и не создаётся автоматически там, где это нарушает субординацию.

Пример работы

📥 Вход: стенограмма встречи

— Сергей, как там лендинг?
— Готовим, Кабан Кабаныч. Дим, 
  подготовь тексты до четверга.
— Владимир, нужен доступ к серверу 
  для тестирования формы.
— И да, Алексей, собери аналитику 
  по конкурентам за прошлый месяц.

📤 Выход: структурированные поручения

Поручение 1
  Автор: Кабан Кабаныч
  Кому: Сергей
  Что: Отчёт по лендингу
  Срок: НЕ УСТАНОВЛЕН
  Статус: ✅ валидно

Поручение 2
  Автор: Сергей
  Кому: Дмитрий
  Что: Подготовить тексты
  Срок: четверг (2026-05-01)
  Статус: ✅ валидно (подчинённый)

Поручение 3
  Автор: Сергей
  Кому: Владимир
  Что: Доступ к серверу
  Срок: НЕ УСТАНОВЛЕН
  Статус: ⚠️ кросс-функциональное

Поручение 4
  Автор: Сергей
  Кому: Алексей
  Что: Аналитика конкурентов
  Срок: НЕ УСТАНОВЛЕН
  Статус: ✅ валидно (подчинённый)

Бюджет на LLM

СтатьяРасчётСтоимость
VPS4 vCPU · 4 GB · 20 GB SSD1 500–2 500 ₽/мес
OpenRouter: Gemini 3 Flash50 встреч × ~$0.20 (1 час аудио)$10/мес ≈ 800 ₽
OpenRouter: Nemotron 3 Nano Omni (free)Бесплатный, open-source, аудио-вход$0/мес
Jira / ConfluenceCloud Free (до 10 пользователей)$0
Почта (IMAP)Яндекс 360 / свой postfix на домене0–150 ₽/мес
Итого (Gemini 3 Flash)~2 500–3 500 ₽/мес
Итого (Nemotron free)~1 500–2 700 ₽/мес

Что нужно для запуска

🔑 Доступы

  • IMAP-кредалы robot@домен (мониторинг писем с поручениями)
  • Тестовый доступ к ДИОН (для скачивания записей ВКС)
  • API-токен Jira / Linear (создание задач)
  • Mattermost хост + токен (или TG вместо)
  • Confluence space + токен (опционально, для логирования)

📊 Датасет

  • 2–3 видеозаписи реальных встреч (разной длительности)
  • Готовые протоколы к ним (эталон для оценки качества)
  • Оргструктура в JSON/YAML (сотрудники, роли, подчинение)
  • Примеры писем от ВКС (2–3 письма со ссылками на ДИОН)
  • Шаблон протокола (DOCX) (формат выдачи заказчику)