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) ждут ревью`,
})}