110 lines
12 KiB
JavaScript
110 lines
12 KiB
JavaScript
// Начальные данные для демонстрации
|
||
const INITIAL_DATA = {
|
||
reviews: [
|
||
{ id: 1, date: '2026-08-15', direction: 'automation', rating: 4, type: 'propose', comment: 'Процесс согласования документов занимает слишком много времени. Нужно упростить маршрут.', anonymous: false, department: 'it', status: 'review' },
|
||
{ id: 2, date: '2026-08-16', direction: 'training', rating: 5, type: 'thank', comment: 'Отличный курс по лидерству! Очень полезно для развития. Хотелось бы продолжения.', anonymous: false, department: 'hr', status: 'accepted' },
|
||
{ id: 3, date: '2026-08-17', direction: 'discipline', rating: 3, type: 'attention', comment: 'Частые переработки в конце месяца из-за поздних отчетов от смежников. Срываем сроки.', anonymous: true, department: 'finance', status: 'new' },
|
||
{ id: 4, date: '2026-08-18', direction: 'adaptation', rating: 4, type: 'propose', comment: 'Хорошо бы добавить больше материалов по продуктам компании для новичков.', anonymous: false, department: 'sales', status: 'accepted' },
|
||
{ id: 5, date: '2026-08-19', direction: 'automation', rating: 5, type: 'propose', comment: 'Автоматизация отчетности через Excel макросы сэкономила 4 часа в неделю. Готов поделиться опытом.', anonymous: false, department: 'it', status: 'implement' },
|
||
{ id: 6, date: '2026-08-20', direction: 'innovation', rating: 4, type: 'propose', comment: 'Предлагаю внедрить систему электронных подписей для внутренних документов.', anonymous: false, department: 'procurement', status: 'new' },
|
||
{ id: 7, date: '2026-08-20', direction: 'training', rating: 2, type: 'attention', comment: 'Мало курсов по цифровым инструментам для начинающих. Существующие слишком сложные.', anonymous: true, department: 'support', status: 'review' },
|
||
{ id: 8, date: '2026-08-21', direction: 'other', rating: 5, type: 'thank', comment: 'Благодарю за гибкий график в период ремонта офиса. Очень помогло!', anonymous: false, department: 'hr', status: 'done' },
|
||
{ id: 9, date: '2026-08-12', direction: 'automation', rating: 3, type: 'attention', comment: 'Система CRM работает медленно, особенно в часы пик. Теряем клиентов.', anonymous: false, department: 'sales', status: 'review' },
|
||
{ id: 10, date: '2026-08-11', direction: 'training', rating: 4, type: 'propose', comment: 'Предлагаю организовать мастер-классы по обмену опытом между отделами.', anonymous: false, department: 'it', status: 'accepted' },
|
||
{ id: 11, date: '2026-08-10', direction: 'adaptation', rating: 5, type: 'thank', comment: 'Спасибо куратору за помощь в первые недели! Адаптация прошла легко.', anonymous: false, department: 'finance', status: 'done' },
|
||
{ id: 12, date: '2026-08-09', direction: 'discipline', rating: 4, type: 'propose', comment: 'Предлагаю ввести гибкое начало рабочего дня с 8 до 10 утра.', anonymous: true, department: 'it', status: 'new' },
|
||
{ id: 13, date: '2026-08-08', direction: 'innovation', rating: 5, type: 'propose', comment: 'Идея: мобильное приложение для записи в отпуск и просмотра остатков дней.', anonymous: false, department: 'hr', status: 'implement' },
|
||
{ id: 14, date: '2026-08-07', direction: 'automation', rating: 2, type: 'attention', comment: '1С работает крайне медленно. Простой по 20-30 минут несколько раз в день.', anonymous: true, department: 'finance', status: 'review' },
|
||
{ id: 15, date: '2026-08-06', direction: 'training', rating: 5, type: 'thank', comment: 'Курс по тайм-менеджменту изменил мой подход к работе. Спасибо HR!', anonymous: false, department: 'sales', status: 'done' },
|
||
{ id: 16, date: '2026-08-05', direction: 'other', rating: 3, type: 'attention', comment: 'В офисе жарко, кондиционеры не справляются. Невозможно работать.', anonymous: false, department: 'support', status: 'accepted' },
|
||
{ id: 17, date: '2026-08-04', direction: 'adaptation', rating: 4, type: 'propose', comment: 'Добавьте в программу адаптации встречу с руководством компании.', anonymous: false, department: 'it', status: 'new' },
|
||
{ id: 18, date: '2026-08-03', direction: 'discipline', rating: 5, type: 'thank', comment: 'Руководитель всегда идёт навстречу. Комфортная атмосфера в отделе.', anonymous: false, department: 'procurement', status: 'done' },
|
||
{ id: 19, date: '2026-08-02', direction: 'innovation', rating: 4, type: 'propose', comment: 'Предлагаю систему мотивации за идеи: баллы, которые можно обменять на обучение.', anonymous: true, department: 'hr', status: 'review' },
|
||
{ id: 20, date: '2026-08-01', direction: 'automation', rating: 4, type: 'propose', comment: 'Автоматизируйте выдачу справок 2-НДФЛ через личный кабинет сотрудника.', anonymous: false, department: 'finance', status: 'accepted' }
|
||
],
|
||
ideas: [
|
||
{ id: 1, title: 'Внедрение электронного документооборота', problem: 'Согласование бумажных документов занимает 5-7 дней', solution: 'Перейти на систему электронного документооборота с цифровой подписью', effect: 'Сокращение времени согласования до 1-2 дней', category: 'automation', department: 'it', votes: 24, comments: 8, status: 'implement', anonymous: false, author: 'Алексей К.', date: '2026-08-10' },
|
||
{ id: 2, title: 'Мобильное приложение для записи на обучение', problem: 'Сложно найти и записаться на курсы через портал', solution: 'Сделать простое мобильное приложение с каталогом и записью в один клик', effect: 'Увеличение количества записей на 30%', category: 'automation', department: 'hr', votes: 18, comments: 5, status: 'review', anonymous: false, author: 'Мария С.', date: '2026-08-12' },
|
||
{ id: 3, title: 'Система наставничества для новых сотрудников', problem: 'Новички долго адаптируются, нет единого подхода', solution: 'Закрепить опытных сотрудников как наставников с мотивацией', effect: 'Сокращение адаптации с 3 до 1.5 месяцев', category: 'process', department: 'hr', votes: 31, comments: 12, status: 'accepted', anonymous: false, author: 'Дмитрий В.', date: '2026-08-08' },
|
||
{ id: 4, title: 'Автоматическое формирование отчетов', problem: 'Ежемесячные отчеты собираются вручную из разных систем', solution: 'Настроить автоматическую выгрузку и консолидацию данных', effect: 'Экономия 8 часов в месяц на сотрудника', category: 'automation', department: 'finance', votes: 42, comments: 15, status: 'new', anonymous: false, author: 'Анна П.', date: '2026-08-18' },
|
||
{ id: 5, title: 'Чат-бот для ответов на частые вопросы HR', problem: 'HR-отдел перегружен однотипными вопросами', solution: 'Внедрить бота с базой знаний по политикам и процедурам', effect: 'Разгрузка HR на 40%, ответы 24/7', category: 'automation', department: 'hr', votes: 27, comments: 9, status: 'done', anonymous: false, author: 'Сергей Л.', date: '2026-07-25' },
|
||
{ id: 6, title: 'Оптимизация закупок канцелярии', problem: 'Заказ канцелярии через множество согласований', solution: 'Ввести квартальные лимиты и автоматический заказ', effect: 'Снижение затрат на 15%', category: 'cost', department: 'procurement', votes: 15, comments: 4, status: 'rejected', anonymous: false, author: 'Ольга Н.', date: '2026-08-05' }
|
||
],
|
||
surveys: [
|
||
{ id: 1, type: 'week1', date: '2026-08-15', tasks: 4, support: 5, comment: 'Всё отлично, коллеги помогают' },
|
||
{ id: 2, type: 'month1', date: '2026-08-10', tasks: 5, support: 4, comment: 'Хотелось бы больше тренингов' },
|
||
{ id: 3, type: 'probation', date: '2026-08-05', tasks: 4, support: 4, comment: 'Адаптация прошла успешно' }
|
||
],
|
||
automation: [
|
||
{ id: 1, process: 'Согласование отпусков', department: 'hr', problem: 'Бумажные заявления теряются', solution: 'Электронная форма с маршрутом согласования', effect: 'time', date: '2026-08-14', status: 'new' },
|
||
{ id: 2, process: 'Отчёт по продажам', department: 'sales', problem: 'Ручной сбор данных из CRM', solution: 'Автоматическая выгрузка раз в неделю', effect: 'errors', date: '2026-08-16', status: 'review' }
|
||
],
|
||
profile: {
|
||
name: 'Катипа',
|
||
department: 'IT Департамент',
|
||
position: 'Ведущий специалист',
|
||
tenure: '2 года 3 месяца'
|
||
},
|
||
settings: {
|
||
engagementIndex: 78,
|
||
engagementTrend: 'up',
|
||
totalEmployees: 245,
|
||
departments: ['hr', 'it', 'finance', 'procurement', 'sales', 'support']
|
||
},
|
||
motivation: {
|
||
employeeOfMonth: { name: 'Алексей К.', dept: 'IT Департамент', avatar: '👤' },
|
||
ideaOfMonth: { title: 'Чат-бот для HR', author: 'Сергей Л.' },
|
||
thanks: [
|
||
{ id: 1, to: 'Мария С.', from: 'Александр И.', reason: 'За помощь в обучении новой системы', type: 'help', date: '2026-08-18', anonymous: false },
|
||
{ id: 2, to: 'Дмитрий В.', from: 'Анонимно', reason: 'За наставничество и поддержку', type: 'mentor', date: '2026-08-17', anonymous: true },
|
||
{ id: 3, to: 'Ольга Н.', from: 'Анна П.', reason: 'За инициативу в оптимизации закупок', type: 'initiative', date: '2026-08-15', anonymous: false }
|
||
],
|
||
achievements: [
|
||
{ id: 1, name: 'Новичок года', icon: '🌟', count: 1 },
|
||
{ id: 2, name: 'Генератор идей', icon: '💡', count: 3 },
|
||
{ id: 3, name: 'Наставник', icon: '🎓', count: 2 }
|
||
]
|
||
},
|
||
kpi: {
|
||
overall: 75,
|
||
components: {
|
||
tasks: 85,
|
||
deadlines: 78,
|
||
quality: 82,
|
||
initiative: 65,
|
||
team: 88
|
||
},
|
||
history: [68, 70, 72, 71, 74, 75],
|
||
goals: ['', '', '']
|
||
},
|
||
reserve: {
|
||
participants: [
|
||
{ id: 1, name: 'Мария С.', dept: 'HR Департамент', stage: 'Обучение', progress: 50 },
|
||
{ id: 2, name: 'Дмитрий В.', dept: 'IT Департамент', stage: 'Стажировка', progress: 75 }
|
||
],
|
||
applications: []
|
||
}
|
||
};
|
||
|
||
// Загрузка данных из localStorage или использование начальных
|
||
function loadData() {
|
||
const stored = localStorage.getItem('pulseData');
|
||
if (stored) {
|
||
return JSON.parse(stored);
|
||
}
|
||
return INITIAL_DATA;
|
||
}
|
||
|
||
// Сохранение данных в localStorage
|
||
function saveData(data) {
|
||
localStorage.setItem('pulseData', JSON.stringify(data));
|
||
}
|
||
|
||
// Глобальный объект данных
|
||
let appData = loadData();
|
||
|
||
// Экспорт для использования в app.js
|
||
window.appData = appData;
|
||
window.loadData = loadData;
|
||
window.saveData = saveData;
|