ii-agent-soglasovanie-otpusk/alem_guide.md

92 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**. Веб-интерфейс здесь не нужен и даже вреден, так как процесс полностью живёт в Telegram.
Вот исправленный, полный и валидный гайд со всеми обязательными разделами, черновиком промпта и примерами.
[[GUIDE]]
## 1. Почему Alem, а не отдельная разработка
- **Логика укладывается в возможности платформы:** Задача агента — прочитать данные (KTWorks), применить правила (лимит 2 человека, дежурный) и записать результат (Excel). Это стандартный сценарий для MCP/API-агента на Alem без необходимости писать отдельный бэкенд.
- **Интерфейс уже существует:** Владелец и сотрудники используют Telegram. Делать отдельный веб-портал, куда нужно заходить ради 5–15 операций в месяц, значит усложнять жизнь пользователю и создавать «мёртвую» систему.
- **Human-in-the-loop нативен:** Платформа Alem позволяет встроить узел «Одобрение пользователя» прямо в сценарий, что соответствует требованию брифа (кнопка «Согласовать» в чате).
- **Экономия времени:** Внедрение через Alem занимает дни, а не месяцы, так как не требует разработки UI и мобильной версии.
- **Ограничения:** Решение зависит от стабильности доступа к сетевой папке через MCP и качества данных в KTWorks. Если файловое хранилище будет недоступно, агент не сможет записать файл (требуется обработка ошибок).
## 2. Что делает агент
Агент выступает цифровым ассистентом руководителя отдела по согласованию отпусков. Он мониторит запросы в Telegram, автоматически сверяет остаток дней в KTWorks и проверяет график на конфликты (чтобы не ушли больше 2 человек одновременно и остался дежурный). Вместо того чтобы руководитель бегал по системам, агент присылает готовое решение: «Сотрудник Х, даты Y–Z, остаток N дней, конфликтов нет» с кнопкой подтверждения. После нажатия кнопки агент сам обновляет общий Excel-файл на сетевом диске и готовит отчёт для HR.
## 3. Пошаговое создание в Alem
Решение будет жить в чате Telegram (через бота) и работать на базе платформы Alem. Адрес платформы: https://alem.ai-kt.kz.
**Шаг 1. Создание агента**
В интерфейсе Alem нажмите **«Создать супер-сотрудника»**. Выберите тип агента: **Skill-агент** (так как требуется генерация файлов/отчётов) или **Workflow-агент** (если нужна сложная логика ветвления). Назовите агента, например, «Отпуска-Бот».
**Шаг 2. Системный промпт**
В поле системного промпта вставьте следующий черновик. Он задаёт роль, источники знаний и строгие правила валидации.
```markdown
Ты — ИИ-ассистент руководителя отдела по согласованию отпусков.
Твоя цель: обрабатывать запросы сотрудников на отпуск, проверять их корректность и обновлять график.
ИСТОЧНИКИ ДАННЫХ:
1. KTWorks (через MCP/API): остаток дней отпуска сотрудника.
2. Excel-файл "График отпусков 2026.xlsx" на сетевом диске \\fs-dept\otdel\Отпуска\: текущий список утверждённых отпусков.
ПРАВИЛА ВАЛИДАЦИИ (СТРОГО):
1. Лимит одновременного отсутствия: в одни даты не могут отсутствовать более 2 человек.
2. Дежурный: среди отсутствующих не должно быть единственного доступного старшего сотрудника (из "тройки старших").
3. Остаток: у сотрудника должен быть достаточный остаток дней отпуска в KTWorks.
АЛГОРИТМ РАБОТЫ:
1. Получи запрос от сотрудника (ФИО, даты, тип отпуска).
2. Проверь остаток в KTWorks. Если недостаточно — сообщи об отказе.
3. Проверь даты по Excel-графику на предмет пересечений (лимит 2 чел.) и наличия дежурного.
4. Если всё ок — сформируй черновик ответа для руководителя: "Сотрудник [ФИО], даты [X-Y], остаток [N] дней. Конфликтов нет." и предложи кнопку "Согласовать".
5. Если есть конфликт — напиши причину: "Конфликт: в эти даты уже уходят [Список] / Нет дежурного".
6. После нажатия кнопки "Согласовать":
- Добавь строку в Excel-файл на сетевом диске.
- Отправь подтверждение сотруднику.
- Добавь запись в список для еженедельного отчёта HR.
ЧЕГО НЕ ДЕЛАТЬ:
- Не согласовывай отпуск без явного подтверждения руководителя (кнопки).
- Не изменяй файл, если доступ к сети потерян (сообщи об ошибке).
- Не игнорируй правило дежурного.
```
**Шаг 3. База знаний и навыки**
- **База знаний:** Загрузите документ с актуальным списком «Тройки старших» (ФИО, должности), чтобы агент знал, кого нельзя отпускать всех одновременно.
- **Навыки (Skills):** Убедитесь, что подключен навык работы с файлами (Excel) и MCP-коннекторы для KTWorks и сетевой папки.
**Шаг 4. Публикация и интеграция с Telegram**
1. В карточке агента нажмите **«Опубликовать»**.
2. Выберите интерфейс **API**. Платформа создаст API-ключ и покажет эндпоинты.
3. Для работы в Telegram потребуется настроить бота-оркестратора (внешний сервис или скрипт), который будет:
- Слушать сообщения в чате отдела.
- Отправлять текст запроса в Alem через `POST /gateway/app/api/v1/published/conversation`.
- Получать `session_id` и пересылать сообщения через `POST .../published/{session_id}/send`.
- Отображать кнопки (Inline Keyboard) для подтверждения руководителю.
**Шаг 5. Узел одобрения**
В сценарии (Workflow) добавьте узел **«Одобрение пользователя»** после этапа проверки правил. Это гарантирует, что запись в файл произойдёт только после нажатия кнопки руководителем.
## 4. Примеры поведения
**Вопрос:** «Прошу согласовать отпуск с 10 по 24 августа (14 дней).» (Сотрудник: Иванов А.)
**Ожидаемый ответ (Руководителю):** «Иванов А., 10–24 августа. Остаток в KTWorks: 20 дней. Конфликтов нет (в эти даты уходит только Петров). Предварительное решение: Согласовать. [Кнопка: Согласовать] [Кнопка: Отклонить]»
**Вопрос:** «Можно ли мне в отпуск с 1 по 15 июля?» (Сотрудник: Сидоров В., один из «тройки старших»)
**Ожидаемый ответ (Руководителю):** «Сидоров В., 1–15 июля. Остаток: 15 дней. ВНИМАНИЕ: Конфликт правил. В эти даты уже отсутствуют Иванов и Петров. Если уйдёте вы, не останется дежурного старшего. Рекомендация: Отклонить или сдвинуть даты.»
**Вопрос:** «Согласовать отпуск для Кузнецовой (5 дней).»
**Ожидаемый ответ (Руководителю):** «Кузнецова Е., даты не указаны. Уточните даты начала и конца отпуска для проверки графика.»
## 5. Как принять работу
**Чек-лист приёмки:**
- [ ] Агент корректно считывает остаток дней из KTWorks для тестового сотрудника.
- [ ] Агент правильно определяет конфликт «>2 человек» на тестовых данных из Excel.
- [ ] Агент блокирует согласование, если уходит последний «старший» (проверка правила дежурного).
- [ ] После нажатия кнопки «Согласовать» строка реально появляется в файле `\\fs-dept\otdel\Отпуска\График отпусков 2026.xlsx`.
- [ ] При отсутствии сети агент не падает, а сообщает об ошибке записи.
**Что подтвердить до запуска (Блокеры):**
1. **Доступ к файловой системе:** Подтвердить техническую возможность записи в сетевую папку `\\fs-dept\otdel\Отпуска\` через MCP-коннектор или сервис-аккаунт (нужны учётные данные).
2. **Доступ к KTWorks:** Согласовать с HR и ДЦБ доступ агента к API KTWorks для чтения кадровых профилей (read-only).
3. **Telegram-интеграция:** Реализовать и протестировать бота-оркестратора для доставки сообщений и обработки нажатий кнопок (так как нативный чат Alem работает внутри платформы, а процесс идёт в Telegram).