tehnicheskoe-zadanie-na-razr/data.js

110 lines
12 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: 'Процесс согласования документов занимает слишком много времени. Нужно упростить маршрут.', 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;