f43ce5563a
Refactor каталога с card grid → compact row table. Handoff README line 46 явно говорит 'clicking any dictionary row in the catalog' — наша cards implementation diverged от прототипа. What's new: - DictionaryListTable — single flat table (bundle стал column, не группа) - DictRow — compact tr с scope dot prefix + title + truncated desc - 8 columns per prototype: name / id / bundle / scope / records / → / ← / updated - Responsive column hiding via hideBelow-style breakpoints: - id: hidden <md - bundle: hidden <lg - scope: hidden <sm - records: hidden <md - → ←: hidden <lg - updated: hidden <xl - На mobile <640px показано только name column (с inline scope dot и desc) - Row click → navigate к editor; Enter/Space keyboard accessible (role=link) Removed: - DictCard component (card layout) - FkChip component (FK chips на cards — теперь just counts) - SCOPE_STRIP (vertical 3px strip — заменён на inline scope dot) - groupByBundle usage (bundle стал column, не group section) - MAX_REFBY_CHIPS const Note: outgoing FK count (→) пока показывает '—' — требует schemaJson per-dict fetch (40+ requests). Batch endpoint GET /dictionaries/graph (handoff open question #2) разблокирует это. Текущий incoming refBy через useDictionary- Dependents работает per row. Tests: 116 pass. TS strict clean.
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).