ИИ-аналитика: расчёты по отпускам, бюджетам, KPI, сравнения

This commit is contained in:
Dauren777 2026-06-02 12:19:58 +00:00
parent d3cf40e741
commit 40ac0ded51

View File

@ -1005,9 +1005,287 @@ function askAI() {
if (!q) return; if (!q) return;
addMsg(q, 'user'); addMsg(q, 'user');
input.value = ''; input.value = '';
// Full HR data for analytics
const d = {
total: 247, onVacation: 42, sick: 18, remote: 68, overtime: 320,
managers: 30, specialists: 217, women: 99, men: 140,
hired: 25, fired: 23, vacancies: 12,
turnover: 14.2, engagement: 76, enps: 24,
fot: 389, bonuses: 62, social: 22, training: 25, hiring: 16, totalBudget: 514,
monthlyFOT: 32.4, monthlyBudget: 42.8,
avgSalary: 173, avgAge: 33, avgTenure: 3.2,
training186: 186, reserveCount: 34, youth: 72, interns: 18,
highPerf: 32, lowPerf: 8,
hhRating: 4.2, edo: 68, adaptationRate: 89,
contractsExpiringJune: 3, contractsExpiringJuly: 5,
vacancyDays: 34, costPerHire: 245,
deptIT: 48, deptSales: 52, deptMkt: 32, deptFin: 28, deptHR: 12, deptProd: 45
};
const departments = {
'it': { name: 'IT', count: 48, turnover: 18, kpi: 94, budget: 89 },
'продаж': { name: 'Продажи', count: 52, turnover: 22, kpi: 112, budget: 115 },
'маркетинг': { name: 'Маркетинг', count: 32, turnover: 12, kpi: 78, budget: 62 },
'финанс': { name: 'Финансы', count: 28, turnover: 6, kpi: 103, budget: 98 },
'hr': { name: 'HR', count: 12, turnover: 8, kpi: 91, budget: 85 },
'производств': { name: 'Производство', count: 45, turnover: 16, kpi: 96, budget: 100 }
};
let answer = ''; let answer = '';
const data = {
// Detect keywords and build analytical answers
function has(...words) { return words.some(w => q.includes(w)); }
if (has('отпуск')) {
answer = '📊 Аналитика по отпускам:
В отпуске сейчас: ' + d.onVacation + ' чел (' + (d.onVacation/d.total*100).toFixed(1) + '%)
• Средний остаток дней: 8.4 дня
• По графику отпусков: 85 чел без назначенной даты
• Запланировано на июль-сентябрь: 64 чел
• Риск: 85 сотрудников не распределены по графику — нужно утвердить до июля.';
if (has('июн', 'июл', 'август')) {
answer += '
📅 На летние месяцы:
• Июнь: запланировано 42 чел, из них 31 уже отгуляли
• Июль: 64 чел по плану
• Август: продолжается сезон отпусков';
}
}
else if (has('бюджет') && (has('отдел') || has('департамент'))) {
answer = '📊 Бюджет по отделам (месяц):
';
Object.entries(departments).forEach(([k, v]) => {
const bar = '█'.repeat(Math.round(v.budget / 10));
answer += v.name + ': ' + v.budget + '% ' + bar + '
';
});
answer += '
Перерасход: Продажи (+15%), Подбор (+15%)
Экономия: Обучение (85%), Маркетинг (62%)';
}
else if (has('бюджет')) {
answer = '💰 HR-бюджет 2026: ' + d.totalBudget + 'M ₸
📊 Структура:
• ФОТ (оклады): ' + d.fot + 'M — 75.7%
• Бонусы и премии: ' + d.bonuses + 'M — 12.1%
• Обучение: ' + d.training + 'M — 4.9%
• Соцпакет: ' + d.social + 'M — 4.3%
• Подбор: ' + d.hiring + 'M — 3.1%
📈 В месяц: ' + d.monthlyBudget + 'M ₸
📉 ФОТ на 1 сотрудника: ' + (d.monthlyFOT / d.total * 1000).toFixed(0) + 'K ₸
💡 Экономия за счёт вакансий: 14.4M ₸
💡 Потенциальная экономия при снижении текучести на 2%: 6.5M ₸';
}
else if (has('сколько') && (has('человек') || has('сотрудник') || has('люд'))) {
if (has('отдел') || has('департамент')) {
answer = '👥 Численность по отделам:
';
Object.entries(departments).forEach(([k, v]) => {
const bar = '█'.repeat(Math.round(v.count / 4));
answer += v.name + ': ' + v.count + ' чел ' + bar + '
';
});
answer += '
Всего: ' + d.total + ' чел';
} else if (has('больничн')) {
answer = '🏥 На больничном: ' + d.sick + ' чел (' + (d.sick/d.total*100).toFixed(1) + '%)
Средняя длительность: 3.2 дня
Всего дней больничных в июне: ' + (d.sick * 3.2).toFixed(0) + ' дней';
} else if (has('удалён')) {
answer = '🏠 На удалёнке: ' + d.remote + ' чел (' + (d.remote/d.total*100).toFixed(1) + '%)
Из них: IT — 32 чел, Маркетинг — 14 чел, Продажи — 8 чел, HR — 4 чел, Финансы — 6 чел, Производство — 4 чел';
} else {
answer = '👥 Всего сотрудников: ' + d.total + '
• Руководителей: ' + d.managers + ' (12%)
• Специалистов: ' + d.specialists + ' (88%)
• Мужчин: ' + d.men + ' (57%)
• Женщин: ' + d.women + ' (43%)
• До 30 лет: ' + d.youth + ' (29%)
• Вакантных ставок: ' + d.vacancies;
}
}
else if (has('kpi') || has('эффективн') || has('результативн')) {
answer = '📊 KPI по отделам (июнь 2026):
';
Object.entries(departments).forEach(([k, v]) => {
const icon = v.kpi >= 100 ? '✅' : v.kpi >= 90 ? '⚠️' : '❌';
const bar = v.kpi >= 100 ? '█'.repeat(Math.round(v.kpi/20)) : '▓'.repeat(Math.round(v.kpi/20));
answer += icon + ' ' + v.name + ': ' + v.kpi + '% ' + bar + '
';
});
answer += '
🏆 Лидеры: Ахметов А. (94%), Серикова М. (91%), Ким В. (88%)
⚠️ Аутсайдеры: Маркетинг (78%) — нужен план улучшения';
}
else if (has('текуч') || has('увол')) {
answer = '📉 Текучесть персонала:
По отделам:
';
Object.entries(departments).forEach(([k, v]) => {
answer += '• ' + v.name + ': ' + v.turnover + '%
';
});
answer += '
Средняя по компании: ' + d.turnover + '%
📈 Тренд: 2024 — 16.1% → 2025 — 15.8% → 2026 — 14.2%
📊 Уволено за год: ' + d.fired + ' | Нанято: ' + d.hired + ' | Баланс: +' + (d.hired - d.fired);
}
else if (has('стоимост') || has('затрат') || has('себестоим')) {
answer = '💵 Стоимость персонала:
• Средняя зарплата: ' + d.avgSalary + 'K ₸
• Полные затраты на 1 сотр.: от 160K (стажёр) до 1.8M (директор) в мес
• Коэффициент: оклад ×1.37-1.51 (налоги + ДМС + рабочее место)
• Стоимость найма 1 сотр.: ' + d.costPerHire + 'K ₸
• Окупаемость: Продажи 210%, IT 145%, Маркетинг 85%
• ROI обучения: +12% рост KPI';
}
else if (has('прогноз') || has('тренд') || has('динамик')) {
answer = '📈 Тренды и прогнозы:
• Численность: 2023=215 → 2026=247 → 2027=280 (прогноз)
• Текучесть: 16.1% → 14.2% → 12.0% (снижается)
• eNPS: +12 → +24 (растёт)
• ФОТ: 358M → 514M → 538M (растёт)
• Вовлечённость: 68% → 76% (растёт)
• Срок найма: 42 → 34 дня (улучшается)
⚠️ Риски 2027:
• Уход ключевых сотрудников (средний риск)
• Рост зарплат выше рынка (средний)
• Дефицит IT-специалистов (средний)';
}
else if (has('гендер') || has('мужчин') || has('женщин')) {
answer = '👫 Гендерный состав:
По категориям:
• Топ-менеджмент: 6M / 2Ж (25% женщин)
• Руководители отделов: 14M / 8Ж (36%)
• Ведущие специалисты: 28M / 19Ж (40%)
• Специалисты: 48M / 36Ж (43%)
• Младший персонал: 32M / 26Ж (45%)
Всего: 140 мужчин (57%) / 99 женщин (43%)
📊 Женщин среди руководителей: 33%
📊 Разрыв в зарплате: 8% (в пределах нормы)';
}
else if (has('обучен') || has('тренинг') || has('курс')) {
answer = '📚 Обучение и развитие:
• Прошли обучение: ' + d.training186 + ' чел (75%)
• Бюджет: ' + d.training + 'M ₸ (4.9% HR-бюджета)
• Средняя оценка: 4.3/5
• Применяют знания: 78%
• Рост KPI после обучения: +12%
• Сертифицировано: 34 чел
📊 По программам:
• Охрана труда: 100%
• Проф. курсы: 94%
• Soft skills: 75%
• Управленческие: 60%
• Английский: 40%';
}
else if (has('стресс') || has('выгоран') || has('здоров') || has('well')) {
answer = '🧘 Well-being:
Уровень стресса:
• Низкий (0-3): 124 чел (50%)
• Средний (4-6): 78 чел (32%)
• Высокий (7-8): 32 чел (13%) ⚠️
• Критический (9-10): 13 чел (5%) 🚨
Причины стресса:
1. Дедлайны — 35%
2. Объём задач — 28%
3. Переработки — 10%
Программы помощи:
• EAP (психолог): 18 чел, NPS 85
• Спортзал: 168 чел (68%)
• Йога/медитация: 42 чел';
}
else if (has('сравн') || has('сопостав') || has('vs')) {
answer = '📊 Сравнительная аналитика:
Руководители vs Специалисты:
• Численность: 30 vs 217
Ср. возраст: 41 vs 31 год
Ср. стаж: 6.4 vs 2.8 года
• Текучка: 4% vs 15%
• Муж/Жен: 67/33% vs 55/45%
Год к году:
• 2024 vs 2026: текучесть 1.9%, eNPS +12, ФОТ +156M';
}
else if (has('договор') || has('истек') || has('продлен')) {
answer = '📋 Трудовые договоры:
• Действующие: 247 (100%)
• Бессрочные: 229 (92.7%)
• Срочные: 18 (7.3%)
⏰ Истекают:
• Июнь: 3 чел 🚨 СРОЧНО!
• Июль: 5 чел ⚠️
• Август: 2 чел
• Сентябрь: 4 чел
• Октябрь-Декабрь: 4 чел
📊 График нагрузки на HR:
Июнь ███ (3) | Июль █████ (5) | Сентябрь ████ (4)';
}
else if (has('помощ') || has('что ты умеешь') || has('список')) {
answer = '🤖 Я могу построить аналитику по запросу:
📊 Спросите:
• «Сколько людей в отпуске?»
• «Бюджет по отделам»
• «KPI продаж и маркетинга»
• «Сравни руководителей и специалистов»
• «Текучка по отделам»
• «Стоимость сотрудника»
• «Прогноз на 2027»
• «Гендерный состав»
• «Причины стресса»
• «Какие договоры истекают?»
• «Сколько на больничном?»
• «Обучение — статистика»';
}
else {
answer = 'Я могу проанализировать: отпуска, бюджет, KPI, текучесть, стоимость персонала, прогнозы, гендерный состав, well-being, договоры, обучение.
Попробуйте спросить конкретнее. Например: «Сколько людей в отпуске?» или «KPI по отделам».';
}
// Format answer with line breaks for display
answer.split('\n').forEach((line, i) => {
setTimeout(() => addMsg(line, 'ai'), 200 + i * 150);
});
}
total: 247, turnover: '14.2%', fot: '514M ₸', budget: '42.8M ₸/мес', total: 247, turnover: '14.2%', fot: '514M ₸', budget: '42.8M ₸/мес',
hired: 25, fired: 23, vacancies: 12, engagement: '76%', enps: '+24', hired: 25, fired: 23, vacancies: 12, engagement: '76%', enps: '+24',
avgSalary: '173K ₸', training: '25M ₸', reserve: 34, youth: 72, avgSalary: '173K ₸', training: '25M ₸', reserve: 34, youth: 72,