Files
mdm-ordinis/ordinis-admin-ui
Zimin A.N. 1cb0d868c8 feat(admin-ui,cuod): array-FK picker для instrument
Три массива в instrument были comma-separated текстом с подсказкой
«businessKey'и из X». Пользователь не знал что туда вписать — справочника
доступных значений рядом нет.

UI: добавлен ReferenceMultiSelectField — array-аналог ReferenceSelectField.
Триггер — `items["x-references"]` на string-массиве. Под капотом — готовый
MultiSelect (popover + cmdk-поиск). Fallback на comma-separated TextInput
сохраняется когда target dict недоступен (scope-hide / 403 / 404), сервер
всё равно валидирует FK через ReferenceValidator.

Schema:
- spacecraft_codes      → items.x-references: spacecraft.designator
- supported_format_codes → items.x-references: data_format.code
- supported_level_codes  → items.x-references: processing_level.code

instrument schemaVersion 1.0.0 → 1.1.0, bundle 1.3.2 → 1.3.3 —
CuodBundleImporter перепишет schema_json в БД на старте writer'а,
admin-ui подхватит свежую схему через /api/v1/dictionaries/instrument.

Tests: 2 новых кейса в SchemaDrivenForm.test.tsx — happy path (MultiSelect
рендерится, запрос ушёл на правильный dict) + fallback (comma-separated
с подсказкой «список недоступен»). 171/171 passed.
2026-05-25 13:28:03 +03:00
..
2026-05-23 15:51:30 +00:00
2026-05-23 15:51:30 +00:00

Ordinis Admin UI

React 19 + Vite 7 + TanStack Router + TanStack Query + Tailwind v4 + i18next.

Локально

cd ordinis-admin-ui
pnpm install
# .env.local: VITE_API_PROXY=http://localhost:8081  (port-forward read-api)
pnpm dev

Контракт API

  • GET /api/v1/dictionaries (read-api) — список справочников
  • GET /api/v1/{dictionaryName}/records (read-api) — записи с локализацией
  • POST /api/v1/dictionaries (writer) — создание справочника (TODO в UI)
  • POST /api/v1/dictionaries/{name}/records (writer) — создание записи (TODO в UI)

Сборка / Docker

docker build -t repo.nstart.cloud/terravault/ordinis-admin-ui:dev .
docker run --rm -p 8088:80 repo.nstart.cloud/terravault/ordinis-admin-ui:dev
# → http://localhost:8088

В кластере nginx проксирует /api/v1/* в ordinis-read-api (GET) и ordinis-app (POST/PUT/PATCH/DELETE).