# Changelog — AegisOne Service Portal ## 1.5.4 (22.05.2026) ## 1.5.3 (22.05.2026) ### Новые функции - П.8: Роли: обновлён список MENU_ITEMS под новую структуру (7 секций: Панель, Управление, Работа, Чат-бот Max, Контент, Внешние системы, Настройки) - П.8: Коэффициенты и Тест формул объединены в одну страницу **Формулы** (/service/formulas) с 2 табами - П.8: Чат-бот Max в Настройках — 6 табов (Общие, Шаблоны ответов, Функции, Категории, База знаний, Тестовый прогон) - П.8: Расширены дефолтные права engineer (charts, bot_analytics, bot_conversations) - Переключатель ролей в navbar: owner может переключиться на engineer/technician, engineer — на technician - Тема: текст (Светлая/Тёмная/Авто) перенесён во всплывающую подсказку (title) на кнопке - Тесты (pytest): проверка регистрации всех роутов smoke-тест для сервера ### Исправления и улучшения - Все старые отдельные страницы (formula_test, coefficients, bot_responses, bot_features, bot_categories, bot_kb, bot_test_runner) продолжают работать через прямые роуты - Исправлен баг: BotTicket FK → bot_users (NoReferencedTableError при старте) ## 1.5.2 (21.05.2026) ### Новые функции - П.8: Настройка портала (/service/portal-settings) — Yandex GPT ключ, Яндекс.Диск OAuth - П.8: Настройка Ролей (/service/role-settings) — owner управляет видимостью пунктов меню для engineer/technician - Ролевые права меню: sidebar скрывает пункты на основе role_menu_permissions ### Исправления и улучшения - max_bot: Исправлен NameError в api_bot_features (добавлен импорт BotFeature) - py_service: Добавлен PermissionsMiddleware для загрузки прав меню в каждый шаблон - SQL: Дефолтные права engineer (10 пунктов) и technician (4 пункта) создаются при пустой таблице ## 1.5.1 (21.05.2026) ### Новые функции - П.8: Рассылка с предпросмотром — выбор получателей (чекбоксы), живой предпросмотр, черновик, история рассылок - П.8: Фильтр согласия ФЗ-152 — рассылка только с `consent_given = true` ### Исправления и улучшения - П.8: Аналитика — "Всего пользователей" теперь показывает только согласных, карточка согласий удалена - П.8: Пользователи — сортировка по всем колонкам (клик на заголовок), пагинация, фильтр по согласию - П.8: Пользователи — строки без согласия выделены красным фоном - max_bot: Broadcast API — preview (draft) + send режимы, recipients endpoint, history endpoint - py_service: Прокси-роуты для recipients/history ## 1.5.0 (21.05.2026) ### Новые функции - Интеграция бота Max "София": управление ботом в сервисном портале - 11 новых страниц: настройки, шаблоны, функции, категории, база знаний, диалоги, пользователи, тестовый прогон, аналитика - SQL миграция v1.5.0: bot_tickets, bot_features.sla_ticket ## 1.4.0 (20.05.2026) ## 1.3.0 (20.05.2026) ### Новые функции - П.49: Подключены favicon (ico, png, webmanifest, apple-touch-icon) + лого на странице логина - П.44: Сохранение scroll сайдбара при навигации (sessionStorage) - П.47: Липкий тулбар редактора документов (верх/низ) - П.33: Кастомный модал подтверждения выхода из опросника (вместо системного confirm) - П.33: Добавлен POST /service/questionnaire/save/{step} — сохранение черновика ### Исправления и улучшения - П.35: Версия ПО отображается на всех страницах, не только дашборде - П.40: Звёзды избранного выровнены в одну строку с пунктами меню - П.42: discover_docs() вызывается при каждом открытии документа — новые .md сразу видны - П.43: POST /admin/permissions использует discover_docs вместо load_permissions - П.45: Футер сайдбара: имя → выход → версия - П.46: Иконки EasyMDE видны на тёмной теме ([data-theme="dark"] overrides) - П.48: Создание "Пример из практики" — добавлен action="/service/cases/create" - П.29: SLA — action="/service/sla/create" у формы + safe type conversions в edit - П.31: Идеи — защита от None description ((idea.description or '')[:100]) - П.49: Назначения — a.object_name → a.object.name, a.user_name → a.user.full_name - П.26: Заголовок "Назначения" → "Назначение сотрудников" - П.24: Объекты — список клиентов в select (c.id/c.name вместо c[0]/c[1]) - П.24: Объекты — editObject защита от None customer_id + safe int() в backend - П.23: Валидация клиентов: * у обязательных полей, KPP (9 цифр), маска телефона "8 (___) ___-__-__" - П.36: Portainer URL https://81.177.141.34:9443 ## 1.2.1 (20.05.2026) ### Новые функции - П.38: Стилизация логина — "One" цветом #00ADEF - П.45: Футер сайдбара: имя → выход → версия - П.44: Сохранение scroll сайдбара при навигации (sessionStorage) - П.47: Липкий тулбар редактора документов - П.49: Подключены favicon (ico, png, webmanifest, apple-touch-icon) ### Исправления и улучшения - П.35: Версия ПО отображается на всех страницах, не только дашборде - П.40: Звёзды избранного выровнены в одну строку с пунктами меню - П.42: discover_docs() вызывается при каждом открытии документа — новые .md сразу видны - П.43: Управление документами — POST использует discover_docs вместо load_permissions - П.46: Иконки EasyMDE видны на тёмной теме - П.48: Создание "Пример из практики" — добавлен action="/service/cases/create" - П.29: SLA — добавлен action="/service/sla/create" у формы, safe type conversions - П.31: Идеи — защита от None description (|default('')) - П.49: Назначения — a.object_name → a.object.name, a.user_name → a.user.full_name - П.26: Заголовок "Назначения" → "Назначение сотрудников" - П.24: Объекты — список клиентов в select (c.id/c.name вместо c[0]/c[1]) - П.36: Portainer URL через https://81.177.141.34:9443 - П.33: Опросник — добавлен POST /service/questionnaire/save/{step}, кастомный модал ## 1.2.0 (20.05.2026) ### Доработки - П.21: Кнопка "Настроить" на дашборде — выбор отображаемых показателей (localStorage) - П.22: Исправлена ошибка Internal Server Error при редактировании пользователя (добавлен action у формы) - П.23: Исправлена ошибка Method Not Allowed при создании клиента; ИНН обязателен (10/12 цифр) - П.24: Тип объекта переведён на русский (select вместо input) - П.25: Исправлена ошибка Method Not Allowed при создании/редактировании объекта - П.26: "Назначения" → "Назначение сотрудников" - П.27: Статус SLA по умолчанию — "Переговоры" (negotiation) - П.28: Уровни SLA отображаются на русском: Базовый/Оптимальный/Максимальный - П.29: Проверена работа создания и редактирования SLA контрактов - П.30: Расширены графики: группировка (день/неделя/месяц), название, сохранение/экспорт PNG - П.31: Исправлена ошибка Internal Server Error при смене статуса идеи - П.32: Быстрое меню заменено на звёздочки (★) — избранное в localStorage - П.33: Кнопка "Выйти" в опроснике с подтверждением сохранения черновика - П.34: Убрана надпись "Главная" под каждым меню - П.35: Версия показывается полностью только на дашборде, в остальных — "v" - П.36: Ссылка Portainer изменена на IP:порт (через PORTAINER_URL) - П.37: Документация: левое меню (page.html), авто-загрузка .md из /py_service/docs ## 1.1.0 (18.05.2026) ### Баги - discover_docs: миграция существующих permissions без technician — добавляется technician: {view: false} + engineer: {edit: false, cancel: false} - favicon: исправлен тип (image/x-icon → image/svg+xml) и расширение (favicon.ico → favicon.svg) ### Доработки - П.15: Визуальная система формул — коэффициенты сгруппированы по formula_ref в аккордеоны - П.15: Информация о формуле (📐) — модалка с текстом формулы и описанием результата - П.15: Песочница формул (/service/coefficients/test) — подстановка параметров и расчёт для 7 формул: risk_score, complexity, object_index, engineer, ecs, shs, ceo_shs - П.15: Иконка 🧪 у каждой группы ведёт в песочницу с предвыбором группы - П.15: В сайдбар добавлена ссылка "Тест формул" (owner) - CSS: добавлены стили аккордеона и панели теста формул ## 1.0.3 (18.05.2026) ### Баги - П.18: Ченджлог не открывался — CHANGELOG.md исключался .dockerignore (*.md убран) - П.20: Ошибка при сохранении пользователя — исправлена логика is_active (без дефолта), phone/email не сбрасываются ### Доработки - П.12: Авто-добавление документов из /py_service/docs через discover_docs() в lifespan - П.13: Владелец редактирует .md файлы через /service/documents/{slug}/edit (EasyMDE) - П.14: Система прав документов: - Владелец видит/создаёт/редактирует/удаляет все документы - Владелец назначает engineer'у просмотр/редактирование через /service/documents/admin/permissions - Engineer видит только назначенные документы - Engineer даёт technician'у просмотр своих документов через /service/documents/tech-access - Technician видит только те документы, что открыл engineer - П.15: Удаление коэффициентов (кнопка ✕); предложен редизайн с группировкой по formula_ref - П.16: Гибкие графики для владельца (/service/charts) — Chart.js: задачи/SHS/KPI/MRR/объекты, типы: bar/line/pie/doughnut - П.17: "Service Portal" увеличен с 10px до 12px - П.19: Роль убрана из футера сайдбара, "Выйти" под ФИО - Удалены дублирующие ручки /service/docs* (старая система), везде /service/documents/ ## 1.0.2 (18.05.2026) ### Доработки - П.3: Логотип AegisOne в sidebare (sidebar-logo-text, 2rem) - П.5: Версия кликабельна — модалка с историей изменений (changelog) - П.6: Текст логотипа увеличен (sidebar-logo-text, 2rem) - П.7: Верхнее меню упрощено — только логотип и кнопка темы - П.8: Быстрое меню — настройка своих и техниковских ссылок (owner/engineer) - П.9: Система идей — CRUD + статусы (normal/in_progress/completed) - П.11: Ссылки на Portainer и Gitea в левом меню (owner) ## 1.0.1 (18.05.2026) ## 1.0.0 ### Новые функции - Первый запуск сервисного портала на FastAPI - Базовые страницы: логин, дашборд, документация - Авторизация (owner/engineer/technician) - Дашборд с основной статистикой (объекты, задачи, инциденты, SLA, SHS)