Commit Graph

625 Commits

Author SHA1 Message Date
Александр Зимин 75474bca45 Merge branch 'ci/auto-pr-prod-image-bump' into 'main'
ci(release): auto-PR в ordinis-infra с image tag после release

See merge request 2-6/2-6-4/terravault/ordinis!154
2026-05-12 21:33:04 +00:00
Zimin A.N. 0c0478914c ci: re-trigger pipeline (previous commit had skip-ci marker literal in description) 2026-05-13 00:26:18 +03:00
Zimin A.N. b7e1f12bc4 fix(release): remove [skip ci] из semantic-release commit message
[skip ci] в commit message skip'ает GitLab pipeline для ВСЕХ ref'ов на
этом SHA — включая tag pipeline. Эффект: semantic-release создаёт v*.*.*
tag, но tag pipeline скипается → images с tag'ом v*-*-*-<sha> не
собираются → propose-prod-image-bump (этот MR) не имеет images для bump.

Confirmed на v2.16.0 (commit bf07d6b): tag pipeline 6814 = skipped,
registry без 'v2-16-0-*' tags → невозможно deploy.

Loop prevention для chore(release) commit'ов работает через releaseRules
('chore': release: false) — semantic-release на этом commit'е detect'ит
'no releasable commits since previous tag' → exit 0 → no new tag → no loop.

Cost: docker-admin-ui ребилдит на каждом chore(release) commit (package.json
+ CHANGELOG.md match frontend-changes path-filter) — ~2 мин wasted CI time,
приемлемо vs broken release flow.
2026-05-13 00:25:48 +03:00
Zimin A.N. cac6b6a981 fix(ci): use printf для commit/MR description avoiding YAML literal block break
Pipeline 6815 failed instantly с 'could not find expected : at line 625'
— multi-line shell strings внутри script: - | литерального блока YAML
ломали parser потому что continuation lines не были indented к уровню
блока (lines 625, 627-629 в column 0 — YAML видел их как new key).

Fix: собрать message строкой через printf '%b' с явными \n. Однострочные
shell variables — YAML парсит без проблем независимо от содержимого
внутри quotes.
2026-05-13 00:24:33 +03:00
Zimin A.N. 02591466cc ci(release): auto-PR в ordinis-infra с новым image tag после release
Раньше release tag создавал v2.X.Y, build images, но values-prod.yaml в
ordinis-infra оставался указывать на старый tag (либо unset → fall to
:latest). Это создавало divergence:

  - Auto deploy через trigger-deploy-prod использовал runtime
    UPSTREAM_IMAGE_TAG = новый tag → правильный deploy.
  - Manual deploy через infra repo (helm upgrade -f values-prod.yaml)
    использовал static values → старый tag → split-brain ноды через
    :latest cache (см. ordinis-infra MR !10 fix).

Новый job 'propose-prod-image-bump':
- Triggers только на tag pipeline (semver v*.*.*).
- Needs все docker-* jobs (images должны быть в registry).
- Clones ordinis-infra, патчит image.tag в values-prod.yaml через awk
  с scope-tracking (только image: block, не writer/readApi/etc).
- Commit + push branch + создаёт MR через GitLab API.
- Reviewer approve → merge → infra pipeline auto-катит deploy-prod.

Git становится единственным источником истины: HEAD ordinis-infra main
всегда отражает что задеплоено на prod.

Setup: новая CI variable INFRA_PROJECT_TOKEN (group-level access token
scope: write_repository, api, role: Developer). Без неё job exits early
с подсказкой — pipeline не блокируется (allow_failure: true).
2026-05-13 00:20:50 +03:00
semantic-release-bot bf07d6b3e3 chore(release): v2.16.0 [skip ci]
## [2.16.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.15.0...v2.16.0) (2026-05-12)

###  Features

* **updateBanner:** «Что нового» button открывает modal с changelog ([e46598c](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/e46598c47d01479fae4d6d84a704792ba06a30b4))

### 🐛 Fixes

* **restapi:** NoResource/NoHandler → 404, не 500 ([f2adc37](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/f2adc37e2ef6d22a09759dd6943b0b586d66edce))
2026-05-12 21:18:11 +00:00
Александр Зимин c59724125e Merge branch 'fix/no-resource-found-returns-404' into 'main'
fix(restapi): NoResource/NoHandler exceptions → 404, не 500

See merge request 2-6/2-6-4/terravault/ordinis!153
2026-05-12 21:10:20 +00:00
Zimin A.N. 000322d6ee test(restapi): drop /swagger-ui from 404 test (env-dependent)
Failed pipeline 6805: /swagger-ui/index.html в test profile вернул 200
(springdoc enabled по умолчанию через ORDINIS_SWAGGER_UI_ENABLED default
true). Это валидно — Swagger render'ит реальную UI page.

Замена: проверяем generic non-API typo path который точно не имеет
controller'а и не SPA-route'д. Покрывает тот же NoResourceFoundException
branch handler'а независимо от springdoc env config.
2026-05-13 00:07:17 +03:00
Александр Зимин 3021bd7e3c Merge branch 'feat/whats-new-modal-from-banner' into 'main'
feat(updateBanner): «Что нового» button открывает modal с changelog

See merge request 2-6/2-6-4/terravault/ordinis!152
2026-05-12 21:04:56 +00:00
Zimin A.N. f2adc37e2e fix(restapi): NoResource/NoHandler → 404, не 500
GlobalExceptionHandler catch-all Exception → 500 ловил NoResourceFoundException
и NoHandlerFoundException. Симптомы на prod:

- /swagger-ui/index.html при disabled springdoc возвращал 500 (UI всё равно
  не рендерился, но spring логировал 'Unhandled exception' на каждый запрос —
  спамил alerting и затруднял поиск настоящих ошибок).
- GET /api/v1/typo от integrator'ов давал 500 вместо 404, осложняло
  debugging без traceId-correlation.
- Любой stale frontend bundle с переименованным endpoint мог триггерить
  false-positive incident alerts.

Fix: explicit @ExceptionHandler для обоих exception типов → 404 not_found.
Логирование DEBUG (не WARN/ERROR) — это ожидаемый 404, не аномалия.

Test: SmokeE2ETest.unknownPath_returns404WithNotFoundCode покрывает оба пути
(/api/v1/* и /swagger-ui/*) → 404 + body.code='not_found'.
2026-05-13 00:00:36 +03:00
Zimin A.N. e46598c47d feat(updateBanner): «Что нового» button открывает modal с changelog
Per user feedback: «по кнопке что нового должно открываться модальное
окно с изменениями».

UpdateBanner кнопка «Что нового» (т9n key `updateBanner.docs`) ранее
открывала `/docs/` в новой вкладке — generic documentation page, не
contextual для «что именно в этом обновлении».

Теперь — открывает `WhatsNewModal` (тот же modal что показывает 🎁
button в TopBar) — public changelog с release notes сразу.

## Refactor

- **`WhatsNewModal.tsx` (NEW)** — extracted controlled-mode modal с
  release notes. Props: `open`, `onClose`. Internal logic читает
  changelog, tracks lastSeen в localStorage, на open mark'ает latest
  как seen.
- **`WhatsNewButton.tsx`** — refactored: trigger button + use
  `WhatsNewModal`. Поведение unchanged (🎁 icon с unread badge → click → modal).
- **`UpdateBanner.tsx`** — replaced `window.open(DOCS_URL)` на
  `setWhatsNewOpen(true)` + render `<WhatsNewModal>`. DOCS_URL constant
  removed (больше не используется).

## UX intent

Когда update detected:
1. User видит orange banner «Доступна новая версия v2.16.0»
2. Hover «Что нового» button → opens modal
3. User читает release notes (что добавлено, исправлено) ДО reload
4. Click «Обновить» → reload

Раньше «Что нового» вёл к generic docs page — user не знал ЧТО
изменилось, только что update есть. Modal даёт structured answer.

## Test plan

- [x] `pnpm tsc --noEmit` clean
- [x] `pnpm build` clean
- [x] `pnpm vitest run useChangelog.test` — 11/11 pass (parser logic
      unchanged)
- [ ] Manual: симулировать update banner (mock useAppVersion
      `updateAvailable=true`), click «Что нового» → modal opens
- [ ] Manual: 🎁 button в TopBar также opens same modal
- [ ] Manual: close modal → red dot disappears на 🎁 button
      (localStorage updated)
2026-05-12 23:28:12 +03:00
semantic-release-bot 6c48cfac46 chore(release): v2.15.0 [skip ci]
## [2.15.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.14.0...v2.15.0) (2026-05-12)

###  Features

* **topbar:** «Что нового» button + 2026-05-12 state.md update ([a34c6d4](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/a34c6d4c8248040f90fc24597317d748195468b5))

### 🐛 Fixes

* **admin-ui:** changelog build context — copy script + CI before_script ([5103ed6](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/5103ed6d9cd8e5ba742f66ea72fa8f35e1dcf60a))
* **docs,security:** Swagger UI — staging для exploration, prod env-flagged ([e2080d8](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/e2080d899153f78eb35cf7fab7ea59d52fdc151d))
* **docs:** copy operator/reviewer/changelog dirs to docker image ([82e481a](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/82e481a418f278a566bf6cc3ab7345c99e363902))

### 📝 Docs

* **design:** AI schema assist + dictionary marketplace v1 proposals ([cef5f49](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/cef5f49bf70d5abf857e4d40bfb5550a751fe2ec))
* **design:** ai-schema-assist v2 — /office-hours, Approach C hybrid ([a3eb5f0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/a3eb5f0c86196acf3fbbad0e5ac74eb058eaa7e3))
* **design:** marketplace v2 — bundle hygiene, hard cap 2-3d ([89c6e04](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/89c6e049657db808ff7c7fa70c58c3311360673a))
* **design:** Redis FK projection v2 — eng review applied ([d9fc49f](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/d9fc49fe72cfcf4cbb7b7568aba560a5a3e1dc84))
2026-05-12 18:54:51 +00:00
Александр Зимин 013749e0e8 Merge branch 'fix/changelog-build-context' into 'main'
fix(admin-ui): changelog build context — copy script + CI before_script

See merge request 2-6/2-6-4/terravault/ordinis!151
2026-05-12 18:48:04 +00:00
Александр Зимин 5103ed6d9c fix(admin-ui): changelog build context — copy script + CI before_script 2026-05-12 18:48:04 +00:00
Александр Зимин 9cc079ba68 Merge branch 'fix/docs-swagger-staging-not-prod' into 'main'
fix(docs,security): Swagger UI — staging для exploration, prod env-flagged

See merge request 2-6/2-6-4/terravault/ordinis!150
2026-05-12 17:43:12 +00:00
Александр Зимин e2080d8991 fix(docs,security): Swagger UI — staging для exploration, prod env-flagged 2026-05-12 17:43:12 +00:00
Александр Зимин ba7b36326d Merge branch 'fix/docs-dockerfile-copy-new-dirs' into 'main'
fix(docs): copy operator/reviewer/changelog dirs to docker image

See merge request 2-6/2-6-4/terravault/ordinis!149
2026-05-12 17:37:08 +00:00
Александр Зимин 82e481a418 fix(docs): copy operator/reviewer/changelog dirs to docker image 2026-05-12 17:37:08 +00:00
Александр Зимин 1a3d41fcf6 Merge branch 'feat/whats-new-button' into 'main'
feat(topbar): «Что нового» button + 2026-05-12 state.md update

See merge request 2-6/2-6-4/terravault/ordinis!148
2026-05-12 17:05:24 +00:00
Александр Зимин a34c6d4c82 feat(topbar): «Что нового» button + 2026-05-12 state.md update 2026-05-12 17:05:24 +00:00
Александр Зимин 58dd871808 Merge branch 'docs/marketplace-v2-bundle-hygiene' into 'main'
docs(design): marketplace v2 — bundle hygiene, hard cap 2-3d

See merge request 2-6/2-6-4/terravault/ordinis!147
2026-05-12 17:03:54 +00:00
Александр Зимин 89c6e04965 docs(design): marketplace v2 — bundle hygiene, hard cap 2-3d 2026-05-12 17:03:54 +00:00
Александр Зимин d1c6043117 Merge branch 'docs/ai-schema-assist-v2' into 'main'
docs(design): ai-schema-assist v2 — /office-hours, Approach C hybrid

See merge request 2-6/2-6-4/terravault/ordinis!146
2026-05-12 17:03:52 +00:00
Александр Зимин a3eb5f0c86 docs(design): ai-schema-assist v2 — /office-hours, Approach C hybrid 2026-05-12 17:03:52 +00:00
Александр Зимин d04e24c314 Merge branch 'docs/ai-marketplace-design' into 'main'
docs(design): AI schema assist + dictionary marketplace v1 proposals

See merge request 2-6/2-6-4/terravault/ordinis!145
2026-05-12 15:10:22 +00:00
Александр Зимин cef5f49bf7 docs(design): AI schema assist + dictionary marketplace v1 proposals 2026-05-12 15:10:22 +00:00
Александр Зимин 4aa5fd97d1 Merge branch 'docs/redis-fk-projection-design-v2' into 'main'
docs(design): Redis FK projection v2 — eng review applied

See merge request 2-6/2-6-4/terravault/ordinis!144
2026-05-12 14:44:55 +00:00
Александр Зимин d9fc49fe72 docs(design): Redis FK projection v2 — eng review applied 2026-05-12 14:44:55 +00:00
semantic-release-bot 08c9262727 chore(release): v2.14.0 [skip ci]
## [2.14.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.13.0...v2.14.0) (2026-05-12)

###  Features

* **webhook:** time-series histogram stats endpoint + frontend chart ([5479142](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/5479142093e428d081fbb548685f7559ddb1fb08))
2026-05-12 14:39:08 +00:00
Александр Зимин 49734211c1 Merge branch 'feat/webhook-stats-histogram' into 'main'
feat(webhook): time-series histogram stats endpoint + frontend chart

See merge request 2-6/2-6-4/terravault/ordinis!143
2026-05-12 14:30:22 +00:00
Александр Зимин 5479142093 feat(webhook): time-series histogram stats endpoint + frontend chart 2026-05-12 14:30:22 +00:00
semantic-release-bot 91f4310a77 chore(release): v2.13.0 [skip ci]
## [2.13.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.12.0...v2.13.0) (2026-05-12)

###  Features

* **ui:** searchable MultiSelect (cmdk) + DateRangePicker (react-day-picker) ([21d9561](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/21d95613fc26e298684c1f225896f96fd3bea750))
2026-05-12 14:01:58 +00:00
Александр Зимин 09c248de4f Merge branch 'feat/searchable-multiselect-and-date-range' into 'main'
feat(ui): searchable MultiSelect (cmdk) + DateRangePicker (react-day-picker)

See merge request 2-6/2-6-4/terravault/ordinis!142
2026-05-12 13:55:35 +00:00
Александр Зимин 21d95613fc feat(ui): searchable MultiSelect (cmdk) + DateRangePicker (react-day-picker) 2026-05-12 13:55:35 +00:00
semantic-release-bot 680866bcee chore(release): v2.12.0 [skip ci]
## [2.12.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.11.0...v2.12.0) (2026-05-12)

###  Features

* **drawer:** section chip strip scroll-spy via IntersectionObserver ([da04b86](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/da04b862ab5642b33913ae83e6e6429b7ebcbc22))
2026-05-12 13:35:45 +00:00
Александр Зимин 79a56c4aa8 Merge branch 'feat/sections-chip-strip-scroll-spy' into 'main'
feat(drawer): section chip strip scroll-spy via IntersectionObserver

See merge request 2-6/2-6-4/terravault/ordinis!141
2026-05-12 13:29:53 +00:00
Александр Зимин da04b862ab feat(drawer): section chip strip scroll-spy via IntersectionObserver 2026-05-12 13:29:52 +00:00
semantic-release-bot 9073229c0e chore(release): v2.11.0 [skip ci]
## [2.11.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.10.0...v2.11.0) (2026-05-12)

###  Features

* **timetravel:** Records + Schema tabs wired with real data ([775b834](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/775b8345e346747029b2bd2f59488df595652a39))
2026-05-12 13:06:12 +00:00
Александр Зимин 748d0da4dd Merge branch 'feat/timetravel-records-schema-tabs' into 'main'
feat(timetravel): Records + Schema tabs wired with real data

See merge request 2-6/2-6-4/terravault/ordinis!140
2026-05-12 13:00:03 +00:00
Александр Зимин 775b8345e3 feat(timetravel): Records + Schema tabs wired with real data 2026-05-12 13:00:03 +00:00
semantic-release-bot 8878b3f0b6 chore(release): v2.10.0 [skip ci]
## [2.10.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.9.0...v2.10.0) (2026-05-12)

###  Features

* **timetravel:** «Что изменилось» tab — закрывает «backend pending» placeholder ([3dbad1e](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/3dbad1e16ce63cdd1a26e12bcedfcf67b54891cd))

### 🐛 Fixes

* **ux:** friendly error UI вместо raw AxiosError ([3984d99](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/3984d99004ce4a1e7de09cfc0a1d3b6de45f5bad))
2026-05-12 12:51:35 +00:00
Александр Зимин c412424586 Merge branch 'feat/timetravel-changes-tab-wireup' into 'main'
feat(timetravel): «Что изменилось» tab — закрывает «backend pending» placeholder

See merge request 2-6/2-6-4/terravault/ordinis!139
2026-05-12 12:45:55 +00:00
Александр Зимин 3dbad1e16c feat(timetravel): «Что изменилось» tab — закрывает «backend pending» placeholder 2026-05-12 12:45:55 +00:00
Александр Зимин 735cc955fc Merge branch 'fix/friendly-error-ui-5xx' into 'main'
fix(ux): friendly error UI вместо raw AxiosError

See merge request 2-6/2-6-4/terravault/ordinis!138
2026-05-12 12:41:48 +00:00
Александр Зимин 3984d99004 fix(ux): friendly error UI вместо raw AxiosError 2026-05-12 12:41:48 +00:00
semantic-release-bot db0986d235 chore(release): v2.9.0 [skip ci]
## [2.9.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.8.0...v2.9.0) (2026-05-12)

###  Features

* **webhooks:** stats cards dashboard на subscription detail ([d864a85](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/d864a8561a3f34440d2ef2e0413037bd40c1c73c))
2026-05-12 12:31:16 +00:00
Александр Зимин aa91057f8f Merge branch 'feat/webhook-delivery-dashboard' into 'main'
feat(webhooks): stats cards dashboard на subscription detail

See merge request 2-6/2-6-4/terravault/ordinis!137
2026-05-12 12:25:15 +00:00
Александр Зимин d864a8561a feat(webhooks): stats cards dashboard на subscription detail 2026-05-12 12:25:15 +00:00
Александр Зимин 59a5c65606 Merge branch 'chore/semantic-release-changelog-cleanup' into 'main'
chore(release): remove bare 'BREAKING' noteKeyword + lesson doc

See merge request 2-6/2-6-4/terravault/ordinis!136
2026-05-12 12:18:46 +00:00
Александр Зимин 56e3e3d1be chore(release): remove bare 'BREAKING' noteKeyword + lesson doc 2026-05-12 12:18:46 +00:00