From 93c2708fb00af1c3d35b883f6e19b741a501f30a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B8=D0=BC=D0=B8=D0=BD?= Date: Tue, 12 May 2026 00:31:51 +0000 Subject: [PATCH] =?UTF-8?q?fix(ui):=20internal=20scope=20filter=20+=20dark?= =?UTF-8?q?-theme=20cards=20=D0=B2=20=D0=A1=D0=B2=D1=8F=D0=B7=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ordinis-admin-ui/src/api/queries.ts | 16 ++++++++++++++-- .../lineage/DictionaryDependentsPanel.tsx | 2 +- .../src/components/lineage/DictionaryHubView.tsx | 4 ++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ordinis-admin-ui/src/api/queries.ts b/ordinis-admin-ui/src/api/queries.ts index 40cab57..1c29d69 100644 --- a/ordinis-admin-ui/src/api/queries.ts +++ b/ordinis-admin-ui/src/api/queries.ts @@ -22,7 +22,14 @@ import { export const dictionariesQuery = queryOptions({ queryKey: ['dictionaries'] as const, queryFn: async (): Promise => { - const { data } = await apiClient.get('/dictionaries') + // Backend по default возвращает только PUBLIC scope (~user feedback: + // «куда опять internal словари делись»). Передаём весь triplet — + // server-side всё равно отфильтрует по реальным scope permissions + // юзера, и invisible scopes просто не вернутся. Это match'ит то что + // useRecords / catalog row делает per-record (см. строку ~65). + const { data } = await apiClient.get('/dictionaries', { + params: { as_scope: 'PUBLIC,INTERNAL,RESTRICTED' }, + }) return data }, }) @@ -31,7 +38,12 @@ export const dictionaryDetailQuery = (name: string) => queryOptions({ queryKey: ['dictionary', name] as const, queryFn: async (): Promise => { - const { data } = await apiClient.get(`/dictionaries/${name}`) + // Same as listing — pass all scopes; server-side filter применит + // user permissions. Без этого INTERNAL dict вернёт 404 даже для + // авторизованного юзера с INTERNAL access. + const { data } = await apiClient.get(`/dictionaries/${name}`, { + params: { as_scope: 'PUBLIC,INTERNAL,RESTRICTED' }, + }) return data }, }) diff --git a/ordinis-admin-ui/src/components/lineage/DictionaryDependentsPanel.tsx b/ordinis-admin-ui/src/components/lineage/DictionaryDependentsPanel.tsx index 295b430..e9fca0c 100644 --- a/ordinis-admin-ui/src/components/lineage/DictionaryDependentsPanel.tsx +++ b/ordinis-admin-ui/src/components/lineage/DictionaryDependentsPanel.tsx @@ -48,7 +48,7 @@ export const DictionaryDependentsPanel = ({ dictionaryName }: Props) => { {data.map((d) => (
  • @@ -156,7 +156,7 @@ export function DictionaryHubView({ detail }: { detail: DictionaryDetail }) { {/* Center: focused dict (large card) */}