21 KiB
21 KiB
Система управления складом "Склад-Менеджер"
Современная веб-система для управления складом деталей и операциями с разными уровнями доступа.
🚀 Возможности системы
Основной функционал
- Управление позициями: добавление, редактирование, удаление позиций
- Операции склада: приход и расход позиций
- Каталог позиций: удобный просмотр с фильтрами и поиском
- История операций: полный учет всех операций со складом
- Поиск: быстрый поиск позиций и операций
- Отчеты: генерация различных отчетов
- Экспорт данных: выгрузка в CSV и JSON форматах
- Настраиваемые категории: полный CRUD для категорий позиций
- Hover-навигация: выпадающее меню категорий при наведении
Система безопасности
- Многоуровневая авторизация с разными ролями
- Контроль доступа к функциям системы
- Безопасные сессии пользователей
- Валидация данных на всех уровнях
- Проверка прав доступа для каждой операции
- Безопасная обработка ошибок с информативными уведомлениями
- URL валидация параметров и фильтров
- Автоматическое скрытие элементов в зависимости от ролей
Уровни доступа
🔧 Администратор (admin/admin123)
- Полный доступ ко всем функциям
- Управление пользователями
- Настройка системы
- Просмотр всех отчетов
- Удаление позиций и категорий
👔 Менеджер (manager/manager123)
- Чтение и запись данных
- Управление товарами
- Оформление операций
- Просмотр отчетов
- Создание и редактирование категорий
👷 Оператор (operator/operator123)
- Только чтение данных
- Просмотр каталога и истории
- Экспорт данных
- Ограниченный доступ к функциям
👁️ Наблюдатель (viewer/viewer123)
- Ограниченный просмотр
- Только чтение данных
- Экспорт данных
- Минимальный доступ
📁 Структура проекта
warehouse-system/
├── index.html # Главная страница
├── login.html # Страница авторизации
├── catalog.html # Каталог товаров
├── history.html # История операций
├── search.html # Поиск
├── profile.html # Профиль пользователя
├── admin/
│ ├── categories.html # Управление категориями
│ └── users.html # Управление пользователями
├── css/
│ └── style.css # Основные стили
├── js/
│ ├── auth.js # Система авторизации и прав доступа
│ ├── main.js # Основная логика
│ ├── warehouse.js # Управление складом
│ ├── catalog.js # Каталог товаров
│ ├── history.js # История операций
│ ├── search.js # Поиск
│ ├── profile.js # Профиль пользователя
│ ├── categories.js # Управление категориями
│ └── users.js # Управление пользователями
└── README.md # Документация
🚀 Старт
Для разработки/демо
- Откройте
login.html - Используйте тестовые учетные записи:
- Администратор:
admin/admin123 - Менеджер:
manager/manager123 - Оператор:
operator/operator123 - Наблюдатель:
viewer/viewer123
- Администратор:
Настройка Email-уведомлений
- Скопируйте
server/env.email.exampleвserver/.env - Настройте параметры SMTP-сервера:
- Для Gmail: используйте App Password
- Для Yandex/Mail.ru: используйте обычный пароль
- Перезапустите сервер
- Протестируйте отправку в разделе "Тест Email" (только для администраторов)
Для продакшна
Система полностью готова к развертыванию в продакшн! См. подробные инструкции:
- 📋 DEPLOYMENT.md - пошаговое руководство по развертыванию
2. Начальная настройка
- Войдите как администратор
- Создайте категории позиций через "Администрирование" → "Категории позиций"
- Добавьте первые позиции через "Каталог" → "Добавить позицию"
- Настройте права доступа для пользователей
📖 Руководство пользователя
Главная страница
- Быстрые действия: добавление товаров, приход/расход (согласно правам доступа)
- Статистика: общая информация о складе
- Последние операции: мониторинг активности
- Быстрая навигация: выпадающее меню категорий при наведении
Hover-навигация по категориям
- Выпадающее меню: появляется при наведении на "Каталог"
- Плавная анимация: плавное появление и исчезновение
- Быстрый переход: клик по категории открывает отфильтрованный каталог
- URL фильтрация: прямые ссылки вида
catalog.html?category=electronics - Визуальная обратная связь: иконки, цвета и количество позиций в категориях
- Единообразие: одинаковое меню на всех страницах
- Умное поведение: меню не закрывается при наведении на само меню
Каталог позиций
- Просмотр: все позиции с фильтрами и статистикой
- Поиск: по названию, описанию, штрих-коду
- Фильтры: по категории, цене, наличию, статусу запасов
- Редактирование: изменение информации о позициях (только для админов и менеджеров)
- Удаление: удаление позиций (только для администраторов)
- Экспорт: выгрузка каталога в CSV формате
- Безопасность: проверка прав доступа для всех операций
- Hover-навигация: выпадающее меню категорий при наведении
- URL фильтрация: прямая ссылка на отфильтрованный каталог
История операций
- Просмотр: все операции с детализацией
- Фильтры: по типу, дате, товару, сотруднику
- Отчеты: генерация различных отчетов
- Экспорт: выгрузка данных
Поиск
- Универсальный поиск: позиции и операции
- Расширенные фильтры: точная настройка
- Результаты: с подсветкой найденного
- Экспорт результатов: сохранение найденного
- Hover-навигация: переход к категориям из результатов поиска
Профиль пользователя
- Информация: личные данные и права
- Статистика: активность пользователя
- Настройки: персонализация интерфейса
- Безопасность: смена пароля
Администрирование
- Управление категориями: создание, редактирование, удаление категорий
- Настройка иконок: выбор иконок Font Awesome для категорий
- Цветовая схема: настройка цветов категорий
- Активность категорий: включение/отключение категорий
- Управление пользователями: полный CRUD для пользователей системы
- Назначение ролей: гибкая система ролей и разрешений
- Статус пользователей: активация/деактивация учетных записей
- Отчеты: фильтры по периоду, категории, сотруднику; экспорт CSV/JSON
📊 Отчеты
Доступ
Откройте "Администрирование" → "Отчеты" (admin/reports.html). Доступен пользователям с правами admin или manager (чтение).
Фильтры
- Период: дата от/до
- Тип операции: приход/расход/все
- Категория: выбор категории
- Товар: название/штрихкод
- Сотрудник: логин или ФИО
Разделы
- Сводка: суммарный приход, расход, количество операций, уникальные товары
- Операции: таблица операций с деталями
- Остатки по категориям: количество позиций и суммарный остаток
- ТОП товаров по движению: лидеры по приходу/расходу
Экспорт
- CSV: экспорт таблицы операций
- JSON: экспорт всей структуры отчета (сводка, таблицы)
📊 Структура данных
Позиция
{
id: 1,
name: "Название товара",
category: "electronics",
price: 1000,
quantity: 50,
description: "Описание товара",
barcode: "1234567890123",
minQuantity: 10,
location: "Стеллаж A-1",
supplier: "Поставщик",
createdAt: "2025-08-15T10:00:00Z",
updatedAt: "2025-08-15T10:00:00Z"
}
Операция
{
id: 1,
type: "incoming", // или "outgoing"
itemId: 1,
itemName: "Название товара",
quantity: 10,
employeeId: 1,
employeeName: "Имя сотрудника",
date: "2025-08-15T10:00:00Z",
status: "completed",
supplier: "Поставщик",
recipient: "Получатель",
notes: "Примечания"
}
Пользователь
{
id: 1,
username: "admin",
name: "Администратор",
email: "admin@company.com",
roles: ["admin"],
permissions: ["read", "write", "delete", "admin"],
department: "IT",
position: "Системный администратор"
}
Категория
{
id: "electronics",
name: "Электроника",
description: "Электронные компоненты и устройства",
icon: "fas fa-microchip",
color: "#2c5aa0",
active: true,
itemCount: 25,
totalQuantity: 150,
createdAt: "2025-08-15T10:00:00Z",
updatedAt: "2025-08-15T10:00:00Z"
}
🎨 Кастомизация
Изменение цветовой схемы
Отредактируйте CSS переменные в css/style.css:
:root {
--primary-color: #0d6efd;
--secondary-color: #6c757d;
--success-color: #198754;
--warning-color: #ffc107;
--danger-color: #dc3545;
--info-color: #0dcaf0;
}
Настройка hover-меню категорий
Для настройки стилей hover-меню отредактируйте CSS в css/style.css:
#catalogCategoriesDropdown {
min-width: 280px;
max-height: 500px;
overflow-y: auto;
border: none;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
border-radius: 12px;
padding: 0.5rem 0;
}
/* Hover dropdown functionality */
.nav-item.dropdown:hover .dropdown-menu {
display: block !important;
}
.nav-item.dropdown:hover .dropdown-toggle::after {
transform: rotate(180deg);
}
Настройка прав доступа
В файле js/auth.js измените массив пользователей или добавьте новые роли и разрешения. Система автоматически скрывает элементы в зависимости от ролей пользователя.
Добавление новых категорий
Через интерфейс системы:
- Войдите как администратор или менеджер
- Перейдите в "Администрирование" → "Категории позиций"
- Нажмите "Добавить категорию"
- Заполните форму с иконкой, цветом и описанием
🔒 Безопасность
Система управления правами доступа
- Автоматическое скрытие элементов: кнопки и функции скрываются согласно ролям
- Проверка прав на сервере: все операции проверяют права доступа
- Безопасные сессии: данные пользователя хранятся в LocalStorage
- Валидация данных: проверка всех входных данных
- Информативные подсказки: кнопки показывают требуемые права
Production-готовность
- ✅ Удалены отладочные логи из фронтенда
- ✅ Созданы production конфигурации (.env файлы)
- ✅ Настроена безопасность (JWT, CORS, rate limiting)
- ✅ Готовы инструкции по развертыванию
Рекомендации по безопасности
- Измените пароли по умолчанию при первом входе
- Настройте JWT_SECRET в production окружении
- Включите HTTPS с SSL сертификатом
- Настройте файрвол и rate limiting
- Регулярно обновляйте права доступа
- Ведите логи всех операций
- Делайте резервные копии данных
📈 Производительность
Оптимизация
- Используйте современный браузер
- Включите кэширование
- Минимизируйте количество одновременных операций
- Регулярно очищайте старые данные
Production-оптимизация
- ✅ Удалены отладочные логи - улучшена производительность
- ✅ Оптимизирован код - убраны лишние console.log
- ✅ Готовы production скрипты - npm run start:prod
- ✅ Настроено кэширование - статические файлы
- ✅ Оптимизированы запросы - эффективная фильтрация
Технические улучшения
- Безопасная обработка данных: проверка на null/undefined
- Валидация форм: клиентская проверка ввода
- Обработка ошибок: информативные уведомления
- Права доступа: детальная проверка ролей
- Оптимизация производительности: эффективная фильтрация
- URL маршрутизация: обработка параметров и фильтров
- Асинхронная загрузка: динамическое обновление меню
- Кэширование данных: оптимизация производительности
- Hover-функциональность: плавные анимации и переходы
🐛 Устранение неполадок
Частые проблемы
Не работает авторизация
- Проверьте правильность логина/пароля
- Очистите кэш браузера
- Проверьте консоль на ошибки JavaScript
- Убедитесь, что JavaScript включен в браузере
Не сохраняются данные
- Проверьте доступ к LocalStorage
- Убедитесь, что JavaScript включен
- Проверьте права доступа пользователя
Медленная работа
- Закройте лишние вкладки
- Очистите кэш браузера
- Проверьте количество товаров/операций
Проблемы с каталогом
- Проверьте права доступа пользователя
- Убедитесь, что категории загружены корректно
- Проверьте консоль на ошибки загрузки данных
- Очистите фильтры, если каталог пустой
- Проверьте URL параметры для фильтрации по категориям
- Убедитесь, что hover-меню категорий загружается
Не работает hover-меню
- Проверьте, что JavaScript загружен корректно
- Убедитесь, что jQuery подключен
- Проверьте консоль на ошибки
- Очистите кэш браузера
Элементы интерфейса скрыты
- Проверьте роль пользователя
- Убедитесь, что пользователь авторизован
- Проверьте права доступа в auth.js
- Очистите LocalStorage и войдите заново
Логи и отладка
Откройте консоль разработчика (F12) для просмотра ошибок и логов.
🤝 Поддержка
Документация
- 📋 DEPLOYMENT.md - подробные инструкции по развертыванию
Сообщение об ошибках
При обнаружении ошибок:
- Опишите проблему подробно
- Укажите версию браузера
- Приложите скриншот ошибки
- Опишите шаги для воспроизведения
Запросы функций
Для добавления новых функций:
- Опишите требуемую функциональность
- Укажите приоритет
- Приведите примеры использования
👥 Авторы
- Разработка: Roman Pylaev
- Дизайн: Roman Pylaev
- Тестирование: Roman Pylaev
📞 Контакты
- Telegram/Discord: @dark7es