c92d498b57
AdminTenantsView грузил всех тенантов разом и фильтровал в браузере — на 1000 клиентов поиск/чипы видели только первую страницу. Теперь страница из limit/offset + v-pagination; поиск (ILIKE), статус (производный trial/overdue/active/suspended) и тариф — серверные multi-фильтры. AdminTenantsController::index: statuses/tariffs через CASE/whereIn (статус зеркалит adminTenantsMapper.deriveStatus). Опции тарифов — отдельным запросом listAdminTariffPlans. Демо локально подтверждено. Тесты: фронт 34/34 (tenants), бэкенд 13/13 (+2 на statuses/tariffs); baseline getJson 13→15. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>