← На главную
автосборка · конвейер

Лог изменений проектов

Сборка из папок changelogs: сначала в корне репозитория (company_check/changelogs и т.д.), затем в каталогах версий v1, v2, v3. Записи внутри проекта — от новых к старым (по дате в имени файла d_m_Y).

Context menu (context_menu)

v2 · 14_04_2026 · 14.04.2026

Версия: 14_04_2026

  • Ознакомление с проектом `v2/context_menu`: приложение для Маркетплейс Битрикс24 — пункт контекстного меню сообщения «Создать сделку» (placement `IM_CONTEXT_MENU`), создание сделки из текста сообщения и уведомление в чат со ссылкой на CRM.
  • Зафиксировано соглашение по changelog: имя файла — дата в формате `d_m_Y` (как в PHP: день и месяц с ведущими нулями, год из четырёх цифр, разделитель `_`).
  • Предыдущая зафиксированная версия: `23_3_2026` (изменения по `install.php`, `context_menu.php`: регистрация placement, unbind/bind, «тихое» окно 1×1, CRM без жёсткого `CATEGORY_ID`, обработка ошибок и контекста `dialogId`/`messageId`).

Текущее состояние кода (на дату файла):

  • `install.php` — серверный обработчик `ONAPPINSTALL` / `OnAppSettingsInstall` с `placement.unbind` → `placement.bind` для `IM_CONTEXT_MENU`, параметры `GROUP_NAME`, `LANG_ALL`, `OPTIONS`; клиентская ветка BX24 с тем же сценарием; логи `placement_unbind_result` / `placement_bind_result`.
  • `context_menu.php` — для `POST`/`IM_CONTEXT_MENU`: серверная загрузка текста (`im.dialog.messages.get`), проверка CRM (`crm.deal.fields`), `crm.deal.add` без фиксированной воронки, `im.message.add`; для `GET` — страница-описание приложения; мини-скрипт закрытия iframe после POST.
  • `index.php` — краткая пользовательская страница приложения «Сделка из чата: одним кликом» (для открытия из списка установленных приложений).
  • `marketing.md` — описание продукта, маркетинговые тексты и архитектура для Маркета (в репозитории; при необходимости синхронизировать с актуальным названием в карточке Маркета).

Доработки от 14_04_2026 (проверка 5 требований):

  • `context_menu.php` переведен на серверный сценарий обработки `POST` от `IM_CONTEXT_MENU`: создание сделки и отправка ответа в чат выполняются на PHP без ожидания фронтенда; в iframe остается только мини-скрипт автозакрытия `BX24.closeApplication()`.
  • Для запуска из списка установленных приложений (без `PLACEMENT_OPTIONS`) добавлена полноценная пользовательская страница-описание, чтобы не было падений и белого экрана.
  • Усилена универсальность обработки прав: явная проверка `crm.deal.fields`, создание сделки без фиксированного `CATEGORY_ID`, отдельное сообщение в чат при недостатке прав на CRM/воронку.
  • Унифицировано название приложения в пользовательских экранах: `Сделка из чата: одним кликом`.
  • `index.php` заменен на краткую страницу назначения приложения в пользовательском стиле (под открытие из раздела установленных приложений).

Полный отчёт о работе в рамках текущего чата (сессия)

Ниже зафиксирована вся последовательность действий и решений по проекту `v2/context_menu` в ходе диалога.

1. Организация changelog и версионирование по дате

  • Проверена папка `v2/context_menu/changelogs/`: при отсутствии каталог создавался бы автоматически; в репозитории каталог уже был.
  • Соглашение по именам файлов: формат `d_m_Y` (день и месяц с ведущими нулями, четырёхзначный год, разделитель `_`), например `14_04_2026`.
  • Удалён дублирующий файл с нестандартным именем `14_4_2026` (пустой, месяц без ведущего нуля), чтобы не плодить две «версии» на один день.
  • Самая «молодая» по дате запись в `changelogs` соответствует текущей итерации разработки; зафиксирована связь с предыдущим файлом `23_3_2026`.

2. Первичное ознакомление с проектом

  • Проект: приложение для Маркетплейс Битрикс24 — действие в контекстном меню сообщения чата (`IM_CONTEXT_MENU`): создание сделки CRM из текста сообщения и уведомление в чат со ссылкой на сделку.
  • Просмотрены ключевые файлы: `install.php` (регистрация placement, `placement.unbind` / `placement.bind`), `context_menu.php` (логика сделки и чата), `index.php`, `marketing.md`.

3. Открытие из списка установленных приложений: ошибка 405 и консоль

  • Проблема: при переходе по ссылке на приложение из списка установленных открывался тот же обработчик, что и для меню сообщения, без `dialogId`/`messageId`, из-за чего возникали белый экран и ошибка в консоли.
  • Решение (первая итерация): в `context_menu.php` добавлена ветка «обычного» открытия приложения — показ краткой пользовательской страницы-описания без выполнения сценария создания сделки; фоновый сценарий с минимальным UI оставлен только при наличии контекста `IM_CONTEXT_MENU`.

4. Расширенная доработка по пяти требованиям

Запрошено:

1. Доступность действия создания сделки из сообщения также в мобильном приложении Битрикс24 (под пунктом «Создать»), после установки.

2. На десктопе убрать заметное промежуточное окно: только фоновое создание сделки и сообщение в чате.

3. Корректное поведение при недостаточных правах (нет CRM, нет прав на воронку и т.п.), универсальность для облака и коробки.

4. Стабильная страница при открытии приложения из списка установленных (без 405 и с понятным текстом).

5. Единое пользовательское название приложения: «Сделка из чата: одним кликом».

Реализовано в коде:

  • `context_menu.php`

- Основная бизнес-логика перенесена на серверный обработчик `POST` при `PLACEMENT=IM_CONTEXT_MENU`: чтение `DOMAIN`, `AUTH_ID`, `PROTOCOL`, разбор `PLACEMENT_OPTIONS` (`dialogId`, `messageId`), вызовы REST через `curl` к порталу (`im.dialog.messages.get`, `crm.deal.fields`, `crm.deal.add`, `im.message.add`).

- Создание сделки без фиксированного `CATEGORY_ID` — портал подбирает доступную пользователю воронку.

- Перед созданием сделки выполняется проверка доступа к CRM через `crm.deal.fields`; при ошибках — системное сообщение в чат с понятной формулировкой о правах, где уместно.

- После успеха — сообщение в чат со ссылкой на карточку сделки; превью текста обрезается с учётом UTF-8 (вспомогательные функции при отсутствии `mbstring` — fallback на однобайтовые функции).

- Ответ обработчика для placement: минимальная HTML-страница с `BX24.resizeWindow(1,1)` и `BX24.closeApplication()` — только закрытие контейнера виджета, без отдельного «интерфейса» сценария.

- Для GET (открытие без контекста меню) — статическая страница с названием «Сделка из чата: одним кликом» и краткой инструкцией для пользователя.

  • `install.php`

- Обновлены заголовки и подписи установки под официальное название приложения; логика `placement.bind` / `IM_CONTEXT_MENU` и `OPTIONS` сохранена (в т.ч. `context: ALL` для всех типов чатов в рамках документации API).

  • `index.php`

- Заменён прежний промо-блок «Консалт Инфо» на краткую страницу назначения того же приложения с тем же названием — для сценария, когда в настройках Маркета указан URL на `index.php` как страница приложения.

  • Название

- В пользовательских заголовках и текстах зафиксировано: «Сделка из чата: одним кликом» (константа `APP_NAME` в `context_menu.php`, заголовки в `index.php` и блок установки в `install.php`).

5. Ограничения и примечания по мобильному клиенту

  • Регистрация пункта выполняется через официальный placement `IM_CONTEXT_MENU`; в документации Bitrix24 для этого placement описаны параметры `OPTIONS` (`context`, `role`, `extranet`), отдельного флага «только мобильный» в `placement.bind` для него нет.
  • Отображение пункта в мобильном приложении зависит от клиента Битрикс24; серверная реализация снижает зависимость от JS в iframe и одинаково обрабатывает вызов, если контекст `PLACEMENT_OPTIONS` передан.

6. Затронутые файлы (итог)

| Файл | Суть изменений |

|------|----------------|

| `v2/context_menu/context_menu.php` | Серверный POST для `IM_CONTEXT_MENU`, GET-страница приложения, название, права, UTF-8 helpers |

| `v2/context_menu/install.php` | Тексты и заголовки под название приложения |

| `v2/context_menu/index.php` | Страница описания приложения для списка установленных |

| `v2/context_menu/changelogs/14_04_2026` | Настоящий файл: история и полный отчёт по чату |

7. Ссылки на документацию (справочно)

  • [IM_CONTEXT_MENU](https://apidocs.bitrix24.com/api-reference/widgets/im/context-menu.html)
  • [placement.bind](https://apidocs.bitrix24.com/api-reference/widgets/placement-bind.html)
  • [Контекстное меню сообщений (MENU в im.message)](https://apidocs.bitrix24.com/api-reference/chats/messages/menu.html) — для понимания отличий от виджетов placement

*Конец отчёта по сессии чата для версии `14_04_2026`.*

v2 · 23_3_2026 · 23.03.2026

Версия: 23_3_2026

  • Добавлена обновленная регистрация `IM_CONTEXT_MENU` в `install.php`: единые параметры `OPTIONS`, локализация и `GROUP_NAME=Создать`.
  • Добавлена отвязка старого обработчика через `placement.unbind` при установке/переустановке, чтобы избежать дублей пункта меню.
  • Обновлен обработчик `context_menu.php`: работа в «тихом» минимальном окне (прозрачный 1x1 интерфейс) и автозакрытие после выполнения.
  • Создание сделки теперь выполняется без фиксированного `CATEGORY_ID`, чтобы повышать совместимость с разными правами на воронки.
  • Добавлена унифицированная обработка REST-ошибок и уведомление в чат при недостатке прав на CRM/воронку.
  • Добавлена более гибкая обработка `dialogId/messageId` из контекста для совместимости разных клиентов.

Полное описание работ по проекту в рамках текущего чата:

1) Организация changelog в проекте

  • Проверена корневая папка проекта `context_menu` на наличие каталога `changelogs`.
  • При отсутствии каталог был создан.
  • Создан файл версии/даты `changelogs/23_3_2026` по формату `d_m_Y`.
  • Для подробной фиксации также был создан файл `changelogs/23_3_2026.md` с расширенным отчётом.

2) Доработки регистрации действия «Создать сделку» в `install.php`

  • Добавлена функция `mpBuildPlacementBindParams($handlerUrl)` для централизованной сборки параметров `placement.bind`.
  • В регистрацию `IM_CONTEXT_MENU` добавлены:

- `GROUP_NAME = "Создать"` (группировка под пунктом «Создать»),

- `LANG_ALL` для `ru/en` с локализацией `TITLE` и `GROUP_NAME`,

- `OPTIONS` с параметрами:

- `context = "ALL"`

- `role = "USER"`

- `extranet = "N"`.

  • Добавлен `placement.unbind` перед `placement.bind` (и в install event, и в JS-ветке), чтобы не накапливались дубли пункта после переустановок.
  • Добавлены дополнительные логи:

- `placement_unbind_result`

- `placement_bind_result`.

3) Доработки фонового сценария создания сделки в `context_menu.php`

  • Убрана видимая промежуточная UI-часть (мигающее окно):

- пустой заголовок страницы,

- прозрачный минимальный интерфейс `1x1`,

- `BX24.resizeWindow(1, 1)`.

  • Добавлено гарантированное закрытие приложения:

- `closeApp()` + вызов в `finally`.

  • Введён единый REST-wrapper `callRest()` для унифицированной обработки ошибок API.

4) Улучшение универсальности и обработки прав

  • Добавлена ранняя проверка доступности CRM:

- `ensureCrmAccessible()` через `crm.deal.fields`.

  • Из `crm.deal.add` убран фиксированный `CATEGORY_ID: 0`:

- теперь воронка не зашита жестко,

- сценарий лучше работает у пользователей с ограничениями по воронкам.

  • Добавлена классификация ошибок прав:

- `ACCESS_DENIED`

- `INVALID_CREDENTIALS`

- `insufficient_scope`

- текстовые признаки недостатка прав/доступа.

  • При неуспехе создания сделки добавлено системное уведомление в чат:

- `postErrorToChat()` сообщает пользователю причину.

5) Совместимость контекста запуска из разных клиентов

  • Добавлен helper `getPlacementOption()` для чтения `dialogId/messageId` в разных регистрах ключей.
  • Улучшен сценарий чтения текста исходного сообщения:

- попытка точного поиска по `messageId`,

- при неуспехе безопасный fallback, чтобы не срывать весь процесс.

6) Проверки после изменений

  • Проверены линтер-диагностики по измененным файлам: ошибок не найдено.
  • Попытка `php -l` не выполнена из-за отсутствия `php` в окружении терминала.

7) Файлы, затронутые в ходе работ

  • `install.php`
  • `context_menu.php`
  • `changelogs/23_3_2026`
  • `changelogs/23_3_2026.md`

Task Helper (task_helper)

v2 · 23_03_2026 · 23.03.2026

23_03_2026

  • Создан файл changelog для текущей версии проекта.
  • Добавлен слой `filteredcontext` для текущей и завершенных задач, и ранжирование похожести переведено на анализ этого контекста.
  • Добавлен промпт для BitrixGPT при формировании `filteredcontext` в заданном формате и структуре.
  • В установщике `install.php` реализован сценарий переустановки: сначала `placement.unbind`, затем `placement.bind`.

Подробно выполнено в текущем чате

  • Проверена структура проекта и наличие каталога changelog. Папка `changelogs` отсутствовала, создана с файлом текущей даты `23_03_2026`.
  • Проведен анализ текущей реализации в `index.php`, `install.php`, `README.md` и уточнены точки доработки по логике анализа задач и переустановке приложения.

`index.php` — доработка анализа задач и похожести

  • Добавлен единый шаблон промпта `FILTERED_CONTEXT_PROMPT` для BitrixGPT в точном формате, заданном в ТЗ:

- фильтрация по полям `title`, `description`, `comments`, сообщениям чата и участникам;

- игнорирование служебных полей и внутренних ID;

- структурированный ответ из 6 разделов на русском языке.

  • Добавлен слой формирования фильтрованного контекста `buildFilteredContext(...)`:

- собирает структурированные комментарии (автор, дата, текст, `ATTACHED_OBJECTS`);

- поддерживает сообщения чата задачи (`chat_messages`) при наличии;

- собирает участников: ответственный, соисполнители, наблюдатели;

- формирует векторизуемый текст `vectorText` для сравнения;

- при доступности AI формирует краткое резюме `summary` через `ai.api`.

  • Добавлен резолв имен пользователей из Bitrix24 (`user.get`) с кешированием:

- `getUsersMapByIds(...)` + `userNameCache`;

- имена подставляются в комментарии и участников.

  • Добавлены парсеры AI-резюме:

- `parseFilteredSummaryToCurrentMeaning(...)` для текущей задачи;

- `parseFilteredSummaryToSolvedMeaning(...)` для завершенных задач;

- `parseFilteredSection(...)` для извлечения разделов 1..6.

  • Переписан алгоритм `rankAndExplain(...)` на работу через `filteredcontext`:

- текущая задача оценивается по `current.filteredContext.vectorText`;

- кандидаты сначала проходят легкий прескоринг (`buildLightFilteredFromTaskRow`);

- затем выполняется переоценка top-окна с догрузкой полной задачи и `filteredcontext`;

- смысловая похожесть, сигналы и итоговый отбор считаются уже на фильтрованном контексте.

  • Добавлена оптимизация производительности:

- окно углубленной переоценки уменьшено с 40 до 24 кандидатов;

- AI-суммаризация запускается точечно для релевантных top-кейсов.

  • Обновлен процесс подсказки:

- в `runSuggest()` для текущей нерешенной задачи сначала создается `current.filteredContext`;

- AI-итог формируется на основе filtered context текущей и похожих задач.

  • Обновлена debug-кнопка:

- теперь `Показать контекст` отображает также сформированный `filteredContext`.

  • Добавлена совместимость по полям участников:

- учитываются как `accomplices`/`auditors`, так и `ACCOMPLICES`/`AUDITORS`.

`install.php` — переустановка через деинсталляцию

  • На серверной ветке события установки (`ONAPPINSTALL`, `OnAppSettingsInstall`) добавлен предварительный `thUnbindPlacement(...)` перед новым bind.
  • На клиентской установочной странице добавлен явный сценарий переустановки:

- новая функция `unbindPlacementSequential(...)` делает `placement.unbind` по всем placement;

- только после этого запускается `bindPlacementSequential(...)`.

  • Исправлена последовательная установка placement:

- ранее успешный bind мог завершать процесс раньше времени;

- теперь bind проходит по обоим placement и завершает установку корректно.

  • Обновлен статус установки для пользователя:

- отражается цепочка «проверка scope -> деинсталляция привязок -> установка».

Документация

  • `README.md` обновлен:

- отражено обязательное формирование `filteredcontext` и поиск похожести на его основе;

- явно описано поведение переустановки через deinstall/unbind перед install/bind.

Проверки и валидация

  • Выполнена проверка IDE-диагностики (`ReadLints`) по измененным файлам `index.php`, `install.php`, `README.md` — новых lint-ошибок не обнаружено.
  • Попытка CLI-проверки PHP (`php -l`) выполнена, но в окружении отсутствует `php` в PATH, поэтому синтаксическая проверка через CLI недоступна.

Company Check (company_check)

v2 · 23_03_2026 · 23.03.2026

Changelog 23_03_2026

  • Создан файл версии за текущую дату.
  • Итерация: убрана кнопка "Настройки" из пользовательского CRM-интерфейса, настройки оставлены только при открытии приложения из списка установленных.
  • На странице настроек добавлены поясняющие описания для каждого пункта.
  • В результатах поиска компания, уже привязанная к текущей сущности, поднимается первой и помечается ярким маркером "Привязана к карточке".
  • Метка источника "Портал" переименована в "CRM".
  • Для результатов DaData добавлена кнопка "Открыть" с просмотром полного набора данных в модальном окне.
  • Реализовано создание компании и реквизита из DaData с максимальным заполнением доступных полей и последующей автоматической привязкой.
  • Добавлен порционный вывод результатов поиска (кнопка "Показать еще"), расширен лимит DaData в прокси до 100.
  • Убрана кнопка "Уже привязана", оставлен только маркер привязки.
  • Кнопки действий выведены в строку для более компактного отображения строк результатов.
  • Улучшен `install.php`: добавлена понятная диагностика ошибок установки вместо `[object Object]`, проверка `scope placement`, проверка роли пользователя и fallback-режим привязки placements.
  • Переустановка доработана: перед повторной регистрацией выполняется удаление старых `placement` (`placement.unbind`) для всех точек приложения, затем выполняется новый bind.

Полное описание работ за чат

1) Подготовка changelog-структуры проекта

  • Проверена корневая папка проекта и наличие директории `changelogs`.
  • Создана директория `changelogs` и файл версии по текущей дате `23_03_2026`.
  • Настроен процесс ведения изменений в этом файле по каждой итерации.

2) Доработки пользовательского интерфейса и UX в `index.php`

  • Удален доступ к настройкам из обычного CRM-интерфейса (кнопка "Настройки" больше не показывается в карточках CRM).
  • Сохранена логика: страница настроек открывается только при запуске приложения из списка установленных приложений (без контекста сущности CRM).
  • Обновлен текст подсказок в блоке поиска для актуального поведения интерфейса.
  • Компоновка результатов поиска сделана более компактной:

- уменьшены отступы строк таблицы;

- кнопки действий переведены в одну строку;

- скорректированы ширины колонок таблицы.

  • Убрана кнопка/состояние "Уже привязана"; вместо этого используется только маркер "Привязана к карточке".
  • Маркер "Привязана к карточке" сделан визуально более заметным (яркий стиль).
  • Переименована метка источника "Портал" в "CRM".
  • Для DaData-элементов добавлена кнопка "Открыть данные" и модальное окно просмотра полного JSON компании из DaData.

3) Логика поиска, сортировки и выдачи результатов

  • Добавлена сортировка результатов с приоритетом:

1. компания, уже привязанная к текущей карточке;

2. результаты CRM;

3. остальные по имени.

  • Реализован порционный вывод результатов (кнопка "Показать еще", шаг по 50 записей).
  • Добавлен вспомогательный слой пагинации для REST-методов (`callRestAll`) с выборкой больших объемов данных.
  • Улучшен поиск по CRM:

- расширен сбор компаний по названию;

- расширен сбор по реквизитам (через `crm.requisite.list`) с обработкой больших выборок и последующим добором компаний пачками.

4) Создание компании из DaData с реквизитами

  • Реализован сценарий "Создать и привязать" для DaData-результата:

- создается компания (`crm.company.add`);

- создается реквизит (`crm.requisite.add`) с максимальным заполнением доступных полей;

- выполняется привязка к текущей сущности CRM;

- выполняется синхронизация контактов сущности и компании;

- добавляется комментарий в таймлайн.

  • Добавлена загрузка и кэширование пресета реквизитов (`crm.requisite.preset.list`) для компаний.
  • Добавлены пользовательские сообщения статуса на этапах создания/привязки/ошибок.

5) Настройки приложения (админ-страница)

  • Для каждого пункта настроек добавлен поясняющий текст:

- внешний поиск;

- страна по умолчанию;

- количество результатов;

- таймаут;

- token;

- secret;

- действия.

  • Сохранена совместимость с существующим хранением параметров через `app.option.get/set`.

6) Доработки прокси DaData в `proxy.php`

  • Увеличен максимально допустимый лимит `dadata_count` с 20 до 100 для более адекватной выдачи при больших результатах.

7) Исправления и усиление установщика `install.php`

  • Добавена подробная диагностика ошибок вместо `[object Object]`:

- нормальная сериализация/раскрытие `error`, `error_description`, `message`.

  • Добавлена проверка `scope` (включая `placement`) и информативные сообщения.
  • Добавлена проверка роли пользователя (`user.current`) и предупреждение при запуске не от администратора.
  • Добавлен fallback для `placement.bind` с разными форматами параметров (верхний/нижний регистр).
  • Ошибки "already exists/duplicate/already registered" обрабатываются как нефатальные (если привязка уже есть).

8) Переустановка с предварительным удалением привязок

  • Реализовано поведение "при переустановке сначала удалить себя":

- перед `placement.bind` выполняется `placement.unbind` для всех целевых placement;

- реализовано и в серверном install-event сценарии, и в браузерном установщике;

- добавлены fallback-варианты вызова unbind;

- случаи "не найдено/не было привязано" обрабатываются как допустимые.

9) Верификация и контроль качества

  • Выполнена проверка изменений через IDE-диагностику (`ReadLints`) по измененным файлам — ошибок не выявлено.
  • Попытка `php -l` на локальной машине не выполнена из-за отсутствия `php` в PATH терминала.

SLA Monitor (sla_monitor)

v1 · 23_03_2026 · 23.03.2026

Версия: 23_03_2026

Изменения:

  • Файл создан автоматически как текущая версия за сегодняшнюю дату.
  • Обновлена страница настроек: русские названия ролей, удален бейдж Bitrix24 Market app, добавлены описания полей.
  • Добавлены проверки прав для настроек: доступ только администратору портала или пользователю с ролью app_admin.
  • Бот в личных сообщениях теперь коротко отвечает о своих функциях без лишних деталей.
  • На вкладке мониторинга добавлен просмотр полной сводки и пояснения к кнопкам.
  • Доработана SLA-логика: риск не поднимается для подтверждений от клиента (например, «все хорошо», «спасибо») и учитывается контекст последних сообщений.
  • Формирование сводки расширено: анализируются все чаты с событиями бота за период + сохраняется общая сводка all_chats.
  • Улучшена переустановка: перед установкой выполняется очистка старых bindings/бота, uninstall удаляет и bot, и placements.

Подробное описание выполненных работ:

1) Страница "Настройки"

  • Удален визуальный элемент "Bitrix24 Market app" из шапки интерфейса.
  • Выполнена русификация названий ролей в форме назначения:

- app_admin -> "Администратор приложения"

- sla_manager -> "Менеджер SLA"

- monitor_viewer -> "Наблюдатель мониторинга"

  • Добавлены краткие пояснения к каждой отображаемой настройке, чтобы администратору было понятно назначение полей.
  • Из формы настроек убраны поля, не предназначенные для ручного редактирования в облачном сценарии пользователем (Portal code и API token в UI).
  • Добавлена проверка прав на доступ к настройкам:

- доступ разрешен только администратору портала Bitrix24;

- либо пользователю с ролью "Администратор приложения" (app_admin).

  • Проверка реализована и на клиентской стороне (скрытие блока настроек), и на серверной стороне (ограничение API для settings/roles действий).

2) Проверка облачных параметров/маркетплейса

  • Зафиксированы целевые значения по умолчанию для окружения:

- portal_code: portal2.consult-info.ru

- ai_rest_method: ai.api

- api_token: b7d55e30654c474d33d3e2e3c1de70eff837fcc27f747f55

  • Реализация обновлена так, что API token берется из сохраненной конфигурации, а при ее отсутствии инициализируется из дефолтного значения.

3) Бот (личные сообщения)

  • Добавлено поведение для личного диалога: бот отвечает коротким, безопасным для пользователей сообщением о том, кто он и для чего нужен.
  • Сообщение сформулировано без излишне детального контроля/аналитики, чтобы не создавать негативного восприятия.
  • Добавлена защита от зацикливания ответов (бот не отвечает на свои же сообщения).

4) Вкладка "Мониторинг" и сводки

  • Добавлены краткие пояснения к кнопкам управления мониторингом.
  • Реализован просмотр содержимого сводки:

- в таблице "Последние сводки" добавлена кнопка "Просмотр";

- открывается модальное окно с развернутым текстом сводки, рекомендациями и оценками.

5) Логика SLA-рисков

  • Уточнены правила срабатывания риска:

- риск не поднимается, если последнее релевантное сообщение по теме не клиентское;

- риск не поднимается для клиентских подтверждений, что вопрос закрыт/все в порядке.

  • Добавлен анализ контекста последних сообщений в рамках темы (цепочки) для фильтрации "подтверждающих" клиентских сообщений (например: "все хорошо", "спасибо", "можно закрыть", "вопрос решен").

6) Формирование сводок по всем чатам

  • Логика формирования сводок расширена:

- анализ ведется по всем чатам, где за период есть события от бота;

- данные группируются по чатам, а не только по единичному контексту;

- дополнительно сохраняется агрегированная общая сводка с контекстом all_chats.

7) Установка/переустановка/деинсталляция

  • Доработан сценарий переустановки:

- перед новой установкой выполняется безопасная очистка старых placement-привязок и регистрации бота;

- затем выполняется повторная корректная регистрация.

  • Доработан uninstall-сценарий:

- теперь удаляются не только placements, но и бот.

8) Обновленные файлы проекта

  • dashboard.php
  • api.php
  • src/Repository.php
  • src/ManualAnalyzer.php
  • src/BitrixGptClient.php
  • src/Config.php
  • config.php
  • bot_handler.php
  • install.php
  • uninstall.php
  • changelogs/23_03_2026
v2 · 23_03_2026 · 23.03.2026

Версия: 23_03_2026

Изменения:

  • Файл создан автоматически как текущая версия за сегодняшнюю дату.
  • Обновлена страница настроек: русские названия ролей, удален бейдж Bitrix24 Market app, добавлены описания полей.
  • Добавлены проверки прав для настроек: доступ только администратору портала или пользователю с ролью app_admin.
  • Бот в личных сообщениях теперь коротко отвечает о своих функциях без лишних деталей.
  • На вкладке мониторинга добавлен просмотр полной сводки и пояснения к кнопкам.
  • Доработана SLA-логика: риск не поднимается для подтверждений от клиента (например, «все хорошо», «спасибо») и учитывается контекст последних сообщений.
  • Формирование сводки расширено: анализируются все чаты с событиями бота за период + сохраняется общая сводка all_chats.
  • Улучшена переустановка: перед установкой выполняется очистка старых bindings/бота, uninstall удаляет и bot, и placements.

Подробное описание выполненных работ:

1) Страница "Настройки"

  • Удален визуальный элемент "Bitrix24 Market app" из шапки интерфейса.
  • Выполнена русификация названий ролей в форме назначения:

- app_admin -> "Администратор приложения"

- sla_manager -> "Менеджер SLA"

- monitor_viewer -> "Наблюдатель мониторинга"

  • Добавлены краткие пояснения к каждой отображаемой настройке, чтобы администратору было понятно назначение полей.
  • Из формы настроек убраны поля, не предназначенные для ручного редактирования в облачном сценарии пользователем (Portal code и API token в UI).
  • Добавлена проверка прав на доступ к настройкам:

- доступ разрешен только администратору портала Bitrix24;

- либо пользователю с ролью "Администратор приложения" (app_admin).

  • Проверка реализована и на клиентской стороне (скрытие блока настроек), и на серверной стороне (ограничение API для settings/roles действий).

2) Проверка облачных параметров/маркетплейса

  • Зафиксированы целевые значения по умолчанию для окружения:

- portal_code: portal2.consult-info.ru

- ai_rest_method: ai.api

- api_token: b7d55e30654c474d33d3e2e3c1de70eff837fcc27f747f55

  • Реализация обновлена так, что API token берется из сохраненной конфигурации, а при ее отсутствии инициализируется из дефолтного значения.

3) Бот (личные сообщения)

  • Добавлено поведение для личного диалога: бот отвечает коротким, безопасным для пользователей сообщением о том, кто он и для чего нужен.
  • Сообщение сформулировано без излишне детального контроля/аналитики, чтобы не создавать негативного восприятия.
  • Добавлена защита от зацикливания ответов (бот не отвечает на свои же сообщения).

4) Вкладка "Мониторинг" и сводки

  • Добавлены краткие пояснения к кнопкам управления мониторингом.
  • Реализован просмотр содержимого сводки:

- в таблице "Последние сводки" добавлена кнопка "Просмотр";

- открывается модальное окно с развернутым текстом сводки, рекомендациями и оценками.

5) Логика SLA-рисков

  • Уточнены правила срабатывания риска:

- риск не поднимается, если последнее релевантное сообщение по теме не клиентское;

- риск не поднимается для клиентских подтверждений, что вопрос закрыт/все в порядке.

  • Добавлен анализ контекста последних сообщений в рамках темы (цепочки) для фильтрации "подтверждающих" клиентских сообщений (например: "все хорошо", "спасибо", "можно закрыть", "вопрос решен").

6) Формирование сводок по всем чатам

  • Логика формирования сводок расширена:

- анализ ведется по всем чатам, где за период есть события от бота;

- данные группируются по чатам, а не только по единичному контексту;

- дополнительно сохраняется агрегированная общая сводка с контекстом all_chats.

7) Установка/переустановка/деинсталляция

  • Доработан сценарий переустановки:

- перед новой установкой выполняется безопасная очистка старых placement-привязок и регистрации бота;

- затем выполняется повторная корректная регистрация.

  • Доработан uninstall-сценарий:

- теперь удаляются не только placements, но и бот.

8) Обновленные файлы проекта

  • dashboard.php
  • api.php
  • src/Repository.php
  • src/ManualAnalyzer.php
  • src/BitrixGptClient.php
  • src/Config.php
  • config.php
  • bot_handler.php
  • install.php
  • uninstall.php
  • changelogs/23_03_2026
Корень · 23_03_2026 · 23.03.2026

Версия: 23_03_2026

Изменения:

  • Файл создан автоматически как текущая версия за сегодняшнюю дату.
  • Обновлена страница настроек: русские названия ролей, удален бейдж Bitrix24 Market app, добавлены описания полей.
  • Добавлены проверки прав для настроек: доступ только администратору портала или пользователю с ролью app_admin.
  • Бот в личных сообщениях теперь коротко отвечает о своих функциях без лишних деталей.
  • На вкладке мониторинга добавлен просмотр полной сводки и пояснения к кнопкам.
  • Доработана SLA-логика: риск не поднимается для подтверждений от клиента (например, «все хорошо», «спасибо») и учитывается контекст последних сообщений.
  • Формирование сводки расширено: анализируются все чаты с событиями бота за период + сохраняется общая сводка all_chats.
  • Улучшена переустановка: перед установкой выполняется очистка старых bindings/бота, uninstall удаляет и bot, и placements.