diff --git a/ordinis-admin-ui/src/routes/reviews.tsx b/ordinis-admin-ui/src/routes/reviews.tsx index 3699518..fafdf9b 100644 --- a/ordinis-admin-ui/src/routes/reviews.tsx +++ b/ordinis-admin-ui/src/routes/reviews.tsx @@ -614,9 +614,13 @@ function ReviewDrawer({ draftId, onClose }: DrawerProps) { const currentSub = auth.user?.profile?.sub const draftQ = useDraft(draftId) const draft = draftQ.data + // CREATE-черновик не имеет live-записи по определению — не пробуем её + // загружать (GET /dictionaries/{id}/records/{key} → 404, красный шум в + // консоли на каждый CREATE-draft). Для UPDATE/CLOSE — грузим как раньше. + const isCreateDraft = draft?.operation === 'CREATE' const liveQ = useLiveRecord( - draft ? draft.dictionaryId : undefined, - draft ? draft.businessKey : undefined, + draft && !isCreateDraft ? draft.dictionaryId : undefined, + draft && !isCreateDraft ? draft.businessKey : undefined, ) const approveMut = useApproveDraft() const rejectMut = useRejectDraft() @@ -810,7 +814,7 @@ function ReviewDrawer({ draftId, onClose }: DrawerProps) { {t('reviews.drawer.live')}

{liveQ.isLoading && } - {liveQ.data === null && ( + {(liveQ.data === null || isCreateDraft) && (

{t('reviews.drawer.noLive')}

diff --git a/ordinis-admin-ui/src/ui/components/modal.tsx b/ordinis-admin-ui/src/ui/components/modal.tsx index 32fe407..a2c5d17 100644 --- a/ordinis-admin-ui/src/ui/components/modal.tsx +++ b/ordinis-admin-ui/src/ui/components/modal.tsx @@ -70,13 +70,24 @@ export function Modal({ if (!open) onClose() }} > - + {(title || description) && ( {title && {title}} {description && {description}} )} + {/* Radix требует DialogTitle в каждом DialogContent для скринридеров. + * Если callsite не передал title — рендерим sr-only fallback, иначе + * console-warning + диалог без названия для a11y. */} + {!title && Диалог} {bodyClassName ?
{children}
: children}