ワンクリックで
frontend-stats-from-data
Подсчёт индикаторов/статистики на фронте из загруженных данных вместо отдельного API-запроса
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Подсчёт индикаторов/статистики на фронте из загруженных данных вместо отдельного API-запроса
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | frontend-stats-from-data |
| description | Подсчёт индикаторов/статистики на фронте из загруженных данных вместо отдельного API-запроса |
| source | auto-skill |
| extracted_at | 2026-06-08T11:00:00.000Z |
Вместо отдельного API-запроса для статистики (количество систем, активных/неактивных и т.д.) — считать из данных, которые уже загружены для отображения. Это гарантирует, что индикаторы всегда отражают то, что реально показано пользователю.
function updateStats(data) {
var systems = data ? data.length : 0;
var total = 0, active = 0, inactive = 0;
if (data) {
for (var i = 0; i < data.length; i++) {
var items = data[i].employees || data[i].items || [];
total += items.length;
for (var j = 0; j < items.length; j++) {
if (items[j].status === 'ACTIVE') active++;
else inactive++;
}
}
}
document.getElementById('statSystems').textContent = systems;
document.getElementById('statTotal').textContent = total;
document.getElementById('statActive').textContent = active;
document.getElementById('statInactive').textContent = inactive;
}
<div class="d-flex gap-3 mt-3 flex-wrap px-3 pb-3" id="statsIndicators">
<div class="stat-summary-card flex-grow-1" style="min-width:140px;">
<div class="stat-summary-card__header">Количество систем</div>
<div class="stat-summary-card__body"><div class="stat-total" id="statSystems">—</div></div>
</div>
<!-- ещё 3 карточки аналогично -->
</div>
function loadData() {
fetch(url).then(r => r.json()).then(data => {
// Сначала фильтрация (чекбоксы, etc)
data = applyFilters(data);
// Затем статистика ИЗ ТЕХ ЖЕ ДАННЫХ
updateStats(data);
// Затем рендеринг
renderGrid(data);
});
}
/statsCOUNT(*) эффективнееДинамический LdapTemplate из БД + шифрование пароля + отключение авто-LDAP для безопасного старта без AD
Экспорт Excel с фильтром по датам — использование Thymeleaf inline для передачи дат из формы в JS
Полный цикл синхронизации справочника из Active Directory — сброс структуры, сохранение порядка, блокирующий код в WebFlux
Feature-флаг в БД (app_settings) с UI-тумблером на странице профиля
Парсинг Distinguished Name из Active Directory, извлечение OU-цепочки, правила маппинга на Department/Division и блокирующие вызовы в WebFlux
Разрешение конфликта Spring Data LDAP + R2DBC — strict mode, @Table на все entity, отключение LDAP-репозиториев