| name | aatex-analytics |
| description | Аналитика по доскам ЦУП ААТех — сводки, просроченные карточки, загрузка команды. Применяй для "сколько задач", "что просрочено", "кто перегружен", "статистика по доске", "сводка по проекту", "кто чем занят". Использует прямые DB запросы для быстрых агрегатов. |
Аналитика по доскам
Когда использовать
Пользователь хочет увидеть агрегированную картину:
- Сводку состояния доски (счётчики по колонкам, без ответственного, просроченные)
- Просроченные карточки (плановая дата окончания в прошлом)
- Кто из команды чем загружен
- Общий статус проекта
Не используй для поштучного просмотра — для этого list_cards / search_cards.
Инструменты
| Инструмент | Параметры | Возвращает |
|---|
get_board_summary | boardId | Счётчики: всего, по колонкам, без ответственного, в финальной, просроченные |
get_overdue_cards | boardId, limit? | Список просроченных (не в финальной колонке) |
get_team_workload | boardId | Загрузка участников по типам карточек + unassigned count |
Сценарии
1. Быстрая сводка по доске
get_board_summary(boardId)
Возвращает:
{
"boardTitle": "Производство",
"totalCards": 42,
"columns": [
{"title": "Новые", "count": 5},
{"title": "В работе", "count": 20},
{"title": "Готово", "count": 17}
],
"withoutResponsible": 3,
"inFinalColumn": 17,
"overdue": 4
}
Используй для: «как дела на доске X», «сколько задач в Y», первый шаг любой аналитической задачи.
2. Просроченные карточки
get_overdue_cards(boardId, limit: 50)
Возвращает карточки, где productionEndDatePlanned < сегодня и колонка не финальная (если не финальная, значит работа не завершена).
Для каждой карточки: id, title, columnId, responsibleUserId, productionEndDatePlanned, cardType.
Типичный запрос: «что просрочено», «какие задачи горят».
Дальше — можно:
- Показать список с датами
- Для каждой —
get_card → детали, контрагенты
- Предложить переназначить ответственного (
assign_responsible) или передвинуть сроки (update_card)
3. Загрузка команды
get_team_workload(boardId)
Возвращает:
{
"members": [
{
"userId": "uid_abc",
"name": "Иван Иванов",
"total": 12,
"byType": { "order": 3, "position": 8, "documentation": 1 }
},
...
],
"unassignedCards": 3
}
Отсортировано по total убыв. — первые самые загруженные.
Используй для: «кто перегружен», «у кого свободно», «как распределена нагрузка».
4. Комбинированная картина проекта
Пользователь: «Покажи текущий статус по проекту X»
1. list_all_boards → найти доску по названию
2. get_board_summary(boardId) → общая картина
3. get_overdue_cards(boardId, limit: 10) → что горит
4. get_team_workload(boardId) → кто вовлечён
Сформируй сводку:
Доска «Проект X» — 42 карточки
- В работе: 20, готово: 17, новые: 5
- Без ответственного: 3
- Просрочено: 4 (можем посмотреть какие?)
Загрузка:
- Иван Иванов — 12 (3 заказа, 8 позиций, 1 документация)
- Пётр Петров — 7 (1 заказ, 6 позиций)
- Без назначенного: 3
Что рассмотрим подробнее?
Важные нюансы
Фильтры запросов
Все три инструмента автоматически:
- Фильтруют по
organizationId
- Исключают архивные (
isArchived = false)
- Исключают скрытые (
isHidden = false)
Доступ
Требуется доступ к доске (через userIds). Если доски не видно в list_all_boards, analytics вернёт Access denied.
Просроченные — только не в финальной
get_overdue_cards проверяет columnId NOT IN finalColumnIds. Финальная колонка (isFinalColumn: true) в настройках доски означает завершение — такие карточки не считаются просроченными, даже если дата в прошлом.
Unassigned в workload
unassignedCards — карточки без responsibleUserId. Это отдельный счётчик, не включается в members[].total.
Группировка по типам
byType — ключ = cardType, значение = количество. Если cardType null — группа "untyped".
Типичные ошибки
| Ошибка | Причина |
|---|
Board not found | ID неверный или доска в другой орге |
Access denied | Нет в userIds доски |
Пустой members массив | На доске нет активных карточек с ответственным |
Связь с другими скиллами
aatex-navigation — найти нужную доску перед аналитикой
aatex-cards — глубже нырнуть в конкретную карточку после сводки
aatex-messenger — отправить найденного «перегруженного» участника через send_message
Когда НЕ использовать
- Счёт карточек пользователя по всей орге — используй
get_user_cards(userId), а не get_team_workload (тот только по одной доске)
- Исторический тренд — MCP не хранит снапшоты, только текущее состояние
- Расчёт сроков / планирование — данные есть, но агрегаты упрощённые, для детального планирования используй UI