Files
mdm-ordinis/docs/changelog.md
T
2026-05-17 09:15:07 +00:00

26 KiB
Raw Blame History

Что нового в Ordinis

Список значимых обновлений продукта на понятном языке. Технических подробностей нет — для них есть внутренний CHANGELOG с привязкой к коммитам.

Обновления приходят на твой сервер автоматически при следующем deploy.

2.36.0 (2026-05-17)

Новые возможности

  • Тихие часы — на странице «Уведомления» (/me/notifications/preferences) можно включить окно, например 22:00–08:00 МСК, когда email и express-сообщения не отправляются. Внутренние уведомления в шапке (bell badge) остаются доступны. Часовой пояс выбирается из 12 российских зон + UTC. Окна через полночь поддерживаются.

2.35.0 (2026-05-17)

Новые возможности

  • Bundle hygiene v2 (для интеграторов справочников) — каталог справочников теперь поставляется с manifest.yaml (явный список + метаданные) и ed25519-подписью. Защита от подмены файлов и явный контракт версии для CUOD-handoff. Документация: docs/integration/bundle-format-spec.md и docs/user-guide/bundle-authoring.md.

2.34.0 2.34.1 (2026-05-16)

Новые возможности

  • AI: добавить поле — в редакторе схемы справочника появилась кнопка «AI: добавить поле». Опиши идею простыми словами («email контакт», «дата запуска», «частотный диапазон в МГц») — LLM сгенерирует валидное JSON Schema поле. Можно принять, отредактировать или попросить другой вариант. Работает на shared Vortex (vortex.nstart.cloud, модель qwen2.5:7b). Включается через helm ai.enabled. Rate-limit 30 запросов/мин на IP, circuit breaker на падения.

🐛 Исправления

  • AI endpoint возвращал 500 после деплоя — nginx роутил /api/v1/ai/* через generic fall-through на read-api. Добавлено явное правило к writer (тот же паттерн что для /drafts, /me, /admin).

2.33.0 (2026-05-16)

Новые возможности

  • Шаблоны схем при создании справочника — в окне «Создать справочник», вкладка Schema, появилась grid из 6 готовых шаблонов: Чистая, Космический аппарат, Наземная станция, Антенна, Частотный диапазон, Оператор. Один клик — форма заполнена типовыми полями ДЗЗ-домена. Экономит время на повторяющихся типах объектов.

2.32.0 (2026-05-16)

Новые возможности

  • Метка «Запланировано» в таблице записей — если у записи есть будущая версия (с датой validFrom в будущем), в строке таблицы появляется badge. Видно сразу, не открывая запись.

2.31.0 2.31.5 (2026-05-15 2026-05-16)

Новые возможности

  • Phase B-2 уведомления — матрица 4×3 — на странице «Уведомления» появилась таблица: 4 события (отправлено на ревью / одобрено / отклонено / отозвано) × 3 канала (email / express / telegram). Можно отключить email при approve, оставить email при reject — гранулярно. Express и Telegram пока с пометкой «Скоро» (preferences хранятся для opt-in заранее).
  • TimeTravel — окно в будущее — слайдер истории дотягивается до реальной максимальной даты словаря, включая запланированные версии. Раньше был зажат в «сегодня». К подписям границ добавлен год.
  • Banner и индикатор запланированных записей — над таблицей записей показывается количество future-версий + ближайшая дата ввода. Понятно, что прилетит в следующий квартал.

🐛 Исправления

  • Smart Search возвращал 0 результатов — фильтр scope передавался строчными буквами ('public'), а в БД хранится 'PUBLIC' (CHECK constraint UPPERCASE из миграций 0008/0009). Bug жил 5 месяцев. Теперь поиск работает для всех ролей.
  • Версия в шапке показывала «none»/version возвращал тег без значения, потому что build на main без git-тега. Теперь подхватывает тег из helm chart (например v2.31.2), парсит SHA-суффикс и форматирует.
  • Журнал аудита — 13 типов action — раньше многие типы (DRAFT_PUBLISHED, REVIEWER_ASSIGNED и др.) показывались как enum-имя. Теперь все 13 — русские названия.
  • «Действует с» в редакторе — поле было пустым в create-режиме, выглядело как баг. Теперь предзаполнено текущим временем (now()).
  • QA P3/P4 пакет — 7 косметических багов (i18n, layouts, labels).

♻️ Под капотом

  • CI — Alpine mirror стабилизирован — после drift между Nexus v3.23 APKINDEX и реальными файлами release-jobs ломались на каждом auto-bump. Pinned node:22-alpine3.20 + apk update перед add + sed swap на repo.nstart.cloud. Auto-bump теперь работает без ручного вмешательства. Runbook DevOps: docs-internal/ops/nexus-alpine-mirror.md.

2.30.0 2.30.1 (2026-05-15)

Новые возможности

  • Phase B-2 backend — per-event-type granular preferences API + миграция данных (подготовка к UI-матрице из v2.31).

🐛 Исправления

  • Sidebar для PUBLIC users — outbox / audit / webhooks скрыты (раньше показывали ссылки, при клике — 403).
  • TimeTravel slider — extend до now + 30 дней или future marks (улучшено окончательно в v2.31).

2.29.0 2.29.1 (2026-05-15)

Новые возможности

  • Webhook text-wrap для chat-bot receivers — Mattermost @WebhookBot теперь корректно получает payload (receiver требует {"text":"..."} иначе «неизвестный webhook»). Включается в admin-ui на странице подписки (host allowlist + textWrapHosts).

🐛 Исправления

  • Bell badge glyph — счётчик уведомлений в шапке обрезался по верху. Теперь полностью виден.

2.28.0 2.28.2 (2026-05-15)

Новые возможности

  • Phase B уведомления — backend + UI — per-user channel preferences (email / express / telegram), страница /me/notifications/preferences.

🐛 Исправления

  • Email уведомления не уходили вообще — race между OutboxPoller и dispatcher. Окончательное решение: drop @Modifying из tryClaim + EmailChannel как @Bean, не @Component. Critical fix.
  • HTTP status codeResponseStatusException теперь возвращает корректный код (раньше всё было 500).
  • User-Agent webhook — установлен ordinis-alerts (match Webhook Bot subscription).
  • Actuator — Redis health indicator отключён в writer (не нужен, шумел в /actuator/health).

2.27.0 2.27.13 (2026-05-14 2026-05-15)

Новые возможности

  • Полный цикл уведомлений по schema-draft — после approve/reject автор получает toast (немедленно) + email (через outbox) + bell badge в шапке. Закрывает TODO 7 design-doc'а.

🐛 Исправления

  • Согласования — Mine tab для анонимов — раньше показывал raw AxiosError, теперь dedicated empty state с sign-in CTA.
  • Sidebar — 403 spam в консоли — outbox/webhook badge polling гейтятся на INTERNAL scope. Анонимам не дёргаем.
  • /drafts/active теперь 200 + null для PUBLIC scope (вместо 404 → нет шума в консоли).
  • QueryErrorState везде — все routes теперь используют friendly error UI вместо raw AxiosError dump.
  • 44×44 px touch targets — кнопки достижимы на mobile.
  • Em-dash fallback в UserCell — пустые actor'ы показывают «—» вместо raw UUID.
  • Routing /api/v1/me/* — закрыт 500 на /me/notifications (тот же паттерн что для /ai, /drafts).
  • Defensive /me/notifications — wrap DB ops в try/catch с panic-level логированием.

2.26.0 2.26.1 (2026-05-14)

Новые возможности

  • «Мои» tab в Согласованиях — maker self-tracking со status-фильтром. Видишь свои поданные draft'ы и их текущий статус в одном месте.

2.25.0 2.25.1 (2026-05-14)

Новые возможности

  • Approval UX — inline draft CTA + reviewer diff summary — ревьюер видит сжатый diff в drawer'е, автор получает inline-кнопку «Открыть draft» прямо из таблицы записей.

2.24.0 (2026-05-14)

Новые возможности

  • Audit + outbox для record-draft lifecycle — каждое изменение draft пишется в журнал аудита + outbox event для подписчиков webhook.

🐛 Исправления

  • Approval — закрыты 2 bypass paths (security audit findings).
  • Non-breaking schema changes — теперь применяются inline без полного draft workflow.
  • DictionaryEditorDialog — Save блокируется когда нужен draft workflow (раньше silently сохранял).

2.23.0 2.23.1 (2026-05-14)

Новые возможности

  • UUID → имя пользователя через Keycloak — Phase 1 (persistent DB cache) + Phase 2 (on-demand Keycloak lookup). Везде где раньше торчал UUID actor'а (changelog, events, history, audit), теперь видно имя через UserCell.

2.22.0 2.22.1 (2026-05-14)

Новые возможности

  • Per-dictionary approvalMinRole (Phase 2) — у каждого справочника свой минимальный role для approve. Reviewer с меньшей ролью видит draft, но не может approve.
  • Закрытие записей через draftclose / bulk-close идут через workflow, когда у справочника approvalRequired=true.
  • Scope-gated audit / outbox endpoints — INTERNAL/RESTRICTED scopes гейтят доступ к админ-эндпоинтам.
  • /admin/users/{sub}/display — endpoint для UserCell.

2.21.0 (2026-05-13)

Новые возможности

  • Auto-route create/edit через draft — когда у справочника approvalRequired=true, любое создание/редактирование записи автоматически создаёт draft в workflow.

2.20.0 (2026-05-13)

Новые возможности

  • Schema drafts в «Мои черновики» — теперь там видны не только record drafts, но и schema drafts.

2.19.0 2.19.2 (2026-05-13)

Новые возможности

  • Sidebar /reviews — role-based visibility — пункт меню «Согласования» показывается только пользователям с reviewer-ролью.

🐛 Исправления

  • Чтение ролей из access_token, не id_token — sidebar /reviews был скрыт у reviewer'ов из-за неправильного источника roles claim.
  • Webhook scope_filter — Hibernate ordinal mapping bug + UI toggle для активации подписки.

2.18.0 (2026-05-13)

Новые возможности

  • WorkflowRoles — configurable claim path + ordinis:admin super-role — admin теперь bypass'ит все role-checks (для troubleshooting + emergency edits).

2.17.0 (2026-05-13)

Новые возможности

  • Phase 1d — backend role enforcement для workflow — backend сам проверяет роль на approve/reject (раньше доверяли UI). Closing security gap.

2.16.0 2.16.4 (2026-05-12 2026-05-13)

Новые возможности

  • «Что нового» button в шапке — кнопка открывает modal с этим самым changelog'ом.

🐛 Исправления

  • 404 вместо 500 — несуществующий endpoint теперь возвращает 404 (NoResource / NoHandler exceptions properly mapped).
  • Кнопки в schema draft drawer — RU labels + flow row layout.
  • Sidebar badges — Outbox + Webhooks теперь с реальными счётчиками; audit scope label уточнён.
  • Schema draft — автор display + gate «Отозвать» — кнопка только у maker'а draft'а.
  • CI release — убран [skip ci] из semantic-release commit'ов (auto-bump pipeline теперь запускается).

2.15.0 (2026-05-12)

Новые возможности

  • «Что нового» — первая версия + state.md — wiring под changelog story (полноценный modal добавлен в v2.16.0).

🐛 Исправления

  • Swagger UI на staging — доступно всегда для exploration; на prod env-flagged.
  • Docs build context — copy operator/reviewer/changelog директорий в docker image.

2.14.0 (2026-05-12)

Новые возможности

  • График доставки webhook'ов — на странице webhook-подписки теперь видно историю доставок за последние 24 часа или 7 дней. Можно навести курсор на любой столбик и увидеть, сколько было успешных доставок, retry, и сколько ушло в DLQ.

2.13.0 (2026-05-12)

Новые возможности

  • Поиск в фильтре типов событийу webhook event-type фильтра появилось поле поиска. Можно набрать «Record» и увидеть только относящиеся типы событий, вместо ручного скроллинга через все 11.
  • Выбор диапазона дат — в журнале аудита вместо двух отдельных полей «с» и «по» теперь один календарь, в котором можно отметить начало и конец периода. Удобнее и компактнее.

2.12.0 (2026-05-12)

Новые возможности

  • Подсветка активной секции в редакторе записи — когда в редакторе записи прокручиваешь форму, соответствующий «таб» в верхней панели подсвечивается синим. Удобно, чтобы не теряться в длинных формах.

2.11.0 (2026-05-12)

Новые возможности

  • TimeTravel — реальные данные на момент — во вкладках «Записи на момент» и «Структура и поля» в окне TimeTravel теперь видны фактические данные, а не заглушка «backend pending». Можно посмотреть, как выглядел справочник в любую дату из истории.

2.10.0 (2026-05-12)

Новые возможности

  • Что изменилось — вкладка с реальными изменениями — в окне TimeTravel вкладка «Что изменилось» теперь показывает фактический diff между версиями (добавленные поля, изменённые типы, удалённые свойства), а не пустую заглушку.

🐛 Исправления

  • Понятные сообщения об ошибках — вместо технического «AxiosError: Request failed with status code 503» теперь видишь нормальное «Сервер временно недоступен» с кнопкой «Повторить». Это работает для всех ошибок 4xx/5xx и проблем с сетью.

2.9.0 (2026-05-12)

Новые возможности

  • Статистика webhook-подписок — на странице подписки появились карточки со счётчиками: в очереди, retry, доставлено, в DLQ + общий процент успешных доставок. Видно с одного взгляда, насколько здоров твой webhook.

2.8.0 (2026-05-12)

Новые возможности

  • Редактор схемы прямо в окне создания draft'а — больше не нужно открывать отдельную форму. Окно «Создать schema draft» теперь содержит полноценный JSON-редактор (Monaco) с подсветкой синтаксиса и проверкой схемы налету.
  • Согласования — отдельные вкладки — в разделе «Согласования» (/reviews) появились вкладки «Записи» и «Схемы» со счётчиками. Auto-switch на ту вкладку, где есть что согласовать.
  • Редактирование draft'а без пересоздания — если ревьюер запросил изменения, можешь поправить schema draft inline, без удаления и создания нового. Изменения автоматически возвращают draft в статус «На доработке у автора».
  • Фильтр типов webhook-событий — вместо ввода CSV-строкой теперь multi-select с 11 известными типами событий (RecordCreated, SchemaDraftPublished и др.).

2.7.0 (2026-05-12)

Новые возможности

  • Schema workflow Phase 1c — окно создания schema draft, расширение раздела согласований, контроль прав доступа.

2.6.0 (2026-05-12)

Новые возможности

  • Боковая панель schema draft с действиями — drawer показывает текущий статус draft'а и контекстные кнопки: отправить на ревью, approve, request changes, reject, publish, withdraw, edit. Видишь только те действия, которые доступны на текущем шаге.

2.5.0 (2026-05-12)

Новые возможности

  • Вкладка «История версий» — теперь показывает реальный timeline изменений с иконками по типу события и кнопкой «Сравнить» — открывает модальное окно с before/after JSON. Раньше там была заглушка.

2.4.0 (2026-05-12)

Новые возможности

  • Полное сравнение версий схемы — endpoint позволяет получить before/after любой пары версий схемы для конкретной записи (используется кнопкой «Сравнить» в History tab'е).

🐛 Исправления

  • Слайдер TimeTravel — пометки дат больше не наезжают друг на друга при близких версиях.
  • Кнопки в редакторе записи — кнопка «JSON» теперь видна явно (раньше скрывалась как иконка). Если у записи всего одна версия, показывается подсказка вместо disabled кнопок.

2.3.0-2.0.0 (2026-05-12)

Большой релиз-волна: backend endpoints для полного timeline истории, schema workflow API (8 endpoints с maker-checker согласованием), Diff endpoint, тёмная тема. Подробности — в полном CHANGELOG.