tehnicheskoe-zadanie-na-razr/data.js

119 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Начальные данные для демонстрации
const INITIAL_DATA = {
reviews: [
{ id: 1, date: '2026-08-15', direction: 'automation', rating: 4, type: 'propose', comment: 'Процесс согласования документов занимает слишком много времени. Нужно упростить маршрут.', author: 'Алиев Нурлан', anonymous: false, department: 'it', status: 'review' },
{ id: 2, date: '2026-08-16', direction: 'training', rating: 5, type: 'thank', comment: 'Отличный курс по лидерству! Очень полезно для развития. Хотелось бы продолжения.', author: 'Омарова Айгуль', anonymous: false, department: 'hr', status: 'accepted' },
{ id: 3, date: '2026-08-17', direction: 'discipline', rating: 3, type: 'attention', comment: 'Частые переработки в конце месяца из-за поздних отчетов от смежников. Срываем сроки.', author: 'Анонимно', anonymous: true, department: 'finance', status: 'new' },
{ id: 4, date: '2026-08-18', direction: 'adaptation', rating: 4, type: 'propose', comment: 'Хорошо бы добавить больше материалов по продуктам компании для новичков.', author: 'Ибраев Ержан', anonymous: false, department: 'sales', status: 'accepted' },
{ id: 5, date: '2026-08-19', direction: 'automation', rating: 5, type: 'propose', comment: 'Автоматизация отчетности через Excel макросы сэкономила 4 часа в неделю. Готов поделиться опытом.', author: 'Кенжебаев Самат', anonymous: false, department: 'it', status: 'implement' },
{ id: 6, date: '2026-08-20', direction: 'innovation', rating: 4, type: 'propose', comment: 'Предлагаю внедрить систему электронных подписей для внутренних документов.', author: 'Тулебаева Мадина', anonymous: false, department: 'procurement', status: 'new' },
{ id: 7, date: '2026-08-20', direction: 'training', rating: 2, type: 'attention', comment: 'Мало курсов по цифровым инструментам для начинающих. Существующие слишком сложные.', author: 'Анонимно', anonymous: true, department: 'support', status: 'review' },
{ id: 8, date: '2026-08-21', direction: 'other', rating: 5, type: 'thank', comment: 'Благодарю за гибкий график в период ремонта офиса. Очень помогло!', author: 'Сейтказина Гульнара', anonymous: false, department: 'hr', status: 'done' },
{ id: 9, date: '2026-08-12', direction: 'automation', rating: 3, type: 'attention', comment: 'Система CRM работает медленно, особенно в часы пик. Теряем клиентов.', author: 'Жуманов Бауыржан', anonymous: false, department: 'sales', status: 'review' },
{ id: 10, date: '2026-08-11', direction: 'training', rating: 4, type: 'propose', comment: 'Предлагаю организовать мастер-классы по обмену опытом между отделами.', author: 'Абдрахманов Марат', anonymous: false, department: 'it', status: 'accepted' },
{ id: 11, date: '2026-08-10', direction: 'adaptation', rating: 5, type: 'thank', comment: 'Спасибо куратору за помощь в первые недели! Адаптация прошла легко.', author: 'Каримова Динара', anonymous: false, department: 'finance', status: 'done' },
{ id: 12, date: '2026-08-09', direction: 'discipline', rating: 4, type: 'propose', comment: 'Предлагаю ввести гибкое начало рабочего дня с 8 до 10 утра.', author: 'Анонимно', anonymous: true, department: 'it', status: 'new' },
{ id: 13, date: '2026-08-08', direction: 'innovation', rating: 5, type: 'propose', comment: 'Идея: мобильное приложение для записи в отпуск и просмотра остатков дней.', author: 'Нурпеисова Алия', anonymous: false, department: 'hr', status: 'implement' },
{ id: 14, date: '2026-08-07', direction: 'automation', rating: 2, type: 'attention', comment: '1С работает крайне медленно. Простой по 20-30 минут несколько раз в день.', author: 'Анонимно', anonymous: true, department: 'finance', status: 'review' },
{ id: 15, date: '2026-08-06', direction: 'training', rating: 5, type: 'thank', comment: 'Курс по тайм-менеджменту изменил мой подход к работе. Спасибо HR!', author: 'Уалиев Тимур', anonymous: false, department: 'sales', status: 'done' },
{ id: 16, date: '2026-08-05', direction: 'other', rating: 3, type: 'attention', comment: 'В офисе жарко, кондиционеры не справляются. Невозможно работать.', author: 'Искакова Сауле', anonymous: false, department: 'support', status: 'accepted' },
{ id: 17, date: '2026-08-04', direction: 'adaptation', rating: 4, type: 'propose', comment: 'Добавьте в программу адаптации встречу с руководством компании.', author: 'Касымов Данияр', anonymous: false, department: 'it', status: 'new' },
{ id: 18, date: '2026-08-03', direction: 'discipline', rating: 5, type: 'thank', comment: 'Руководитель всегда идёт навстречу. Комфортная атмосфера в отделе.', author: 'Мусабекова Айгерим', anonymous: false, department: 'procurement', status: 'done' },
{ id: 19, date: '2026-08-02', direction: 'innovation', rating: 4, type: 'propose', comment: 'Предлагаю систему мотивации за идеи: баллы, которые можно обменять на обучение.', author: 'Анонимно', anonymous: true, department: 'hr', status: 'review' },
{ id: 20, date: '2026-08-01', direction: 'automation', rating: 4, type: 'propose', comment: 'Автоматизируйте выдачу справок 2-НДФЛ через личный кабинет сотрудника.', author: 'Бекжанов Асет', 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 месяца',
isAdmin: true,
adminPermissions: [
'Просмотр всех отзывов',
'Редактирование статусов идей',
'Выгрузка отчётов в Excel',
'Управление пользователями',
'Доступ к аналитике по подразделениям',
'Изменение параметров системы'
]
},
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;