diff --git a/ordinis-admin-ui/src/api/client.ts b/ordinis-admin-ui/src/api/client.ts index dd9378a..dc92cfc 100644 --- a/ordinis-admin-ui/src/api/client.ts +++ b/ordinis-admin-ui/src/api/client.ts @@ -659,12 +659,20 @@ export type PublishSchemaDraftResult = { publishedAt: string } -/** Pool queue для /admin/schema-reviews/pending. */ +/** Pool queue для /admin/schema-reviews/pending. + * + *

Backend сериализует Spring {@code Page} как: + * {@code {items, page, size, totalElements, totalPages}}. Раньше type + * объявлял {@code total} что было mismatched — consumers (`reviews.tsx`, + * `useReviewsBadgeCount`) читали {@code data.total} который === undefined, + * fallback'или на {@code items.length} (или 0 для badge — отсюда баг + * "бэйджа нет"). Type совпадает с фактическим контрактом backend'а. */ export type SchemaReviewQueuePage = { items: SchemaDraft[] page: number size: number - total: number + totalElements: number + totalPages: number } export type ChangelogDiff = { diff --git a/ordinis-admin-ui/src/api/queries.ts b/ordinis-admin-ui/src/api/queries.ts index efa4022..a89817c 100644 --- a/ordinis-admin-ui/src/api/queries.ts +++ b/ordinis-admin-ui/src/api/queries.ts @@ -647,7 +647,7 @@ export const useReviewsBadgeCount = (enabled = true) => { refetchInterval: 60_000, }) const recordCount = recordQ.data?.totalElements ?? 0 - const schemaCount = schemaQ.data?.total ?? 0 + const schemaCount = schemaQ.data?.totalElements ?? 0 return { total: recordCount + schemaCount, recordCount, diff --git a/ordinis-admin-ui/src/routes/reviews.tsx b/ordinis-admin-ui/src/routes/reviews.tsx index 209e502..5adecab 100644 --- a/ordinis-admin-ui/src/routes/reviews.tsx +++ b/ordinis-admin-ui/src/routes/reviews.tsx @@ -58,7 +58,7 @@ function ReviewsPage() { const queue = useReviewQueue(0, 50) const schemaQueue = useSchemaReviewQueue(0, 50) const recordsCount = queue.data?.totalElements ?? 0 - const schemasCount = schemaQueue.data?.total ?? 0 + const schemasCount = schemaQueue.data?.totalElements ?? 0 // Tab дефолтит на records (старее, чаще). Если schema queue не пустой // а record queue пустой — переключаемся на schemas чтобы reviewer'у не // пришлось кликать дважды. @@ -590,8 +590,8 @@ function SchemaReviewQueuePanel() {

{t('reviews.schema.queueTotal', { - count: queue.data?.total ?? items.length, - defaultValue: `${queue.data?.total ?? items.length} draft(s) ждут ревью`, + count: queue.data?.totalElements ?? items.length, + defaultValue: `${queue.data?.totalElements ?? items.length} draft(s) ждут ревью`, })}