import type {McpPollStorageCapacity} from "@mmapp/contracts/mcp" import {Badge} from "@/components/reui/badge" import {Button} from "@/components/ui/button" export function PollStorageCapacity({capacity,loading,refresh}:{capacity?:McpPollStorageCapacity;loading:boolean;refresh:()=>void}){ const observed=capacity?.status==="observed"?capacity:undefined const ownerFull=observed?.owner.remaining===0,globalFull=observed?.global.exhausted===true const full=ownerFull||globalFull return

Журнал полных опросов

{loading?"Загрузка":!observed?"Нет данных":full?"Квота заполнена":"Квота не заполнена"}
{observed?<>
Ваши полные журналы
{observed.owner.used} / {observed.owner.limit}Осталось: {observed.owner.remaining}
Полные журналы приложения
{observed.global.usage?<>{observed.global.usage.used} / {observed.global.usage.limit}Осталось: {observed.global.usage.remaining}:globalFull?"Заполнена":"Не заполнена"}
{full&&

{ownerFull&&globalFull?"Личная и общая квоты журнала заполнены.":ownerFull?"Личная квота журнала заполнена.":"Общая квота журнала заполнена."} Новый полный опрос не получит место. После безопасного архивирования или очистки по сроку хранения место может освободиться. Неизвестный результат сохраняет резерв; повторные попытки его не освобождают.

}

Счётчик учитывает резерв под выполнение и журналы, ожидающие архивирования. Архив сохраняет все исходные записи и продолжает занимать место. Поэтому остаток зависит и от объёма сохранённой истории.

Срок хранения новых записей: {observed.retentionDays} дн. Существующие записи могут храниться дольше. Архивирование сохраняет исходный срок; очистка учитывает завершение операции, истечение допуска и защитный интервал.

Состояние показано на момент обновления. Окончательный допуск проверяется при запуске.

:

{loading?"Проверяем заполнение журнала…":"Заполнение журнала сейчас недоступно. Свободное место не подтверждено; обновите статус позже."}

}
}