Перейти к содержанию

RAG + OpenAI: дорожная карта бизнес-помощников Alatyr Service

Статус: целевая архитектура и продуктовый backlog.
Обновлено: 27.08.2026.
Связанные документы: openwebui-public-api.md, openwebui.md, rag-sync.md, crm-objects-spec.md, services-catalog.md.

1. Цель

Построить внутри alatyr-service не один универсальный чат, а набор специализированных помощников, которые работают на общем защищённом контуре:

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

Помощник должен экономить ручной труд, но не подменять источники истины и не совершать значимые действия без понятного подтверждения человека.

2. Текущее состояние

На 27.08.2026 в production развёрнут PR alatyr-service #95, merge-коммит b0f97d1:

  • в карточке объекта есть вкладка «Помощник»;
  • доступны manager-only GET/POST API;
  • история сохраняется по объекту в SQLite-таблице object_assistant_messages;
  • в запрос передаётся свежий ограниченный контекст конкретного объекта;
  • policy и недоверенный CRM-контекст разделены;
  • глобальная knowledge-коллекция к запросу не подключается;
  • ответы не меняют CRM и не выполняют внешние действия;
  • содержимое ответов не пишется в application logs, включая URL с завершающим /;
  • действуют ограничения размера контекста, истории, ответа, очереди и частоты запросов;
  • за пределами localhost/test разрешён только HTTPS upstream;
  • UI честно сообщает, что сейчас видит метаданные файлов, но не их бинарное содержимое.

На VPS alatyr-service получает конфигурацию из /etc/alatyr-service.env через systemd drop-in. В процессе присутствуют имена:

  • RAG_API_BASE_URL;
  • RAG_API_MODEL;
  • RAG_API_OPENWEBUI_TOKEN;
  • RAG_API_EDGE_TOKEN;
  • RAG_API_TIMEOUT_MS.

Секретные значения в KB не фиксируются. Контрольный запрос к RAG после настройки сознательно отложен по решению владельца.

3. Источники истины

Данные Источник истины Роль ИИ
Объекты, заказчики, сотрудники, задачи, журнал работ CRM alatyr-service читать, объяснять, готовить черновики
Номенклатура, услуги, цены, остатки, резервы МойСклад подбирать позиции и проверять доступность
Контрагенты, договоры, счета, оплаты, акты МоёДело сверять факты и готовить исключения
Регламенты, архитектура, инструкции Git KB alatyr-infra-kb RAG-поиск с указанием файла
Документы конкретного объекта изолированное object storage + object RAG OCR, извлечение и проверка комплектности
Переписка и календарь почта/календарь после отдельной интеграции классификация, черновики, напоминания
Телефония и мессенджеры подключаемые каналы после согласования транскрипция, краткое резюме, постановка задач

Правило: ответ модели не становится фактом только потому, что он хорошо сформулирован. Оперативные значения всегда перечитываются из canonical-системы непосредственно перед созданием документа или внешним действием.

4. Целевая архитектура

Админка / карточка объекта / входящие каналы
  → API alatyr-service и RBAC
  → выбор роли и сценария
  → context builder из canonical-источников
  → классификация и минимизация данных
  → object-scoped RAG / общая несекретная KB
  → model router: локальная модель или разрешённая cloud-модель
  → структурированный ответ по JSON-схеме
  → deterministic validation и бизнес-правила
  → черновик / preview / список уточнений
  → явное подтверждение пользователя
  → idempotent action через доменный сервис
  → append-only audit и результат в CRM

4.1. Модельный шлюз

Интеграцию проектировать provider-neutral:

  • локальная модель Open WebUI/Ollama для простых, повторяемых и чувствительных задач;
  • OpenAI API как опциональный серверный маршрут для более сложного рассуждения, structured output, OCR/vision и больших документов;
  • возможность позже добавить другого провайдера без переделки UI и доменной логики;
  • выбор маршрута по роли, классу данных, сложности, бюджету и доступности;
  • fallback только на заранее разрешённый маршрут, без тихой отправки данных во внешний cloud;
  • имя провайдера, модели и версия prompt фиксируются в audit.

OpenAI API нельзя вызывать из браузера. Ключ хранится только в Vaultwarden и server-side env/secret store. Для внешней модели нужны отдельные лимиты, таймауты, бюджет, журнал использования и политика передачи данных.

4.2. Контуры знаний

Нужны три изолированных слоя:

  1. Общая KB — регламенты и инструкции без клиентских документов.
  2. Object RAG — файлы и извлечённый текст только одного объекта, с обязательным object_id, ACL и lifecycle удаления.
  3. Оперативный контекст — свежие данные CRM/МоёДело/МойСклад, передаваемые на один запрос и не превращаемые автоматически в общую knowledge base.

Автоматический поиск по всем клиентским документам в одной общей коллекции запрещён.

4.3. Конвейер документов

upload
  → MIME/size/malware preflight
  → связь с object_id, contract_id и типом документа
  → OCR / text extraction / table extraction
  → нормализация страниц и координат
  → чанки с ACL и provenance
  → индекс object RAG
  → проверка полноты индексации
  → version/delete sync при замене или удалении оригинала

Для каждого фрагмента должны сохраняться минимум: объект, исходный файл, версия, страница, диапазон текста, время извлечения и метод. Ответ по документам обязан указывать файл и страницу либо честно сообщать, что подтверждение не найдено.

5. Роли и сценарии

5.1. Секретарь

Может:

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

Не может без подтверждения:

  • отправлять письмо или сообщение;
  • создавать/переносить встречу;
  • менять ответственного, срок, статус заявки или объекта;
  • обещать цену, срок, гарантию либо юридическое обязательство.

5.2. Квалификатор заявки и помощник по продажам

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

5.3. Сметчик

Сметчик должен работать не как генератор текста, а как управляемый цикл:

исходные данные
  → определение неизвестных
  → уточняющие вопросы
  → допущения
  → подбор каталога и норм
  → расчёт материалов, работ, логистики и резерва
  → проверка арифметики
  → варианты эконом / стандарт / резерв
  → черновик сметы
  → подтверждение

Пример исходных данных:

3 камеры, кабель по помещению, длина каждой линии 50 метров, регистратор, настройка выхода в интернет.

Помощник должен уточнить:

  • камеры IP или аналоговые, помещение или улица;
  • разрешение, объектив, ночная съёмка, микрофон, антивандальность;
  • питание PoE либо отдельные блоки, есть ли существующая сеть;
  • 50 м — трасса каждой линии или общий метраж;
  • способ прокладки: лоток, гофра, штроба, открытый монтаж, высота;
  • нужен ли запас кабеля 10–15%, патч-корды, коннекторы, коробки и крепёж;
  • число каналов регистратора и резерв на расширение;
  • срок хранения архива, режим записи и требуемый объём диска;
  • монитор, ИБП, шкаф/полка, коммутатор, роутер;
  • способ удалённого доступа: P2P, статический IP, VPN;
  • есть ли интернет на объекте и кто предоставляет доступ к роутеру;
  • нужны ли проект, исполнительная документация, обучение и гарантия;
  • адрес, пропускной режим, выезд, ночные/высотные работы;
  • компания, НДС/УСН, формат сметы и желаемый бюджет.

Результат должен быть структурирован:

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

ИИ предлагает позиции, но цены и остатки перечитываются из МойСклад. Создание canonical estimate и отправка клиенту происходят только после preview и подтверждения.

5.4. Делопроизводитель

  • регистрирует входящий/исходящий документ;
  • определяет тип, объект, заказчика, договор, счёт, акт и родительский документ;
  • предлагает номер, дату и корректное имя файла;
  • проверяет обязательные реквизиты, подписи, приложения и количество страниц;
  • обнаруживает дубли, противоречивые версии и отсутствующие документы;
  • ведёт checklist комплекта: договор, допсоглашение, смета, счёт, оплата, акт, исполнительная документация;
  • отслеживает сроки ответа, подписания и возврата оригиналов;
  • извлекает таблицы, суммы, даты, ИНН/КПП/ОГРН и сравнивает с canonical CRM;
  • готовит реестр документов и архивную опись;
  • формирует задания на исправление, но не заменяет оригинал автоматически.

5.5. Договорной и юридический помощник

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

5.6. Координатор объекта и прораб

  • формирует утренний план и вечерний отчёт;
  • показывает просрочки, блокеры, незакрытые замечания и ожидаемые материалы;
  • сводит журнал работ, смены, фото, документы и задачи;
  • сравнивает план/факт по объёму, сроку и бюджету;
  • готовит задания сотрудникам и чек-листы приёмки;
  • фиксирует решения совещания и изменения объёма;
  • предлагает допсоглашение при выявленном дополнительном объёме;
  • не назначает людей и не меняет сроки без подтверждения.

5.7. Инженер и технический эксперт

  • ищет инструкции и runbook в Git KB;
  • строит дерево диагностики;
  • предлагает схему, спецификацию и последовательность пусконаладки;
  • проверяет совместимость камер, PoE, регистратора, диска, сети и питания;
  • рассчитывает архив видеонаблюдения и бюджет мощности;
  • готовит программу испытаний, чек-лист сдачи и регламент обслуживания;
  • формирует исполнительную документацию из фактических данных;
  • явно отделяет подтверждённые параметры от предположений.

5.8. Диспетчер сервисной службы

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

5.9. Снабженец и складской помощник

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

5.10. Финансовый контролёр и бухгалтерский помощник

  • сверяет цепочку смета → договор → счёт → оплата → акт;
  • находит расхождения сумм, дат, компаний и контрагентов;
  • показывает дебиторку, ожидаемые оплаты и документы без закрытия;
  • готовит управленческий cash-flow и прогноз;
  • собирает данные для налогового/бухгалтерского специалиста;
  • не выполняет проводки и не считает себя источником бухгалтерской истины.

5.11. Помощник по сотрудникам

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

5.12. Аналитик руководителя

  • портфель объектов: стадия, стоимость, оплата, маржа, риск;
  • загрузка сотрудников и узкие места;
  • прогноз завершения и поступлений;
  • повторные дефекты и причины выездов;
  • эффективность каналов продаж и услуг;
  • качество данных: пустые связи, документы без объекта, счета без договора;
  • ежедневный brief и еженедельный управленческий отчёт.

5.13. Хранитель базы знаний

  • отвечает по регламентам с указанием исходного Markdown-файла;
  • находит противоречия и устаревшие инструкции;
  • формирует черновик обновления KB после инцидента или решения;
  • предлагает FAQ и обучающие материалы;
  • не записывает в Git непроверенный вывод модели как факт.

5.14. Клиентский помощник, поздний этап

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

Этот контур требует полноценной tenant/object isolation, отдельной аутентификации и red-team проверки до публичного запуска.

6. Контракты структурированных ответов

Для критичных сценариев модель должна возвращать не свободный текст, а данные по версированной JSON-схеме.

Минимальные типы:

  • clarification_request;
  • estimate_draft;
  • document_check;
  • document_registry_entry;
  • crm_change_draft;
  • task_draft;
  • message_draft;
  • meeting_summary;
  • reconciliation_report;
  • risk_register;
  • management_brief.

Каждый контракт содержит:

  • schemaVersion;
  • role;
  • objectId;
  • sourceSnapshot;
  • assumptions;
  • missingFacts;
  • citations;
  • confidence;
  • warnings;
  • proposedActions;
  • requiresConfirmation.

Сервер валидирует схему, пересчитывает арифметику и повторно читает canonical данные перед выполнением действия.

7. Безопасность и управление действиями

7.1. Доступ

  • RBAC по роли;
  • object-level ACL до расширения доступа менеджеров;
  • запрет cross-object retrieval;
  • отдельные service users и токены;
  • минимальные permissions для каждой интеграции;
  • запрет передачи клиентских документов в общую коллекцию.

7.2. Данные

  • классификация: публичные, внутренние, персональные, финансовые, договорные, секретные;
  • минимизация полей перед моделью;
  • redaction ненужных ИНН, адресов, телефонов, ФИО и банковских реквизитов;
  • локальная модель по умолчанию для чувствительного контекста;
  • внешняя модель только по разрешённой policy;
  • retention и удаление истории/индекса вслед за исходным документом.

7.3. Prompt injection

  • system policy отдельно от CRM, RAG и истории;
  • контекст считается недоверенными данными;
  • инструкция внутри документа не может менять права или вызывать tool;
  • allowlist инструментов по роли;
  • вывод модели не используется как команда shell/SQL/API;
  • adversarial-набор тестов для заметок, файлов, писем и OCR.

7.4. Запись и внешние действия

Для отправки писем, изменения CRM, создания документов, счетов, актов, задач, закупок и календарных событий:

  1. сформировать черновик;
  2. показать полный preview и источник данных;
  3. получить явное подтверждение;
  4. повторить preflight и проверить свежесть snapshot;
  5. выполнить idempotent action;
  6. записать actor, время, payload hash и результат в audit;
  7. при неоднозначном результате остановить автоповтор и отправить на reconciliation.

8. Этапы реализации

NOW: стабилизация текущего помощника

  • подтвердить существование private model wrapper и доступ service user;
  • проверить, что RAG_API_MODEL совпадает с разрешённым Model ID;
  • позднее выполнить один контролируемый запрос из карточки объекта; сейчас он отложен;
  • добавить health/latency/error monitoring без логирования текста;
  • описать rollback и ротацию обоих токенов;
  • собрать базовый evaluation-набор из безопасных тестовых объектов.

NEXT 1: секретарь и object copilot read-only

  • выбрать роль в UI;
  • краткие сводки, вопросы, риски, следующие действия;
  • структурированные ответы и citations на CRM/KB;
  • кнопки «создать черновик», но без записи;
  • feedback: полезно/ошибка/пропущенный факт.

NEXT 2: сметчик

  • диалог уточнений;
  • server-side калькулятор и проверка арифметики;
  • чтение каталога, цен и остатков МойСклад;
  • нормы работ, запас и расходники;
  • варианты комплектации;
  • preview canonical estimate;
  • сохранение только после подтверждения.

NEXT 3: делопроизводитель и object RAG

  • extraction/OCR для PDF, DOCX, XLSX и изображений;
  • object-scoped collections или metadata filters с ACL;
  • provenance до файла/страницы;
  • реестр документов;
  • контроль комплектности и версий;
  • синхронное удаление индекса при удалении файла.

LATER 1: гибрид OpenAI

  • отдельный server-side credential;
  • provider/model router и policy;
  • structured output и vision только для утверждённых сценариев;
  • лимиты бюджета по роли/пользователю/объекту;
  • redaction и отчёт о переданных данных;
  • локальный fallback либо честная ошибка, но не скрытая смена trust boundary.

LATER 2: управляемые действия

  • CRM change drafts;
  • создание задач и напоминаний;
  • генерация КП, договоров, приложений, счетов и актов;
  • отправка сообщений и писем только после preview;
  • календарь и протоколы;
  • append-only audit, idempotency и reconciliation.

LATER 3: кросс-канальный секретарь

  • почта;
  • календарь;
  • Telegram/MAX/WhatsApp при юридически допустимом подключении;
  • телефония и транскрипция;
  • единый inbox;
  • утренний brief и вечерний follow-up.

LATER 4: аналитика и клиентский кабинет

  • управленческие отчёты;
  • прогнозы ресурсов и денег;
  • customer-facing assistant с tenant isolation;
  • продуктовые пакеты CRM-60/CRM-61 для внешних клиентов.

9. Метрики готовности

Безопасность

  • 0 случаев cross-object disclosure;
  • 0 записей/отправок без подтверждения;
  • 0 секретов и текста переписки в application logs;
  • 100% внешних действий имеют audit;
  • 100% удалённых документов удаляются из индекса по lifecycle.

Качество

  • доля ответов с подтверждаемым источником;
  • полнота обязательных уточнений;
  • точность арифметики сметы;
  • edit distance между черновиком и утверждённым документом;
  • процент честных отказов при недостатке данных;
  • количество найденных реальных несоответствий документов.

Эффект

  • время от заявки до первого квалифицированного ответа;
  • время подготовки сметы;
  • время регистрации комплекта документов;
  • число просроченных follow-up;
  • доля смет, подготовленных без ручного переноса каталога;
  • сокращение повторного ввода данных;
  • стоимость inference на объект и на утверждённый документ.

10. Решения, которые надо принять до write-автоматизации

  1. Какие менеджеры видят все объекты, а какие только назначенные.
  2. Какие классы данных разрешено отправлять в OpenAI API.
  3. Нужна ли явная отметка пользователя для каждого cloud-запроса.
  4. Кто утверждает смету и минимальную маржу.
  5. Где хранятся нормы работ, расхода и коэффициенты.
  6. Какие документы требуют обязательной юридической проверки.
  7. Сколько хранится история чата и extracted text.
  8. Какие каналы секретарь может только читать, а какие — использовать для отправки.
  9. Как разделяются данные двух собственных компаний.
  10. Какие операции запрещены ИИ безусловно.

11. Definition of Done для каждой новой роли

  • определён владелец процесса;
  • перечислены источники истины;
  • описаны вход, структурированный выход и обязательные вопросы;
  • установлен минимальный RBAC и object ACL;
  • есть negative/adversarial tests;
  • есть бюджет контекста и inference;
  • есть метрики качества;
  • read-only MVP принят на тестовых данных;
  • write path имеет preview, confirmation, idempotency и audit;
  • подготовлены rollback, мониторинг и runbook;
  • секреты находятся в Vaultwarden, а в KB записаны только имена и места хранения.